የተገናኘ ድር ፍለጋ
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"
}
]
} ፍለጋን ማብራት
ፍለጋ የጥያቄ መስክ ነው፣ በdefault ጠፍቷል። ጥያቄ እስካልላከው ድረስ ምንም አይፈለግም።
| መስክ | ዓይነት | ነባሪ | መግለጫ | የሚተገብሩት |
|---|---|---|---|---|
web_search | boolean | false | true ለዚህ ጥያቄ የድር ፍለጋ ያስኬዳል እና ውጤቶቹን ሞዴሉ ከመመለሱ በፊት ይሰጠዋል። | ከshannon-coder-1 በስተቀር እያንዳንዱ የShannon ሞዴል |
| Endpoint | የድር ፍለጋ | እንዴት |
|---|---|---|
/v1/chat/completions | አዎ | በጥያቄው body ውስጥ "web_search": true። |
/v1/messages | አዎ | በጥያቄው body ውስጥ "web_search": true። |
/v1/responses | — | ይህ endpoint ከሞዴሉ ብቻ ይመልሳል። ለተፈለገ መልስ ከላይ ካሉት ሁለት አንዱን ይጠቀሙ። |
በ/v1/messages ላይ መስኩ በbody የላይኛው ደረጃ፣ ከ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በሚልክ እያንዳንዱ ጥያቄ ላይ ይሰራል። ሞዴሉ መፈለግ አለመፈለጉን አይመርጥም። - ውጤቶቹ ከሞዴሉ ፊት እንደ ቁጥር የተሰጣቸው ምንጮች ይቀመጣሉ፣ ሞዴሉም መልሱን ከእነሱ ይጽፋል።
- ምላሹ የሚጀምረው ፍለጋው ሲያበቃ ነው። የstream ጥያቄ እስከዚያ ድረስ ምንም አይልክም፣ headers ወይም events አይደሉም፣ ስለዚህ ከመጀመሪያው chunk በፊት ረዘም ያለ ጥበቃ ይጠብቁ።
ምላሹ የሚይዘው
- ምላሹ የendpoint ውን የተለመደ ቅርጽ አለው። መልሱ በ
choices[0].message.contentውስጥ ነው (በ/v1/messagesላይtextblock)። - ጽሑፉ ከሚደግፏቸው ዓረፍተ ነገሮች በኋላ እንደ
[1]እና[2]ያሉ ምልክቶችን ሊይዝ ይችላል። እያንዳንዱ ቁጥር ሞዴሉ ካነበባቸው ውጤቶች አንዱን ይወክላል። sourcesእነዚያን ውጤቶች ይሰይማል፦ ለሞዴሉ ለተሰጠው እያንዳንዱ ውጤት አንድ ግቤት፣ ከindex፣titleእናurlጋር። ምልክቱ[1]index1 ያለው ግቤት ነው። መልሱ ያልጠቀሳቸው ውጤቶችም ተዘርዝረዋል።- በ
/v1/chat/completionsላይ መልዕክቱ በOpenAI ቅርጽannotationsደግሞ አለው፦ ምልክት ለሰየመው እያንዳንዱ ምንጭ አንድurl_citation፣ ከurl፣title፣ እንዲሁም ከstart_indexእናend_indexጋር፤ እነዚህም የምልክቱ አቀማመጥ በcontentውስጥ በቁምፊዎች ተቆጥሮ ናቸው (መጨረሻው አይካተትም)። - በstream ውስጥ
sourcesከመጨረሻው chunk ጋር ይመጣል፣ በ/v1/messagesላይ ደግሞ ከmessage_deltaክስተት ጋር። annotations ከመጨረሻው በፊት ባለው በአንድ chunk ውስጥ እንደdelta.annotationsይመጣሉ። sourcesየሚኖረው የዚህ ጥያቄ ፍለጋ አንድ ነገር ካገኘ ብቻ ነው። ያለ እሱ ምላሽ ያለ ፍለጋ ውጤቶች ተጽፏል።
ፍለጋዎች እንዴት ይቆጠራሉ
እያንዳንዱ ዕቅድ በቀን የተወሰነ የፍለጋ ብዛት ያካትታል፦
| ዕቅድ | ፍለጋዎች በቀን |
|---|---|
| ነጻ | 3 |
| ፕላስ | 30 |
| Standard | 50 |
| ባለሙያ | 60 |
- ፍለጋው አንድ ነገር ያገኘ ጥያቄ ከቀኑ መጠን አንድ ፍለጋ ይጠቀማል። ምንም ያላገኘ ፍለጋ ምንም አይጠቀምም።
- Chat እና API የቁልፉ ባለቤት የሆነውን መለያ መጠን ይጋራሉ።
- ቆጠራው በየቀኑ በ00:00 UTC እንደገና ይጀምራል።
- የፍለጋ ውጤቶቹ የጥያቄው input tokens ናቸው እና ከቀሪው prompt ጋር ይከፈላሉ።
የቀኑ ፍለጋዎች ሲያልቁ
የቀኑ የመጨረሻ ፍለጋ ከተጠቀመ በኋላ web_search: true የሚልክ ጥያቄ አይከለከልም። ያለ ፍለጋ ይመለሳል፦ status 200 ነው እና ምላሹ sources የለውም።
ፍለጋ እንደ የራስዎ tool
web_search: true እዚህ የተገለጸው ፍለጋ ብቸኛው መቀየሪያ ነው። በtools ውስጥ የሚገልጹት እና web_search ብለው የሰየሙት function ከእርስዎ የራስ tools አንዱ ነው፦ ሞዴሉ ጥሪ ይመልሳል፣ ኮድዎም ፍለጋውን ያስኬዳል እና ውጤቱን መልሶ ይልካል።
የሌሎች መድረኮች የፍለጋ tool አይነቶች፣ ለምሳሌ በ/v1/messages ላይ web_search_20250305 ወይም በ/v1/responses ላይ {"type": "web_search"}፣ እዚህ ፍለጋ አይጀምሩም።
ስህተቶች
የድር ፍለጋ status ኮድ ወይም የስህተት አይነት አይጨምርም። ምንም የማያገኝ ፍለጋ፣ ወይም ፍለጋ የሌለበት ቀን፣ ያለ ፍለጋ ውጤቶች መደበኛ መልስ ይሰጣል። ሌላ ማንኛውም ስህተት ያለ ፍለጋ ለሚደረግ ጥያቄ ካለው ጋር ተመሳሳይ ነው። ስህተት አስተዳደር