Перейти до вмісту
Chat Completions

Chat Completions

POST /v1/chat/completions приймає розмову та повертає наступне повідомлення моделі у форматі OpenAI Chat Completions. Використовуйте його з будь-якого SDK від OpenAI або через звичайний 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)

Відповідь — це один 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-ключ. Замість нього на кожному ендпоінті приймається x-api-key: YOUR_API_KEY.
Content-Type application/json Обов'язковий. Будь-яке інше значення повертає 415.
x-request-id Необов'язковий. Ваш власний id запиту. Він повертається у відповіді без змін.

Заголовки відповіді

Заголовок Опис
x-request-id У кожній відповіді, включно з помилками та стрімами: значення, яке ви надіслали, або 12 шістнадцяткових символів, якщо ви нічого не надсилали. Наводьте його, повідомляючи про проблему.
content-type application/json або text/event-stream, коли stream дорівнює true.

Поля запиту

Обов'язкове лише messages. Стовпець Застосовують називає моделі, на яких поле змінює відповідь. Хостовані 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 зводиться до цього діапазону. Це також сума, яку резервують на вашому балансі, поки виконується запит. Див. нижче «Довжина виводу». Хостовані 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": {…}} для відповіді за вашою схемою. Усі рівні Shannon; хостовані open-weight моделі, як указано для кожного 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 теж.

Інструменти, структурований вивід, міркування та веб-пошук мають власні сторінки: Виклик функцій, Структуровані відповіді, Зусилля міркування, Вбудований веб‑пошук.

Запит із параметрами

Цей запит задає системне повідомлення, поля семплювання та зусилля міркування. Він використовує хостовану 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 моделях додає дві деталі: токени промпту, прочитані з кешу, та токени, витрачені на міркування.

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 на цьому ендпоінті рахується інакше: кожен запит — це один із викликів Shannon Coder за вашим планом, і для нього токени не резервуються. Ліміти та баланс

По-друге, він обмежує довжину відповіді на цих моделях:

Моделі Що робить max_tokens
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Відповідь зупиняється, коли досягає ліміту. Тоді стрім завершується з finish_reason length.
Хостовані open-weight моделі Текст відповіді зупиняється на max_tokens. Міркування в нього не зараховуються. Значення менші за 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 — це промпт, а повідомлення перед ним — історія. Усі моделі
assistant Попередні відповіді моделі. Зберігайте її tool_calls, коли надсилаєте після них результат інструмента. Усі моделі
tool Результат виклику інструмента: tool_call_id містить id виклику, а content — результат як рядок. Усі моделі

Для id із сімейства Shannon 3 інструкції, які мають виконуватися, розміщуйте в повідомленні user.

На рівнях Shannon запит без тексту користувача й без tools повертає 400 No user message provided.

Частини вмісту

Частина Опис Доступно на
{"type": "text", "text": "…"} Звичайний текст. Усі моделі
{"type": "image_url", "image_url": {"url": "…"}} Зображення як URL data: із вмістом base64 або як URL http(s). Сімейство 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 Канонічний id моделі, що відповіла. Його написання може відрізнятися від id, який ви надіслали.
choices array Завжди рівно один варіант (choice) з index 0.
choices[0].message.role string Завжди assistant.
choices[0].message.content string | null Текст відповіді. З tool_calls на рівнях Shannon він дорівнює null; хостовані open-weight моделі можуть надсилати текст поряд із викликами.
choices[0].message.reasoning_content string | null Міркування, які модель написала перед відповіддю, або 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 Відповідь обрізано на межі виводу. Повідомляється у стрімах shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 і сімейства Shannon 3.

Відповідь без стрімінгу повідомляє stop або tool_calls.

Використання

Поле Тип Опис Доступно на
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, прочитана з кешу запитів. Хостовані open-weight моделі
usage.completion_tokens_details.reasoning_tokens integer Частина completion_tokens, витрачена на міркування. Хостовані open-weight моделі

На хостованих open-weight моделях prompt_tokens — це ваші повідомлення та визначення інструментів, пораховані власним токенізатором моделі, плюс токени будь-яких зображень. Ендпоінти підрахунку токенів повертають те саме число до надсилання. Підрахунок токенів

На рівнях Shannon prompt_tokens рахує все, що модель прочитала, щоб написати відповідь, тому воно більше за один лише текст ваших повідомлень.

Стрімінг

Якщо stream встановлено в true, відповідь надходить як події chat.completion.chunk і закінчується data: [DONE]. Останній фрагмент перед ним містить finish_reason і usage; stream_options не потрібні. Форми фрагментів, keep-alive рядки та помилки всередині стріму мають власну сторінку. Стримінг

Помилки

Помилка — це JSON-об'єкт із членом error. Перевірки виконуються в такому порядку: API-ключ, тіло запиту, id моделі, потім баланс. У таблиці наведено те, що цей ендпоінт повертає найчастіше. Повний перелік із вказівками, що повторювати, має окрему сторінку. Обробка помилок

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 не є опублікованим id.
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. Захист від флуду: понад 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 моделей.