Chat Completions
POST /v1/chat/completions suhbatni qabul qiladi va modelning keyingi xabarini OpenAI Chat Completions formatida qaytaradi. Uni istalgan OpenAI SDK'dan yoki oddiy HTTP orqali ishlating; bu sahifa maydonma-maydon ma'lumotnoma.
POST https://api.shannon-ai.com/v1/chat/completions
Eng kichik so'rov — model id va bitta foydalanuvchi xabari.
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": "Say hello in one sentence."}],
)
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: "Say hello in one sentence." }],
});
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": "Say hello in one sentence."}]
}' Javob — bitta JSON obyekti:
{
"id": "chatcmpl-5f0c1e7a9b3d4c62a8e1f07d2b46c9a3",
"object": "chat.completion",
"created": 1791625200,
"model": "shannon-3",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Hello, it is good to meet you.",
"reasoning_content": "The user wants a greeting in one sentence. Keep it short and friendly."
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 1184,
"completion_tokens": 46,
"total_tokens": 1230
}
} Sarlavhalar
So'rov sarlavhalari
| Sarlavha | Qiymat | Tavsif |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | API kalitingiz. Uning o'rniga har bir endpointda x-api-key: YOUR_API_KEY ham qabul qilinadi. |
Content-Type | application/json | Majburiy. Boshqa har qanday qiymat 415 qaytaradi. |
x-request-id | Ixtiyoriy. So'rov uchun o'zingizning id'ingiz. U javobda o'zgarishsiz qaytadi. |
Javob sarlavhalari
| Sarlavha | Tavsif |
|---|---|
x-request-id | Har bir javobda, xatolar va oqimlarda ham: siz yuborgan qiymat, yubormagan bo'lsangiz 12 ta o'n oltilik belgi. Muammo haqida xabar berganda uni keltiring. |
content-type | application/json, stream true bo'lsa esa text/event-stream. |
So'rov maydonlari
Faqat messages majburiy. Qo'llaydi ustuni maydon javobni o'zgartiradigan modellarni nomlaydi. Xostingdagi open-weight modellar — model ro'yxatidagi o'n ikkita id; Shannon 3 oilasi — shannon-3, shannon-3-pro, shannon-3.1 va shannon-3.1-pro. Modellar va narxlar
| Maydon | Tur | Standart | Tavsif | Qo'llaydi |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Javob beradigan model: model ro'yxatidagi id. Uni har bir so'rov bilan yuboring. Moslashtirishda harf registri hisobga olinmaydi. E'lon qilinmagan id 400 unknown model qaytaradi. | Barcha modellar |
messages | array | Majburiy. Suhbat, eng eski xabar birinchi. Quyida Xabarlarga qarang. | Barcha modellar | |
stream | boolean | false | true javobni yozilayotgan paytda server-sent events sifatida yuboradi. | Barcha modellar |
max_tokens | integer | 4096 | Javobning yuqori chegarasi, token bilan. 1 dan 65,536 gacha oraliqdan tashqaridagi qiymat shu oraliqqa keltiriladi. Shuningdek, so'rov bajarilayotganda balansingizdan ajratib qo'yiladigan miqdor ham shu. Quyida Chiqish uzunligiga qarang. | Xostingdagi open-weight modellar, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
max_completion_tokens | integer | max_tokens bilan bir xil. Ikkalasi yuborilsa, max_tokens ishlatiladi. | Xostingdagi open-weight modellar, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
temperature | number | Sampling temperaturasi. Xostingdagi open-weight modellarda standart qiymat 1 va qiymatlar 0 va 2 oralig'ida saqlanadi. | Xostingdagi open-weight modellar, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | 0.95 | Nucleus sampling. Qiymatlar 0 va 1 oralig'ida saqlanadi. | Xostingdagi open-weight modellar |
seed | integer | Sampler seed'i, istalgan butun son. Bo'lmasa, seed model va suhbatdan olinadi, shuning uchun ikki marta yuborilgan bir xil so'rov bir xil seed'dan foydalanadi. | Xostingdagi open-weight modellar | |
stop | string | array | Satr yoki satrlar massivi. 4 tagacha ishlatiladi. Javob paydo bo'lgan birinchisidan oldin tugaydi; to'xtash matnining o'zi qaytarilmaydi. | Xostingdagi open-weight modellar | |
reasoning_effort | string | high | Model javob berishdan oldin qanchalik mulohaza qilishi: off, low, medium yoki high. none va minimal offni, default mediumni, max esa highni bildiradi. Boshqa har qanday qiymat 400 qaytaradi. | Xostingdagi open-weight modellar |
reasoning | object | Xuddi shu sozlama obyekt shaklida: {"effort": "low"}. Ikkalasi yuborilsa, reasoning_effort ishlatiladi. | Xostingdagi open-weight modellar | |
tools | array | Model chaqirishi mumkin bo'lgan funksiyalar, har biri {"type": "function", "function": {"name", "description", "parameters"}} shaklida. Modelning chaqiruvlari tool_callsda qaytadi; ularni kodingiz bajaradi. | Barcha modellar | |
tool_choice | string | object | auto | "auto" modelga o'zi qaror qilishga imkon beradi. "required" uni tool chaqirishga majbur qiladi. {"type": "function", "function": {"name": "…"}} aynan o'sha tool'ni chaqirishga majbur qiladi. | Xostingdagi open-weight modellar |
response_format | object | JSON javob uchun {"type": "json_object"}, sxemangizga amal qiladigan javob uchun esa {"type": "json_schema", "json_schema": {…}}. | Barcha Shannon darajalari; xostingdagi open-weight modellar har bir id uchun ko'rsatilganidek | |
web_search | boolean | false | true modelga javob berishdan oldin veb'da qidirishga imkon beradi. | shannon-1.6-*, shannon-2-*, Shannon 3 oilasi |
Boshqa OpenAI maydonlari, masalan n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store va prompt_cache_key, mavjud mijoz kodi o'zgarishsiz ishlashi uchun qabul qilinadi. Ular javobni o'zgartirmaydi: doim bitta choice bor va oqim doim usage bilan tugaydi.
Noto'g'ri JSON turidagi maydon, masalan "max_tokens": "100", 422 qaytaradi. messagessiz so'rov ham shunday.
Tool'lar, tuzilmali chiqish, mulohaza va veb-qidiruvning har birining o'z sahifasi bor: Funksiya chaqirish, Tuzilgan chiqishlar, Mulohaza darajasi, O‘rnatilgan veb qidiruv.
Parametrlar bilan so'rov
Bu so'rov system xabari, sampling maydonlari va mulohaza darajasini belgilaydi. U xostingdagi open-weight modeldan foydalanadi, u hammasini qo'llaydi.
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="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
messages=[
{"role": "system", "content": "You are a physics teacher. Answer in two sentences."},
{"role": "user", "content": "Why is the sky blue?"},
],
max_tokens=512,
temperature=0.3,
top_p=0.9,
seed=7,
stop=["\n\n"],
reasoning_effort="low",
)
message = response.choices[0].message
print(message.reasoning_content) # the reasoning
print(message.content) # the answer
print(response.usage) 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: "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
messages: [
{ role: "system", content: "You are a physics teacher. Answer in two sentences." },
{ role: "user", content: "Why is the sky blue?" },
],
max_tokens: 512,
temperature: 0.3,
top_p: 0.9,
seed: 7,
stop: ["\n\n"],
reasoning_effort: "low",
});
const message = response.choices[0].message;
console.log(message.reasoning_content); // the reasoning
console.log(message.content); // the answer
console.log(response.usage); curl https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"messages": [
{"role": "system", "content": "You are a physics teacher. Answer in two sentences."},
{"role": "user", "content": "Why is the sky blue?"}
],
"max_tokens": 512,
"temperature": 0.3,
"top_p": 0.9,
"seed": 7,
"stop": ["\n\n"],
"reasoning_effort": "low"
}' Javob yuqoridagi bilan bir xil shaklda. Uning usage'i xostingdagi open-weight modellarda ikkita tafsilot qo'shadi: keshdan o'qilgan prompt tokenlari va mulohazaga sarflangan tokenlar.
{
"usage": {
"prompt_tokens": 31,
"completion_tokens": 62,
"total_tokens": 93,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 21
}
}
} Chiqish uzunligi
max_tokens ikki ish qiladi. Birinchidan, so'rov boshlanganda balansingizdan ajratib qo'yiladigan tokenlar soni shu. Javob to'liq bo'lgach, bu miqdor so'rov ishlatgan tokenlar bilan almashtiriladi. Agar max_tokens balansingizda qolgan miqdordan katta bo'lsa, javobning o'zi sig'sa ham so'rov 429 Quota exceeded qaytaradi. Kamroq ajratish uchun pastroq max_tokens yuboring.
shannon-coder-1 bu endpointda boshqacha hisoblanadi: har bir so'rov rejangizdagi Shannon Coder chaqiruvlaridan biri bo'ladi va uning uchun token ajratib qo'yilmaydi. Limitlar va balans
Ikkinchidan, u bu modellarda javob uzunligini cheklaydi:
| Modellar | max_tokens nima qiladi |
|---|---|
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | Javob limitga yetganda to'xtaydi. Oqim bunda finish_reason length bilan tugaydi. |
| Xostingdagi open-weight modellar | Javob matni max_tokensda to'xtaydi. Mulohaza unga hisoblanmaydi. 256 dan past qiymatlar 256 kabi ishlaydi. |
max_tokens yoki max_completion_tokens bo'lmasa, qiymat 4,096. shannon-coder-1 da u 65,536.
Xabarlar
Har bir xabar — role va contentli obyekt. content — satr, xabar matndan ko'proq narsani olib kelsa esa qismlar massivi.
| Rol | Tavsif | Qo'llaydi |
|---|---|---|
system | Model uchun ko'rsatmalar. Uni birinchi qo'ying. Shannon darajalarida birinchi system xabari ishlatiladi. | Xostingdagi open-weight modellar, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
developer | system sifatida o'qiladi. | Xostingdagi open-weight modellar |
user | Siz so'raydigan narsa. Shannon darajalarida oxirgi user xabari prompt, undan oldingi xabarlar esa tarix hisoblanadi. | Barcha modellar |
assistant | Modelning oldingi javoblari. Undan keyin tool natijasini yuborganda uning tool_callsini saqlang. | Barcha modellar |
tool | Tool chaqiruvi natijasi: tool_call_id chaqiruv id'sini, content esa natijani satr sifatida o'z ichiga oladi. | Barcha modellar |
Shannon 3 oilasi id'sida bajarilishi shart bo'lgan ko'rsatmalarni user xabariga qo'ying.
Shannon darajalarida foydalanuvchi matni ham, tools ham bo'lmagan so'rov 400 No user message provided qaytaradi.
Kontent qismlari
| Qism | Tavsif | Mavjud |
|---|---|---|
{"type": "text", "text": "…"} | Oddiy matn. | Barcha modellar |
{"type": "image_url", "image_url": {"url": "…"}} | Rasm, base64 mazmunli data: URL yoki http(s) URL sifatida. | Shannon 3 oilasi, shannon-1.6-lite, shannon-1.6-pro va rasm kirishini ko'rsatgan xostingdagi open-weight modellar |
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | Hujjat (PDF, Word, PowerPoint yoki Excel), base64 yoki URL orqali. | Shannon 3 oilasi |
O'lchamlar, limitlar va shakllarning to'liq ro'yxati alohida sahifada. Rasmlar va fayllar
Javob obyekti
| Maydon | Tur | Tavsif |
|---|---|---|
id | string | chatcmpl- va undan keyin 32 ta o'n oltilik belgi. |
object | string | Doim chat.completion. |
created | integer | Javob vaqti, Unix soniyalarida. |
model | string | Javob bergan modelning kanonik id'si. U siz yuborgan id'dan yozilishi bilan farq qilishi mumkin. |
choices | array | Doim aynan bitta choice, index 0 bilan. |
choices[0].message.role | string | Doim assistant. |
choices[0].message.content | string | null | Javob matni. tool_calls bilan u Shannon darajalarida null; xostingdagi open-weight modellar chaqiruvlar yonida matn yuborishi mumkin. |
choices[0].message.reasoning_content | string | null | Model javobdan oldin yozgan mulohaza, yoki u bo'lmasa null. |
choices[0].message.tool_calls | array | Faqat model tool chaqirganda bo'ladi. Har bir elementda id, type function va name hamda JSON satri sifatida argumentsli function bor. |
choices[0].message.annotations | array | Faqat web_search: true bilan yuborilgan va qidiruvi nimadir topgan so'rovda. content dagi belgi nomlagan har bir manba uchun bitta url_citation, url, title, start_index va end_index bilan (belgining o'rni, belgilar bilan sanalgan, oxiri kirmaydi). |
choices[0].finish_reason | string | Javob nima uchun tugadi. Tugash sabablariga qarang. |
usage | object | So'rov tokenlari. Usage'ga qarang. |
sources | array | Faqat web_search: true bilan yuborilgan va qidiruvi nimadir topgan so'rovda: modelga berilgan natijalar, har biri index, title va url bilan. Javobdagi [1] index 1 bo'lgan yozuvdir. |
Tugash sabablari
| finish_reason | Tavsif |
|---|---|
stop | Model javobini tugatdi yoki stop satri paydo bo'ldi. |
tool_calls | Model bir yoki bir nechta tool chaqiradi. Ularni bajaring va natijalarni tool xabarlarida yuboring. |
length | Javob chiqish limitida uzildi. shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 va Shannon 3 oilasi oqimlarida ko'rsatiladi. |
Oqimsiz javob stop yoki tool_callsni ko'rsatadi.
Usage
| Maydon | Tur | Tavsif | Mavjud |
|---|---|---|---|
usage.prompt_tokens | integer | Kirish tokenlari. | Barcha modellar |
usage.completion_tokens | integer | Chiqish tokenlari: mulohaza, javob va tool chaqiruvlari birgalikda. | Barcha modellar |
usage.total_tokens | integer | prompt_tokens plyus completion_tokens. | Barcha modellar |
usage.prompt_tokens_details.cached_tokens | integer | prompt_tokensning prompt keshidan o'qilgan qismi. | Xostingdagi open-weight modellar |
usage.completion_tokens_details.reasoning_tokens | integer | completion_tokensning mulohazaga sarflangan qismi. | Xostingdagi open-weight modellar |
Xostingdagi open-weight modellarda prompt_tokens — xabarlaringiz va tool ta'riflari modelning o'z tokenizatori bilan sanalgani, qo'shimcha ravishda rasmlar tokenlari. Token sanash endpointlari yuborishdan oldin xuddi shu sonni qaytaradi. Tokenlarni sanash
Shannon darajalarida prompt_tokens model javob yozish uchun o'qigan hamma narsani sanaydi, shuning uchun u faqat xabarlaringiz matnidan kattaroq bo'ladi.
Streaming
stream true bo'lganda javob chat.completion.chunk hodisalari sifatida keladi va data: [DONE] bilan tugaydi. Undan oldingi oxirgi chunk finish_reason va usageni olib keladi; stream_options kerak emas. Chunk shakllari, keep-alive satrlari va oqim ichidagi xatolar alohida sahifada. Oqim
Xatolar
Xato — error a'zosi bor JSON obyekti. Tekshiruvlar shu tartibda bajariladi: API kalit, so'rov tanasi, model id, so'ng balans. Jadvalda bu endpoint eng ko'p qaytaradigan xatolar keltirilgan. To'liq ro'yxat, nimani qayta urinish kerakligi bilan, alohida sahifada. Xatolarni boshqarish
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Holat | Tur | Xabar | Qachon |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | API kalit yuborilmagan yoki kalit noma'lum yoxud bekor qilingan. |
400 | invalid_request_error | unknown model: <id> | model e'lon qilingan id emas. |
400 | invalid_request_error | No user message provided | Shannon darajalari: so'rovda foydalanuvchi matni ham, tools ham yo'q. |
400 | invalid_request_error | <id> does not accept image input | Rasm kirishi yo'q xostingdagi open-weight modelga rasm qismi yuborilgan. |
400 | invalid_request_error | <id> does not accept response_format | Tuzilmali chiqishi yo'q xostingdagi open-weight modelga response_format yuborilgan. |
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | reasoning_effort ro'yxatdan tashqaridagi qiymatni o'z ichiga oladi. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | messages yo'q yoki biror maydon noto'g'ri JSON turida. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_tokens balansingizda qolgan miqdordan katta. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Flood himoyasi: hisobingizdan bir daqiqada 120 tadan ortiq so'rov. |
500 | server_error | The model backend failed to answer. Please retry. | Model javob yaratmadi. So'rovni qayta yuboring. |
502 | api_error | The model backend failed to answer. Please retry. | Xuddi shu, Shannon 3 oilasi va xostingdagi open-weight modellarda. |