ស្វែងរកវេបក្នុងស្រាប់
កំណត់ 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"
}
]
} ការបើកការស្វែងរក
ការស្វែងរកគឺជា field នៃ request ដែលបិទតាមលំនាំដើម។ គ្មានអ្វីត្រូវបានស្វែងរកទេ លុះត្រាតែ request ផ្ញើវា។
| Field | ប្រភេទ | លំនាំដើម | ការពិពណ៌នា | អនុវត្តដោយ |
|---|---|---|---|---|
web_search | boolean | false | true ដំណើរការការស្វែងរកវេបសម្រាប់ request នេះ ហើយប្រគល់លទ្ធផលឱ្យម៉ូដែលមុនពេលវាឆ្លើយ។ | រាល់ម៉ូដែល Shannon លើកលែងតែ shannon-coder-1 |
| Endpoint | ការស្វែងរកវេប | របៀប |
|---|---|---|
/v1/chat/completions | បាទ/ចាស | "web_search": true ក្នុងខ្លឹមសារ request។ |
/v1/messages | បាទ/ចាស | "web_search": true ក្នុងខ្លឹមសារ request។ |
/v1/responses | — | endpoint នេះឆ្លើយពីម៉ូដែលតែម្នាក់ឯង។ សូមប្រើមួយក្នុងចំណោមពីរខាងលើសម្រាប់ចម្លើយដែលមានការស្វែងរក។ |
លើ /v1/messages field ស្ថិតនៅកម្រិតកំពូលនៃខ្លឹមសារ ក្បែរ model និង messages៖
{
"model": "shannon-3",
"web_search": true,
"messages": [
{
"role": "user",
"content": "What is the weather forecast for Lisbon this weekend?"
}
]
} អ្វីដែល request ដែលមានការស្វែងរកធ្វើ
- API ស្វែងរកវេបសម្រាប់សារ user ចុងក្រោយ។ វេនមុនៗនៃការសន្ទនាផ្តល់បរិបទដល់ការស្វែងរក។
- ការស្វែងរកដំណើរការលើរាល់ request ដែលផ្ញើ
web_search: true។ ម៉ូដែលមិនជ្រើសថាត្រូវស្វែងរកឬអត់ទេ។ - លទ្ធផលត្រូវបានដាក់នៅមុខម៉ូដែលជាប្រភពដែលមានលេខ ហើយម៉ូដែលសរសេរចម្លើយរបស់វាពីពួកវា។
- ចម្លើយចាប់ផ្តើមនៅពេលការស្វែងរករួចរាល់។ request ដែល stream មិនផ្ញើអ្វីទេ ទាំង header ទាំង event រហូតដល់ពេលនោះ ដូច្នេះសូមរំពឹងការរង់ចាំយូរជាងមុន chunk ដំបូង។
អ្វីដែលចម្លើយមាន
- ចម្លើយមានរូបរាងធម្មតានៃ endpoint របស់វា។ ចម្លើយស្ថិតក្នុង
choices[0].message.content(blocktextលើ/v1/messages)។ - អត្ថបទអាចមានសញ្ញាសម្គាល់ដូចជា
[1]និង[2]បន្ទាប់ពីសេចក្តីថ្លែងការណ៍ដែលពួកវាគាំទ្រ។ លេខនីមួយៗតំណាងឱ្យលទ្ធផលមួយក្នុងចំណោមលទ្ធផលដែលម៉ូដែលបានអាន។ sourcesដាក់ឈ្មោះលទ្ធផលទាំងនោះ៖ មួយធាតុសម្រាប់រាល់លទ្ធផលដែលបានប្រគល់ឱ្យម៉ូដែល ដោយមានindex,titleនិងurl។ សញ្ញាសម្គាល់[1]គឺជាធាតុដែលមានindex1។ លទ្ធផលដែលចម្លើយមិនបានដកស្រង់ក៏ត្រូវបានរាយបញ្ជីដែរ។- លើ
/v1/chat/completionsសារក៏មានannotationsដែរ តាមទម្រង់ OpenAI៖ មួយurl_citationសម្រាប់រាល់ប្រភពដែលសញ្ញាសម្គាល់បានដាក់ឈ្មោះ ដោយមានurl,titleនិងstart_indexព្រមទាំងend_indexជាទីតាំងរបស់សញ្ញាសម្គាល់ក្នុងcontentដែលរាប់ជាតួអក្សរ (ចុងមិនរាប់បញ្ចូលទេ)។ - ក្នុង stream
sourcesមកជាមួយ chunk ចុងក្រោយ ហើយលើ/v1/messagesមកជាមួយព្រឹត្តិការណ៍message_delta។ annotations មកក្នុង chunk មួយមុន chunk ចុងក្រោយភ្លាម ជាdelta.annotations។ sourcesមានតែនៅពេលការស្វែងរកនៃ request នេះរកឃើញអ្វីមួយប៉ុណ្ណោះ។ ចម្លើយដែលគ្មានវា ត្រូវបានសរសេរដោយគ្មានលទ្ធផលស្វែងរក។
របៀបដែលការស្វែងរកត្រូវបានរាប់
គ្រប់គម្រោងរួមមានចំនួនការស្វែងរកក្នុងមួយថ្ងៃ៖
| គម្រោង | ការស្វែងរកក្នុងមួយថ្ងៃ |
|---|---|
| ឥតគិតថ្លៃ | 3 |
| បូក | 30 |
| Standard | 50 |
| វិជ្ជាជីវៈ | 60 |
- request ដែលការស្វែងរករបស់វារកឃើញអ្វីមួយប្រើការស្វែងរកមួយនៃកូតាប្រចាំថ្ងៃ។ ការស្វែងរកដែលរកមិនឃើញអ្វីមិនប្រើអ្វីទេ។
- Chat និង API ប្រើកូតារួមគ្នារបស់គណនីដែលជាម្ចាស់ key។
- ការរាប់ចាប់ផ្តើមឡើងវិញរៀងរាល់ថ្ងៃនៅម៉ោង 00:00 UTC។
- លទ្ធផលស្វែងរកគឺជា input token នៃ request ហើយត្រូវបានគិតថ្លៃរួមជាមួយ prompt ដែលនៅសល់។
នៅពេលការស្វែងរកប្រចាំថ្ងៃត្រូវបានប្រើអស់
request ដែលផ្ញើ web_search: true បន្ទាប់ពីការស្វែងរកចុងក្រោយនៃថ្ងៃមិនត្រូវបានបដិសេធទេ។ វាត្រូវបានឆ្លើយដោយគ្មានការស្វែងរក៖ status គឺ 200 ហើយចម្លើយគ្មាន sources ទេ។
ការស្វែងរកជា tool ផ្ទាល់ខ្លួន
web_search: true គឺជាកុងតាក់តែមួយគត់នៃការស្វែងរកដែលបានពិពណ៌នានៅទីនេះ។ function ដែលអ្នកកំណត់ក្នុង tools ហើយដាក់ឈ្មោះ web_search គឺជា tool ផ្ទាល់ខ្លួនរបស់អ្នក៖ ម៉ូដែលត្រឡប់ការហៅ ហើយកូដរបស់អ្នកដំណើរការការស្វែងរក និងផ្ញើលទ្ធផលមកវិញ។
ប្រភេទ tool ស្វែងរករបស់វេទិកាផ្សេង ដូចជា web_search_20250305 លើ /v1/messages ឬ {"type": "web_search"} លើ /v1/responses មិនចាប់ផ្តើមការស្វែងរកនៅទីនេះទេ។
កំហុស
ការស្វែងរកវេបមិនបន្ថែមកូដ status ឬប្រភេទ error ទេ។ ការស្វែងរកដែលរកមិនឃើញអ្វី ឬថ្ងៃដែលគ្មានការស្វែងរកនៅសល់ ផ្តល់ចម្លើយធម្មតាដោយគ្មានលទ្ធផលស្វែងរក។ កំហុសផ្សេងទៀតទាំងអស់ដូចគ្នានឹង request ដែលគ្មានការស្វែងរក។ ការគ្រប់គ្រងកំហុស