Chat Completions
POST /v1/chat/completions сөйлесуді қабылдап, модельдің келесі хабарламасын OpenAI Chat Completions форматында қайтарады. Оны кез келген OpenAI SDK-дан немесе жай HTTP арқылы қолданыңыз; бұл бет — өрістер бойынша анықтамалық.
POST https://api.shannon-ai.com/v1/chat/completions
Ең кіші сұрау — модель id-і және бір пайдаланушы хабарламасы.
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."}]
}' Жауап — бір JSON нысаны:
{
"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
}
} Тақырыптар
Сұрау тақырыптары
| Тақырып | Мәні | Сипаттама |
|---|---|---|
Authorization | Bearer YOUR_API_KEY | API кілтіңіз. Оның орнына әр endpoint-те x-api-key: YOUR_API_KEY қабылданады. |
Content-Type | application/json | Міндетті. Кез келген басқа мән 415 қайтарады. |
x-request-id | Міндетті емес. Сұрау үшін өз id-ңіз. Ол жауапта өзгеріссіз қайтады. |
Жауап тақырыптары
| Тақырып | Сипаттама |
|---|---|
x-request-id | Әр жауапта, қателер мен стримдерді қоса: өзіңіз жіберген мән, ал ештеңе жібермесеңіз 12 оналтылық таңба. Мәселе туралы хабарлағанда оны келтіріңіз. |
content-type | application/json, немесе stream мәні true болғанда text/event-stream. |
Сұрау өрістері
Тек messages міндетті. Қолданады бағанында өріс жауапты өзгертетін модельдер аталған. Hosted open-weight модельдер — модельдер тізіміндегі он екі id; Shannon 3 отбасы — shannon-3, shannon-3-pro, shannon-3.1 және shannon-3.1-pro. Модельдер және бағалар
| Өріс | Түрі | Әдепкі | Сипаттама | Қолданады |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Жауап беретін модель: модельдер тізіміндегі id. Оны әр сұраумен жіберіңіз. Сәйкестендіруде регистр ескерілмейді. Жарияланбаған id 400 unknown model қайтарады. | Барлық модельдер |
messages | array | Міндетті. Әңгіме, ең ескі хабарлама бірінші. Төмендегі «Хабарламалар» бөлімін қараңыз. | Барлық модельдер | |
stream | boolean | false | true жауапты жазылып жатқанда server-sent events ретінде жібереді. | Барлық модельдер |
max_tokens | integer | 4096 | Жауаптың жоғарғы шегі, токенмен. 1-ден 65,536-ға дейінгі аралықтан тыс мән сол аралыққа түзетіледі. Сондай-ақ сұрау орындалып жатқанда балансыңыздан бөлек сақталатын сома осы. Төмендегі «Шығыс ұзындығы» бөлімін қараңыз. | Hosted open-weight модельдер, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
max_completion_tokens | integer | max_tokens сияқты. Екеуі де жіберілсе, max_tokens қолданылады. | Hosted open-weight модельдер, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
temperature | number | Сэмплинг температурасы. Hosted open-weight модельдерде әдепкі мән 1, ал мәндер 0 мен 2 арасында ұсталады. | Hosted open-weight модельдер, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | 0.95 | Nucleus sampling. Мәндер 0 мен 1 арасында ұсталады. | Hosted open-weight модельдер |
seed | integer | Сэмплердің seed мәні, кез келген бүтін сан. Онсыз seed модельден және сөйлесуден алынады, сондықтан екі рет жіберілген бірдей сұрау бірдей seed қолданады. | Hosted open-weight модельдер | |
stop | string | array | Жол немесе жолдар массиві. 4-ке дейіні қолданылады. Жауап пайда болған біріншісінің алдында аяқталады; тоқтату мәтіні өзі қайтарылмайды. | Hosted open-weight модельдер | |
reasoning_effort | string | high | Модель жауап бермес бұрын қаншалықты пайымдайды: off, low, medium немесе high. none және minimal — off, default — medium, max — high дегенді білдіреді. Кез келген басқа мән 400 қайтарады. | Hosted open-weight модельдер |
reasoning | object | Сол параметр нысан түрінде: {"effort": "low"}. Екеуі де жіберілсе, reasoning_effort қолданылады. | Hosted open-weight модельдер | |
tools | array | Модель шақыра алатын функциялар, әрқайсысы {"type": "function", "function": {"name", "description", "parameters"}} түрінде. Модельдің шақырулары tool_calls ішінде қайтады; оларды кодыңыз орындайды. | Барлық модельдер | |
tool_choice | string | object | auto | "auto" модельге өзі шешуге мүмкіндік береді. "required" құралды шақыруға мәжбүр етеді. {"type": "function", "function": {"name": "…"}} нақты сол құралды шақыртады. | Hosted open-weight модельдер |
response_format | object | JSON жауабы үшін {"type": "json_object"}, немесе схемаңызға сай жауап үшін {"type": "json_schema", "json_schema": {…}}. | Барлық Shannon деңгейлері; hosted open-weight модельдер әр id бойынша көрсетілгендей | |
web_search | boolean | false | true модельге жауап бермес бұрын вебте іздеуге мүмкіндік береді. | shannon-1.6-*, shannon-2-*, Shannon 3 отбасы |
n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store және prompt_cache_key сияқты басқа OpenAI өрістері бар клиент коды өзгеріссіз жұмыс істеуі үшін қабылданады. Олар жауапты өзгертпейді: әрқашан бір choice болады, ал стрим әрқашан usage-пен аяқталады.
JSON түрі қате өріс, мысалы "max_tokens": "100", 422 қайтарады. messages жоқ сұрау да солай.
Құралдардың, құрылымдалған шығыстың, пайымдаудың және веб іздеудің әрқайсысының өз беті бар: Функция шақыру, Құрылымдалған нәтижелер, Пайымдау күші, Кіріктірілген веб іздеу.
Параметрлері бар сұрау
Бұл сұрау system хабарламасын, сэмплинг өрістерін және пайымдау күшін орнатады. Ол барлығын қолданатын hosted open-weight модельді пайдаланады.
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"
}' Жауап жоғардағыдай пішінде. Hosted open-weight модельдерде оның usage өрісі екі бөлшек қосады: кэштен оқылған промпт токендері және пайымдауға жұмсалған токендер.
{
"usage": {
"prompt_tokens": 31,
"completion_tokens": 62,
"total_tokens": 93,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 21
}
}
} Шығыс ұзындығы
max_tokens екі нәрсе істейді. Біріншіден, ол сұрау басталғанда балансыңыздан бөлек сақталатын токен саны. Жауап толық болғанда бұл сома сұраудың жұмсаған токендерімен ауыстырылады. max_tokens балансыңыздың қалдығынан үлкен болса, жауабының өзі сыйса да, сұрау 429 Quota exceeded қайтарады. Азырақ бөлек сақтау үшін төменірек max_tokens жіберіңіз.
shannon-coder-1 бұл endpoint-те басқаша есептеледі: әр сұрау жоспарыңыздың Shannon Coder шақыруларының бірі болады және оған токен бөлек сақталмайды. Шектеулер және баланс
Екіншіден, ол мына модельдерде жауап ұзындығын шектейді:
| Модельдер | max_tokens не істейді |
|---|---|
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | Жауап шекке жеткенде тоқтайды. Стрим сонда finish_reason length мәнімен аяқталады. |
| Hosted open-weight модельдер | Жауап мәтіні max_tokens мәнінде тоқтайды. Пайымдау оған есептелмейді. 256-дан төмен мәндер 256 ретінде қабылданады. |
max_tokens немесе max_completion_tokens болмаса, мән 4,096. shannon-coder-1 үшін ол 65,536.
Хабарламалар
Әр хабарлама — role және content бар нысан. content — жол, немесе хабарлама мәтіннен басқаны да алып жүрсе, бөліктер массиві.
| Рөл | Сипаттама | Қолданады |
|---|---|---|
system | Модельге нұсқаулар. Оны бірінші қойыңыз. Shannon деңгейлерінде бірінші system хабарламасы қолданылады. | Hosted open-weight модельдер, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
developer | system ретінде оқылады. | Hosted open-weight модельдер |
user | Сіздің сұрағыңыз. Shannon деңгейлерінде соңғы user хабарламасы — промпт, одан бұрынғы хабарламалар — тарих. | Барлық модельдер |
assistant | Модельдің алдыңғы жауаптары. Одан кейін құрал нәтижесін жібергенде оның tool_calls өрісін сақтаңыз. | Барлық модельдер |
tool | Құрал шақыруының нәтижесі: tool_call_id шақырудың id-ін, content нәтижені жол ретінде қамтиды. | Барлық модельдер |
Shannon 3 отбасының id-імен орындалуы міндетті нұсқауларды user хабарламасына қойыңыз.
Shannon деңгейлерінде пайдаланушы мәтіні де, tools та жоқ сұрау 400 No user message provided қайтарады.
Мазмұн бөліктері
| Бөлік | Сипаттама | Қолжетімді |
|---|---|---|
{"type": "text", "text": "…"} | Жай мәтін. | Барлық модельдер |
{"type": "image_url", "image_url": {"url": "…"}} | Сурет, base64 мазмұны бар data: URL ретінде немесе http(s) URL ретінде. | Shannon 3 отбасы, shannon-1.6-lite, shannon-1.6-pro және сурет кірісі көрсетілген hosted open-weight модельдер |
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | Құжат (PDF, Word, PowerPoint немесе Excel), base64 түрінде немесе URL арқылы. | Shannon 3 отбасы |
Өлшемдердің, шектеулердің және формалардың толық тізімінің өз беті бар. Суреттер және файлдар
Жауап нысаны
| Өріс | Түрі | Сипаттама |
|---|---|---|
id | string | chatcmpl- және одан кейін 32 оналтылық таңба. |
object | string | Әрқашан chat.completion. |
created | integer | Жауап уақыты, Unix секундтарымен. |
model | string | Жауап берген модельдің каноникалық id-і. Ол өзіңіз жіберген id-ден жазылуы жағынан өзгеше болуы мүмкін. |
choices | array | Әрқашан дәл бір choice, index мәні 0. |
choices[0].message.role | string | Әрқашан assistant. |
choices[0].message.content | string | null | Жауап мәтіні. tool_calls болғанда Shannon деңгейлерінде ол null; hosted open-weight модельдер шақырулармен қатар мәтін жібере алады. |
choices[0].message.reasoning_content | string | null | Модель жауаптан бұрын жазған пайымдау, немесе ол болмаса null. |
choices[0].message.tool_calls | array | Тек модель құралдарды шақырғанда болады. Әр жазбада id, type мәні function және name мен JSON жолы түріндегі arguments бар function өрістері бар. |
choices[0].message.annotations | array | Тек іздеуі бірдеңе тапқан web_search: true бар сұрауда. content ішіндегі белгі атаған әр дереккөз үшін бір url_citation, оның ішінде url, title, start_index және end_index бар (белгінің орны, таңбамен есептелген, соңы кірмейді). |
choices[0].finish_reason | string | Жауап неге аяқталды. «Аяқталу себептерін» қараңыз. |
usage | object | Сұраудың токендері. «Usage» бөлімін қараңыз. |
sources | array | Тек іздеуі бірдеңе тапқан web_search: true бар сұрауда: модельге берілген нәтижелер, әрқайсысында index, title және url бар. Жауаптағы [1] — index мәні 1 болатын жазба. |
Аяқталу себептері
| finish_reason | Сипаттама |
|---|---|
stop | Модель жауабын аяқтады, немесе stop жолы пайда болды. |
tool_calls | Модель бір немесе бірнеше құралды шақырады. Оларды орындап, нәтижелерді tool хабарламаларымен жіберіңіз. |
length | Жауап шығыс шегінде үзілді. shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 және Shannon 3 отбасының стримдерінде хабарланады. |
Стримсіз жауап stop немесе tool_calls хабарлайды.
Usage
| Өріс | Түрі | Сипаттама | Қолжетімді |
|---|---|---|---|
usage.prompt_tokens | integer | Кіріс токендері. | Барлық модельдер |
usage.completion_tokens | integer | Шығыс токендері: пайымдау, жауап және құрал шақырулары бірге. | Барлық модельдер |
usage.total_tokens | integer | prompt_tokens плюс completion_tokens. | Барлық модельдер |
usage.prompt_tokens_details.cached_tokens | integer | prompt_tokens ішінен промпт кэшінен оқылған бөлігі. | Hosted open-weight модельдер |
usage.completion_tokens_details.reasoning_tokens | integer | completion_tokens ішінен пайымдауға жұмсалған бөлігі. | Hosted open-weight модельдер |
Hosted open-weight модельдерде prompt_tokens — хабарламаларыңыз бен құрал анықтамалары модельдің өз токенайзерімен есептелгені, плюс кез келген суреттердің токендері. Токен санау endpoint-тері жібермес бұрын дәл сол санды қайтарады. Токендерді санау
Shannon деңгейлерінде prompt_tokens модель жауап жазу үшін оқыған бәрін есептейді, сондықтан ол тек хабарламаларыңыздың мәтінінен үлкен.
Streaming
stream мәні true болғанда жауап chat.completion.chunk оқиғалары ретінде келіп, data: [DONE] жолымен аяқталады. Оның алдындағы соңғы бөлік finish_reason және usage алып жүреді; stream_options қажет емес. Бөлік пішіндерінің, keep-alive жолдарының және стрим ішіндегі қателердің өз беті бар. Стриминг
Қателер
Қате — error мүшесі бар JSON нысаны. Тексерулер мына ретпен орындалады: API кілті, сұрау денесі, модель id-і, содан кейін баланс. Кестеде осы endpoint ең жиі қайтаратындар берілген. Толық тізімнің, нені қайталау керегімен бірге, өз беті бар. Қателерді өңдеу
{
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Мәртебе | Түрі | Хабарлама | Қашан |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | API кілті жіберілмеген, немесе кілт белгісіз не күші жойылған. |
400 | invalid_request_error | unknown model: <id> | model жарияланған id емес. |
400 | invalid_request_error | No user message provided | Shannon деңгейлері: сұраудың пайдаланушы мәтіні де, tools та жоқ. |
400 | invalid_request_error | <id> does not accept image input | Сурет кірісі жоқ hosted open-weight модельге сурет бөлігі жіберілді. |
400 | invalid_request_error | <id> does not accept response_format | response_format құрылымдалған шығысы жоқ hosted open-weight модельге жіберілді. |
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | reasoning_effort тізімнен тыс мәнді қамтиды. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | messages жоқ, немесе өрістің JSON түрі қате. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_tokens балансыңыздың қалдығынан үлкен. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Flood protection: аккаунтыңызда бір минутта 120-дан астам сұрау. |
500 | server_error | The model backend failed to answer. Please retry. | Модель жауап бермеді. Сұрауды қайта жіберіңіз. |
502 | api_error | The model backend failed to answer. Please retry. | Сол сияқты, Shannon 3 отбасында және hosted open-weight модельдерде. |