ჩაშენებული ვებძიება
დააყენეთ web_search: true და მოდელი პასუხს ცოცხალი შედეგებით დაასაბუთებს.
POST https://api.shannon-ai.com/v1/chat/completions
from openai import OpenAI
client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.shannon-ai.com/v1")
response = client.chat.completions.create(
model="shannon-3",
messages=[{"role": "user", "content": "What is the weather forecast for Lisbon this weekend?"}],
extra_body={"web_search": True}, # a Shannon field, so it goes in extra_body
)
print(response.choices[0].message.content) import OpenAI from "openai";
const client = new OpenAI({ apiKey: "YOUR_API_KEY", baseURL: "https://api.shannon-ai.com/v1" });
const response = await client.chat.completions.create({
model: "shannon-3",
messages: [{ role: "user", content: "What is the weather forecast for Lisbon this weekend?" }],
web_search: true,
});
console.log(response.choices[0].message.content); curl https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "shannon-3",
"messages": [
{"role": "user", "content": "What is the weather forecast for Lisbon this weekend?"}
],
"web_search": true
}' პასუხი ჩვეულებრივი chat completion-ია ორი დამატებით. პასუხი ძიების შედეგებზე კვადრატულ ფრჩხილებში მოცემული რიცხვებით მიუთითებს, sources გვიჩვენებს, რას შეესაბამება თითოეული რიცხვი, ხოლო annotations აღნიშნავს, სად არის თითოეული მოყვანილი:
{
"id": "chatcmpl-3e5a7c9b1d2f4a6c8e0b2d4f6a8c1e3b",
"object": "chat.completion",
"created": 1791590400,
"model": "shannon-3",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Saturday in Lisbon is forecast to be sunny with a high near 24 °C [1]. Sunday turns cloudy, with a chance of light rain in the afternoon [2].",
"reasoning_content": null,
"annotations": [
{
"type": "url_citation",
"url_citation": {
"start_index": 66,
"end_index": 69,
"url": "https://weather.example/lisbon/weekend",
"title": "Lisbon weather: weekend outlook"
}
},
{
"type": "url_citation",
"url_citation": {
"start_index": 137,
"end_index": 140,
"url": "https://forecast.example/pt/lisbon/sunday",
"title": "Sunday forecast for Lisbon"
}
}
]
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 2874,
"completion_tokens": 41,
"total_tokens": 2915
},
"sources": [
{
"index": 1,
"title": "Lisbon weather: weekend outlook",
"url": "https://weather.example/lisbon/weekend"
},
{
"index": 2,
"title": "Sunday forecast for Lisbon",
"url": "https://forecast.example/pt/lisbon/sunday"
},
{
"index": 3,
"title": "Portugal: the week ahead",
"url": "https://news.example/portugal/weather-week"
}
]
} ძიების ჩართვა
ძიება მოთხოვნის ველია და ნაგულისხმევად გამორთულია. არაფერი იძებნება, სანამ მოთხოვნა მას არ გააგზავნის.
| ველი | ტიპი | ნაგულისხმევი | აღწერა | მოქმედებს |
|---|---|---|---|---|
web_search | boolean | false | true ამ მოთხოვნისთვის ვებძიებას ასრულებს და შედეგებს მოდელს პასუხამდე გადასცემს. | ყველა Shannon მოდელი, shannon-coder-1-ის გარდა |
| Endpoint | ვებძიება | როგორ |
|---|---|---|
/v1/chat/completions | დიახ | "web_search": true მოთხოვნის სხეულში. |
/v1/messages | დიახ | "web_search": true მოთხოვნის სხეულში. |
/v1/responses | — | ეს endpoint მხოლოდ მოდელის ცოდნით პასუხობს. ძიებით მიღებული პასუხისთვის ზემოთ მოცემული ორიდან ერთი გამოიყენეთ. |
/v1/messages-ზე ველი სხეულის ზედა დონეზეა, model-სა და messages-ის გვერდით:
{
"model": "shannon-3",
"web_search": true,
"messages": [
{
"role": "user",
"content": "What is the weather forecast for Lisbon this weekend?"
}
]
} რას აკეთებს ძიებით გაგზავნილი მოთხოვნა
- API ვებში ბოლო user შეტყობინებას ეძებს. საუბრის ადრინდელი ბიჯები ძიებას კონტექსტს აძლევს.
- ძიება ყოველ მოთხოვნაზე გაიშვება, რომელიც აგზავნის
web_search: true-ს. მოდელი არ წყვეტს, ეძიოს თუ არა. - შედეგები მოდელის წინ დანომრილი წყაროების სახით იდება და მოდელი მათზე დაყრდნობით წერს პასუხს.
- პასუხი ძიების დასრულებისას იწყება. სტრიმით გაგზავნილი მოთხოვნა მანამდე არაფერს აგზავნის, არც სათაურებს და არც მოვლენებს, ამიტომ პირველ ნაწილამდე უფრო ხანგრძლივი ლოდინი გაითვალისწინეთ.
რას შეიცავს პასუხი
- პასუხს აქვს თავისი endpoint-ის ჩვეულებრივი ფორმა. პასუხი არის
choices[0].message.content-ში (textბლოკი/v1/messages-ზე). - ტექსტი შეიძლება შეიცავდეს მარკერებს, როგორიცაა
[1]და[2], იმ დებულებების შემდეგ, რომლებსაც ისინი ადასტურებენ. ყოველი რიცხვი ერთ იმ შედეგს შეესაბამება, რომელიც მოდელმა წაიკითხა. sourcesამ შედეგებს ასახელებს: თითო ჩანაწერი მოდელისთვის მიცემული ყოველი შედეგისთვის,index-ით,title-ით დაurl-ით. მარკერი[1]არის ჩანაწერი, რომლისindexარის 1. ჩამოთვლილია ისიც, რომელ შედეგებსაც პასუხი არ ციტირებს./v1/chat/completions-ზე შეტყობინებას ასევე აქვსannotations, OpenAI-ის ფორმით: თითოurl_citationყოველი წყაროსთვის, რომელსაც მარკერი ასახელებს,url-ით,title-ით,start_index-ითა დაend_index-ით, ანუ მარკერის პოზიციითcontent-ში, სიმბოლოებით დათვლილით (დასასრული არ შედის).- სტრიმში
sourcesბოლო ნაწილთან ერთად მოდის,/v1/messages-ზე კიmessage_deltaივენთთან ერთად. ანოტაციები მოდის ბოლოს წინა ერთ ნაწილში, როგორცdelta.annotations. sourcesმხოლოდ მაშინაა, როცა ამ მოთხოვნის ძიებამ რაღაც იპოვა. პასუხი, რომელშიც ის არ არის, ძიების შედეგების გარეშე დაიწერა.
როგორ ითვლება ძიებები
ყოველი გეგმა დღეში გარკვეული რაოდენობის ძიებას მოიცავს:
| გეგმა | ძიება დღეში |
|---|---|
| უფასო | 3 |
| პლუსი | 30 |
| Standard | 50 |
| პრო | 60 |
- მოთხოვნა, რომლის ძიებამაც რამე იპოვა, დღის ლიმიტიდან ერთ ძიებას ხარჯავს. ძიება, რომელმაც ვერაფერი იპოვა, არაფერს ხარჯავს.
- ჩატი და API იმ ანგარიშის ლიმიტს იზიარებენ, რომელსაც გასაღები ეკუთვნის.
- დათვლა ყოველდღე თავიდან იწყება 00:00 UTC-ზე.
- ძიების შედეგები მოთხოვნის შემავალი ტოკენებია და პრომპტის დანარჩენ ნაწილთან ერთად იანგარიშება.
როცა დღის ძიებები ამოიწურა
მოთხოვნა, რომელიც დღის ბოლო ძიების შემდეგ აგზავნის web_search: true-ს, უარყოფილი არ არის. მას ძიების გარეშე პასუხობენ: სტატუსი არის 200 და პასუხს sources არ აქვს.
ძიება როგორც თქვენი საკუთარი ინსტრუმენტი
web_search: true აქ აღწერილი ძიების ერთადერთი გადამრთველია. ფუნქცია, რომელსაც tools-ში განსაზღვრავთ და web_search დაარქმევთ, თქვენი საკუთარი ინსტრუმენტია: მოდელი გამოძახებას აბრუნებს, თქვენი კოდი კი ძიებას ასრულებს და შედეგს უკან აგზავნის.
სხვა პლატფორმების ძიების ინსტრუმენტების ტიპები, მაგალითად web_search_20250305 /v1/messages-ზე ან {"type": "web_search"} /v1/responses-ზე, აქ ძიებას არ იწყებენ.
შეცდომები
ვებძიება სტატუსის კოდს და შეცდომის ტიპს არ ამატებს. ძიება, რომელმაც ვერაფერი იპოვა, ან დღე დარჩენილი ძიებების გარეშე ჩვეულებრივ პასუხს იძლევა ძიების შედეგების გარეშე. ყველა სხვა შეცდომა იგივეა, რაც ძიების გარეშე მოთხოვნისთვის. შეცდომების დამუშავება