Прескокни до содржината
Chat Completions

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)

Одговорот е еден JSON објект:

200 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)

Одговорот има ист облик како погоре. Неговата usage додава две подробности на хостираните open-weight модели: prompt токените прочитани од кешот и токените потрошени на reasoning.

200 JSON
{
  "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 најчесто го враќа. Целосната листа, со тоа што да се повтори, има своја страница. Ракување со грешки

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Статус Тип Порака Кога
401 authentication_error Missing authentication
Invalid 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 модели.