इनबिल्ट Web Search
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
}' उत्तर एक सामान्य चैट कम्प्लीशन है, जिसमें दो चीज़ें जुड़ी हैं। उत्तर वर्ग कोष्ठक में संख्याओं से खोज परिणामों की ओर इशारा करता है, 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-coder-1 को छोड़कर हर Shannon मॉडल |
| 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 आख़िरी यूज़र संदेश के लिए वेब खोजती है। बातचीत के पिछले टर्न खोज को उसका संदर्भ देते हैं।
- खोज हर उस अनुरोध पर चलती है जो
web_search: trueभेजता है। मॉडल तय नहीं करता कि खोजे या नहीं। - परिणाम क्रमांकित स्रोतों के रूप में मॉडल के सामने रखे जाते हैं, और मॉडल उन्हीं से अपना उत्तर लिखता है।
- उत्तर खोज पूरी होने पर शुरू होता है। स्ट्रीम किया गया अनुरोध तब तक कुछ नहीं भेजता, न हेडर, न इवेंट, इसलिए पहले चंक से पहले लंबे इंतज़ार की गुंजाइश रखें।
उत्तर में क्या होता है
- उत्तर का रूप उसके endpoint का सामान्य रूप है। उत्तर
choices[0].message.contentमें है (/v1/messagesपरtextब्लॉक)। - टेक्स्ट में कथनों के बाद
[1]और[2]जैसे मार्कर हो सकते हैं, जिनका वे समर्थन करते हैं। हर संख्या मॉडल द्वारा पढ़े गए एक परिणाम को दर्शाती है। sourcesउन परिणामों के नाम बताता है: मॉडल को दिए गए हर परिणाम के लिए एक एंट्री, जिसमेंindex,titleऔरurlहोते हैं। मार्कर[1]वह एंट्री है जिसकाindex1 है। जिन परिणामों का उत्तर हवाला नहीं देता, वे भी सूची में होते हैं।/v1/chat/completionsपर संदेश मेंannotationsभी होता है, OpenAI के रूप में: मार्कर द्वारा बताए गए हर स्रोत के लिए एकurl_citation, जिसमेंurl,title, औरstart_indexतथाend_indexहोते हैं, यानीcontentमें मार्कर की स्थिति, अक्षरों में गिनी हुई (अंतिम स्थिति शामिल नहीं है)।- स्ट्रीम में
sourcesआख़िरी चंक के साथ आता है, और/v1/messagesपरmessage_deltaइवेंट के साथ। annotations आख़िरी से ठीक पहले के एक चंक मेंdelta.annotationsके रूप में आते हैं। sourcesतभी होता है जब इस अनुरोध की खोज को कुछ मिला हो। जिस उत्तर में यह नहीं है, वह खोज परिणामों के बिना लिखा गया था।
खोजें कैसे गिनी जाती हैं
हर प्लान में प्रति दिन कुछ खोजें शामिल हैं:
| प्लान | प्रति दिन खोजें |
|---|---|
| मुफ़्त | 3 |
| प्लस | 30 |
| Standard | 50 |
| प्रो | 60 |
- जिस अनुरोध की खोज में कुछ मिला, वह दिन के अलाउंस की एक खोज इस्तेमाल करता है। जिस खोज में कुछ नहीं मिला, वह कोई नहीं।
- चैट और API उस अकाउंट का अलाउंस साझा करते हैं जिसकी key है।
- गिनती हर दिन 00:00 UTC पर फिर शुरू होती है।
- खोज परिणाम अनुरोध के इनपुट टोकन हैं और बाकी प्रॉम्प्ट के साथ बिल होते हैं।
जब दिन की खोजें खत्म हो जाएँ
दिन की आख़िरी खोज के बाद web_search: true भेजने वाला अनुरोध मना नहीं किया जाता। उसका उत्तर खोज के बिना दिया जाता है: स्टेटस 200 है और उत्तर में कोई sources नहीं होता।
अपने टूल के रूप में खोज
web_search: true यहाँ वर्णित खोज का एकमात्र स्विच है। जो फ़ंक्शन आप tools में परिभाषित करते हैं और जिसका नाम web_search रखते हैं, वह आपका अपना टूल है: मॉडल एक कॉल लौटाता है, और आपका कोड खोज चलाकर परिणाम वापस भेजता है।
दूसरे प्लेटफ़ॉर्म के खोज टूल प्रकार, जैसे /v1/messages पर web_search_20250305 या /v1/responses पर {"type": "web_search"}, यहाँ खोज शुरू नहीं करते।
एरर
वेब खोज कोई स्टेटस कोड या एरर प्रकार नहीं जोड़ती। जिस खोज में कुछ नहीं मिलता, या जिस दिन खोजें नहीं बचीं, वह खोज परिणामों के बिना सामान्य उत्तर देता है। बाकी हर एरर वैसा ही है जैसा बिना खोज वाले अनुरोध के लिए। त्रुटि प्रबंधन