Chat Completions
POST /v1/chat/completions прима разговор и ја враќа следната порака на моделот во форматот OpenAI Chat Completions. Користете го од кој било OpenAI SDK или преку обичен HTTP; оваа страница е референца поле по поле.
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": "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 | Опционално. Ваш сопствен ид за барањето. Се враќа непроменет во одговорот. |
Заглавија на одговорот
| Заглавие | Опис |
|---|---|
x-request-id | На секој одговор, вклучувајќи грешки и streaming-и: вредноста што сте ја испратиле, или 12 хексадецимални знаци кога не сте испратиле. Наведете го кога пријавувате проблем. |
content-type | application/json, или text/event-stream кога stream е true. |
Полиња на барањето
Задолжително е само messages. Колоната Го применуваат ги именува моделите на кои полето го менува одговорот. Хостираните open-weight модели се дванаесетте ид-а од листата на модели; семејството Shannon 3 се shannon-3, shannon-3-pro, shannon-3.1 и shannon-3.1-pro. Модели и цени
| Поле | Тип | Стандардно | Опис | Го применуваат |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Моделот што одговара: ид од листата на модели. Испратете го со секое барање. Совпаѓањето не прави разлика меѓу големи и мали букви. Ид што не е објавен враќа 400 unknown model. | Сите модели |
messages | array | Задолжително. Разговорот, прво најстарата порака. Видете Пораки подолу. | Сите модели | |
stream | boolean | false | true го испраќа одговорот како server-sent events додека се пишува. | Сите модели |
max_tokens | integer | 4096 | Горна граница на одговорот, во токени. Вредност надвор од 1 до 65,536 се поместува во тој опсег. Тоа е и количината што се одвојува од вашето салдо додека барањето трае. Видете Должина на излезот подолу. | Хостирани open-weight модели, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
max_completion_tokens | integer | Исто како max_tokens. Кога се испратени и двете, се користи max_tokens. | Хостирани open-weight модели, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
temperature | number | Температура на семплирање. На хостираните open-weight модели стандардната вредност е 1, а вредностите се држат помеѓу 0 и 2. | Хостирани open-weight модели, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | 0.95 | Nucleus семплирање. Вредностите се држат помеѓу 0 и 1. | Хостирани open-weight модели |
seed | integer | Seed на семплерот, кој било цел број. Без него, seed-от се изведува од моделот и разговорот, па исто барање испратено двапати користи ист seed. | Хостирани open-weight модели | |
stop | string | array | Стринг или низа од стрингови. Се користат до 4. Одговорот завршува пред првиот што ќе се појави; самиот стоп текст не се враќа. | Хостирани open-weight модели | |
reasoning_effort | string | high | Колку моделот размислува пред да одговори: off, low, medium или high. none и minimal значат off, default значи medium, max значи high. Секоја друга вредност враќа 400. | Хостирани open-weight модели |
reasoning | object | Истата поставка во облик на објект: {"effort": "low"}. Кога се испратени и двете, се користи reasoning_effort. | Хостирани open-weight модели | |
tools | array | Функциите што моделот може да ги повика, секоја како {"type": "function", "function": {"name", "description", "parameters"}}. Повиците на моделот се враќаат во tool_calls; вашиот код ги извршува. | Сите модели | |
tool_choice | string | object | auto | "auto" му дозволува на моделот да одлучи. "required" го тера да повика алатка. {"type": "function", "function": {"name": "…"}} го тера да ја повика таа алатка. | Хостирани open-weight модели |
response_format | object | {"type": "json_object"} за JSON одговор, или {"type": "json_schema", "json_schema": {…}} за одговор што ја следи вашата schema. | Сите Shannon нивоа; хостирани open-weight модели како што е наведено по ид | |
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, а streaming секогаш завршува со употреба.
Поле со погрешен JSON тип, на пример "max_tokens": "100", враќа 422. Исто и барање без messages.
Алатките, структурираниот излез, reasoning-от и веб пребарувањето имаат секој своја страница: Повик на функции, Структурирани излези, Напор на reasoning, Вградено веб пребарување.
Барање со опции
Ова барање поставува порака system, полиња за семплирање и напор на reasoning. Користи хостиран 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"
}' Одговорот има ист облик како погоре. Неговата usage додава две подробности на хостираните open-weight модели: prompt токените прочитани од кешот и токените потрошени на 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 | Одговорот запира кога ќе ја достигне границата. Streaming-от потоа завршува со finish_reason length. |
| Хостирани open-weight модели | Текстот на одговорот запира на max_tokens. Reasoning-от не се брои во него. Вредности под 256 важат како 256. |
Без max_tokens или max_completion_tokens, вредноста е 4,096. На shannon-coder-1 е 65,536.
Пораки
Секоја порака е објект со role и content. content е стринг или низа од делови кога пораката носи повеќе од текст.
| Улога | Опис | Го применуваат |
|---|---|---|
system | Упатства за моделот. Ставете ја прва. На нивоата на Shannon се користи првата порака system. | Хостирани open-weight модели, shannon-1.6-*, shannon-2-*, shannon-coder-1 |
developer | Се чита како system. | Хостирани open-weight модели |
user | Што прашувате. На нивоата на Shannon последната порака user е prompt-от, а пораките пред неа се историјата. | Сите модели |
assistant | Претходни одговори на моделот. Задржете ги неговите tool_calls кога по нив испраќате резултат од алатка. | Сите модели |
tool | Резултатот од повик на алатка: tool_call_id го содржи ид-то на повикот, а content резултатот како стринг. | Сите модели |
Со ид од семејството Shannon 3, ставете ги упатствата што мора да важат во пораката user.
На нивоата на Shannon барање без кориснички текст и без tools враќа 400 No user message provided.
Делови на содржина
| Дел | Опис | Достапно на |
|---|---|---|
{"type": "text", "text": "…"} | Обичен текст. | Сите модели |
{"type": "image_url", "image_url": {"url": "…"}} | Слика, како data: URL со base64 содржина или како http(s) URL. | Семејството Shannon 3, shannon-1.6-lite, shannon-1.6-pro и хостираните 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 | Каноничниот ид на моделот што одговорил. Може да се разликува во пишувањето од ид-то што сте го испратиле. |
choices | array | Секогаш точно еден choice, со index 0. |
choices[0].message.role | string | Секогаш assistant. |
choices[0].message.content | string | null | Текстот на одговорот. Со tool_calls е null на нивоата на Shannon; хостираните open-weight модели можат да испратат текст покрај повиците. |
choices[0].message.reasoning_content | string | null | Reasoning-от што моделот го напишал пред одговорот, или null кога го нема. |
choices[0].message.tool_calls | array | Присутно само кога моделот повикува алатки. Секој запис има id, type function и function со name и arguments како JSON стринг. |
choices[0].message.annotations | array | Само на барање со web_search: true чие пребарување нашло нешто. По еден url_citation за секој извор што го именува некоја ознака во content, со url, title, start_index и end_index (позицијата на ознаката, броена во знаци, крајот не е вклучен). |
choices[0].finish_reason | string | Зошто завршил одговорот. Видете Причини за завршување. |
usage | object | Токените на барањето. Видете Употреба. |
sources | array | Само на барање со web_search: true чие пребарување нашло нешто: резултатите што му биле дадени на моделот, секој со index, title и url. [1] во одговорот е записот со index 1. |
Причини за завршување
| finish_reason | Опис |
|---|---|
stop | Моделот го завршил својот одговор, или се појавил стринг од stop. |
tool_calls | Моделот повикува една или повеќе алатки. Извршете ги и испратете ги резултатите во пораки tool. |
length | Одговорот е пресечен на границата за излез. Се пријавува во streaming-ите на shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 и семејството Shannon 3. |
Одговор без streaming пријавува stop или tool_calls.
Употреба
| Поле | Тип | Опис | Достапно на |
|---|---|---|---|
usage.prompt_tokens | integer | Влезни токени. | Сите модели |
usage.completion_tokens | integer | Излезни токени: reasoning, одговор и повици на алатки заедно. | Сите модели |
usage.total_tokens | integer | prompt_tokens плус completion_tokens. | Сите модели |
usage.prompt_tokens_details.cached_tokens | integer | Делот од prompt_tokens што е прочитан од prompt кешот. | Хостирани open-weight модели |
usage.completion_tokens_details.reasoning_tokens | integer | Делот од completion_tokens потрошен на reasoning. | Хостирани open-weight модели |
На хостираните open-weight модели, prompt_tokens се вашите пораки и дефиниции на алатки избројани со сопствениот токенизатор на моделот, плус токените на сликите. Endpoint-ите за броење токени го враќаат истиот број пред да испратите. Броење токени
На нивоата на Shannon, prompt_tokens брои сè што моделот го прочитал за да го напише одговорот, па е поголем од самиот текст на вашите пораки.
Streaming
Со stream поставено на true одговорот пристигнува како настани chat.completion.chunk и завршува со data: [DONE]. Последниот дел пред него ги носи finish_reason и usage; не се потребни stream_options. Облиците на деловите, keep-alive редовите и грешките во streaming имаат своја страница. Стриминг
Грешки
Грешката е JSON објект со член error. Проверките се извршуваат по овој редослед: API клуч, тело на барање, ид на модел, па салдо. Табелата го наведува она што овој 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 не е објавен ид. |
400 | invalid_request_error | No user message provided | Нивоа на Shannon: барањето нема кориснички текст и нема tools. |
400 | invalid_request_error | <id> does not accept image input | Дел со слика е испратен до хостиран open-weight модел без слика на влез. |
400 | invalid_request_error | <id> does not accept response_format | response_format е испратен до хостиран 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 и хостираните open-weight модели. |