Built‑in 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 मॉडेल |
| एंडपॉइंट | वेब शोध | कसे |
|---|---|---|
/v1/chat/completions | होय | रिक्वेस्ट बॉडीमध्ये "web_search": true. |
/v1/messages | होय | रिक्वेस्ट बॉडीमध्ये "web_search": true. |
/v1/responses | — | हा एंडपॉइंट फक्त मॉडेलकडून उत्तर देतो. शोधासह उत्तरासाठी वरील दोनपैकी एक वापरा. |
/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पाठवणाऱ्या प्रत्येक रिक्वेस्टवर शोध चालतो. शोधायचे की नाही हे मॉडेल ठरवत नाही.- निकाल क्रमांक दिलेले स्रोत म्हणून मॉडेलसमोर ठेवले जातात, आणि मॉडेल त्यांवरून उत्तर लिहिते.
- शोध पूर्ण झाल्यावर उत्तर सुरू होते. स्ट्रीम केलेली रिक्वेस्ट तोपर्यंत हेडर किंवा इव्हेंट्स काहीही पाठवत नाही, म्हणून पहिल्या चंकपूर्वी जास्त प्रतीक्षेसाठी तयार राहा.
उत्तरात काय असते
- उत्तराचे स्वरूप त्याच्या एंडपॉइंटचे नेहमीचे असते. उत्तर
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 कीच्या मालक अकाउंटचा कोटा वाटून घेतात.
- मोजणी दररोज 00:00 UTC ला पुन्हा सुरू होते.
- शोध निकाल रिक्वेस्टची इनपुट टोकन्स असतात आणि प्रॉम्प्टच्या बाकीच्या भागासोबत बिल केले जातात.
दिवसाचे शोध संपल्यावर
दिवसाचा शेवटचा शोध वापरल्यानंतर web_search: true पाठवणारी रिक्वेस्ट नाकारली जात नाही. तिला शोधाशिवाय उत्तर दिले जाते: स्टेटस 200 असते आणि उत्तरात sources नसते.
तुमचे स्वतःचे टूल म्हणून शोध
web_search: true हा येथे वर्णन केलेल्या शोधाचा एकमेव स्विच आहे. तुम्ही tools मध्ये परिभाषित करून web_search नाव दिलेले फंक्शन तुमचेच टूल आहे: मॉडेल कॉल परत करते, आणि तुमचा कोड शोध चालवून निकाल परत पाठवतो.
इतर प्लॅटफॉर्म्सचे शोध टूल प्रकार, जसे /v1/messages वर web_search_20250305 किंवा /v1/responses वर {"type": "web_search"}, येथे शोध सुरू करत नाहीत.
त्रुटी
वेब शोध कोणताही नवा स्टेटस कोड किंवा त्रुटी प्रकार जोडत नाही. काहीच न सापडणारा शोध, किंवा शोध शिल्लक नसलेला दिवस, शोध निकालांशिवाय सामान्य उत्तर देतो. इतर प्रत्येक त्रुटी शोधाशिवायच्या रिक्वेस्टप्रमाणेच आहे. त्रुटी हाताळणी