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 гана. Колдонгон мамычасы талаа жоопту өзгөрткөн моделдерди атайт. Хостингдеги ачык салмактуу моделдер — модель тизмесиндеги он эки 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го чейинки диапазондон тышкаркы маани ошол диапазонго келтирилет. Сурам иштеп жатканда балансыңыздан бөлүп коюлган сумма да ушул. Төмөндөгү «Чыгыш узундугу» бөлүмүн караңыз. | Хостингдеги ачык салмактуу моделдер, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
max_completion_tokens | integer | max_tokens менен бирдей. Экөө тең жөнөтүлсө, max_tokens колдонулат. | Хостингдеги ачык салмактуу моделдер, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
temperature | number | Сэмплинг температурасы. Хостингдеги ачык салмактуу моделдерде демейки 1 жана маанилер 0 менен 2 ортосунда кармалат. | Хостингдеги ачык салмактуу моделдер, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | 0.95 | Nucleus сэмплинги. Маанилер 0 менен 1 ортосунда кармалат. | Хостингдеги ачык салмактуу моделдер |
seed | integer | Сэмплердин seed'и, каалаган бүтүн сан. Ансыз seed модельден жана сүйлөшүүдөн алынат, ошондуктан эки жолу жөнөтүлгөн бир эле сурам бир эле seed'ди колдонот. | Хостингдеги ачык салмактуу моделдер | |
stop | string | array | Сап же саптардын массиви. 4кө чейини колдонулат. Жооп пайда болгон биринчисинен мурун аяктайт; токтотуу тексттин өзү кайтарылбайт. | Хостингдеги ачык салмактуу моделдер | |
reasoning_effort | string | high | Модель жооп берерден мурун канчалык reasoning жүргүзөрү: off, low, medium же high. none жана minimal off дегенди билдирет, default medium, max high дегенди билдирет. Башка ар кандай маани 400 кайтарат. | Хостингдеги ачык салмактуу моделдер |
reasoning | object | Ошол эле жөндөө объект түрүндө: {"effort": "low"}. Экөө тең жөнөтүлсө, reasoning_effort колдонулат. | Хостингдеги ачык салмактуу моделдер | |
tools | array | Модель чакыра турган функциялар, ар бири {"type": "function", "function": {"name", "description", "parameters"}} түрүндө. Модельдин чалуулары tool_calls ичинде кайтып келет; аларды кодуңуз аткарат. | Бардык моделдер | |
tool_choice | string | object | auto | "auto" моделге өзү чечүүгө мүмкүнчүлүк берет. "required" аны курал чакырууга мажбурлайт. {"type": "function", "function": {"name": "…"}} аны так ошол куралды чакырууга мажбурлайт. | Хостингдеги ачык салмактуу моделдер |
response_format | object | JSON жооп үчүн {"type": "json_object"}, же схемаңызга ылайык жооп үчүн {"type": "json_schema", "json_schema": {…}}. | Бардык Shannon деңгээлдери; хостингдеги ачык салмактуу моделдер ар бир id боюнча тизмеленгендей | |
web_search | boolean | false | true модельге жооп берерден мурун вебден издөөгө уруксат берет. | shannon-1.6-*, shannon-2-*, Shannon 3 үй-бүлөсү |
Башка OpenAI талаалары, мисалы n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store жана prompt_cache_key, учурдагы клиент коду өзгөрүүсүз иштеши үчүн кабыл алынат. Алар жоопту өзгөртпөйт: ар дайым бир гана choice болот, ал эми стрим ар дайым usage менен аяктайт.
JSON түрү туура эмес талаа, мисалы "max_tokens": "100", 422 кайтарат. messages жок сурам да ошондой.
Куралдар, структураланган чыгыш, reasoning жана веб-издөөнүн ар биринин өз бети бар: Функция чакыруу, Түзүмдүү чыгыштар, Reasoning аракет деңгээли, Веб издөө.
Опциялары бар сурам
Бул сурам система билдирүүсүн, сэмплинг талааларын жана reasoning аракет деңгээлин коёт. Ал хостингдеги ачык салмактуу модельди колдонот, ал булардын баарын колдонот.
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"
}' Жооптун формасы жогорудагыдай эле. Хостингдеги ачык салмактуу моделдерде анын usage'и эки деталь кошот: кэштен окулган промпт токендери жана reasoning'ге сарпталган токендер.
{
"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 менен аяктайт. |
| Хостингдеги ачык салмактуу моделдер | Жооптун тексти max_tokens'те токтойт. Reasoning ага эсептелбейт. 256дан төмөн маанилер 256 катары кабыл алынат. |
max_tokens же max_completion_tokens болбосо, мааниси 4,096. shannon-coder-1де ал 65,536.
Билдирүүлөр
Ар бир билдирүү — role жана content бар объект. content — сап, же билдирүү текстен башканы да алып жүрсө бөлүктөр массиви.
| Роль | Сүрөттөмө | Колдонгон |
|---|---|---|
system | Модель үчүн нускамалар. Аны биринчи коюңуз. Shannon деңгээлдеринде биринчи system билдирүүсү колдонулат. | Хостингдеги ачык салмактуу моделдер, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
developer | system катары окулат. | Хостингдеги ачык салмактуу моделдер |
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 жана сүрөттү киришке колдой турган хостингдеги ачык салмактуу моделдер |
{"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; хостингдеги ачык салмактуу моделдер чалуулардын жанында текст жөнөтө алат. |
choices[0].message.reasoning_content | string | null | Модель жооптун алдында жазган reasoning, же жок болсо null. |
choices[0].message.tool_calls | array | Модель куралдарды чакырганда гана бар. Ар бир жазууда id, function түрү type жана 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 | Чыгыш токендери: reasoning, жооп жана курал чалуулары биргелikte. | Бардык моделдер |
usage.total_tokens | integer | prompt_tokens плюс completion_tokens. | Бардык моделдер |
usage.prompt_tokens_details.cached_tokens | integer | prompt_tokens'тин промпт кэшинен окулган бөлүгү. | Хостингдеги ачык салмактуу моделдер |
usage.completion_tokens_details.reasoning_tokens | integer | completion_tokens'тин reasoning'ге сарпталган бөлүгү. | Хостингдеги ачык салмактуу моделдер |
Хостингдеги ачык салмактуу моделдерде prompt_tokens — билдирүүлөрүңүз менен курал аныктамаларынын модельдин өз токенизатору менен саналганы, кошумча сүрөттөрдүн токендери. Токен саноо endpoint'тери жөнөтөрдөн мурун ошол эле санды кайтарат. Токен саноо
Shannon деңгээлдеринде prompt_tokens жооп жазуу үчүн модель окуган бардыгын санайт, ошондуктан ал жалаң билдирүүлөрүңүздүн текстинен чоңураак.
Стриминг
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 | Сүрөт киришин колдобогон хостингдеги ачык салмактуу моделге сүрөт бөлүгү жөнөтүлдү. |
400 | invalid_request_error | <id> does not accept response_format | response_format структураланган чыгышы жок хостингдеги ачык салмактуу моделге жөнөтүлдү. |
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 үй-бүлөсүндө жана хостингдеги ачык салмактуу моделдерде. |