Перейти до вмісту
Швидкий старт

Швидкий старт

Зробіть перший запит: отримайте ключ, надішліть одне повідомлення й прочитайте відповідь. API розмовляє форматами OpenAI та Anthropic, тож SDK, який ви вже використовуєте, працює після зміни базового URL і ключа.

1. Отримайте ключ

Кожен обліковий запис має один API-ключ. Увійдіть, відкрийте Keys & usage і скопіюйте його. Ключ працює на кожному ендпоінті та з кожною моделлю. Ключі та використання

2. Спрямуйте клієнт на API

Усі ендпоінти розташовані під одним базовим URL. SDK OpenAI приймає його з /v1 наприкінці; SDK Anthropic — без нього, бо /v1/messages він додає сам.

Клієнт Базовий URL
SDK OpenAI та клієнти, сумісні з OpenAI https://api.shannon-ai.com/v1
SDK Anthropic https://api.shannon-ai.com

Три ендпоінти створюють текст. Вони доходять до тих самих моделей; обирайте той, формат якого вже використовує ваш код.

Ендпоінт Формат
POST /v1/chat/completions OpenAI Chat Completions
POST /v1/messages Anthropic Messages
POST /v1/responses OpenAI Responses

3. Надішліть перший запит

Надішліть одне повідомлення user до shannon-3 на ендпоінті Chat Completions. Замініть YOUR_API_KEY на ваш ключ.

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": "Hello, Shannon!"}
    ],
    max_tokens=1024
)

print(response.choices[0].message.content)
Поле Тип За замовчуванням Опис
model string Id моделі, що відповідає. Id перелічено на Models & pricing.
messages array Розмова на цей момент: об'єкти з role і content. Останнє повідомлення user — це промпт. Обов'язкове.
max_tokens integer 4096 Бюджет виводу запиту, від 1 до 65,536. Запит резервує цю суму з вашого балансу й тарифікується за те, що справді використав.
stream boolean false true надсилає відповідь частинами в міру її написання.

Тіло запиту — JSON, і потрібен заголовок Content-Type: application/json. Повний список полів — на сторінці ендпоінта. Chat Completions

Відповідь

Виклик без stream повертає один JSON-об'єкт, коли відповідь завершена. Тексти й числа нижче — приклади.

200 JSON
{
  "id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
  "object": "chat.completion",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello! What would you like to work on?",
        "reasoning_content": "A greeting. A short, friendly reply fits."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1386,
    "completion_tokens": 74,
    "total_tokens": 1460
  }
}
Поле Тип Опис
id string chatcmpl- і далі 32 шістнадцяткові символи.
object string Завжди chat.completion.
created integer Час відповіді в секундах Unix.
model string Опублікований id моделі, що відповіла, також коли ви надіслали псевдонім або інше написання.
choices array Завжди один запис, з index 0.
choices[0].message.role string Завжди assistant.
choices[0].message.content string | null Відповідь. Може бути null, коли відповідь містить tool_calls.
choices[0].message.reasoning_content string | null Міркування моделі перед відповіддю або null, якщо їх немає.
choices[0].message.tool_calls array Є лише тоді, коли модель викликає один з оголошених вами інструментів.
choices[0].finish_reason string stop для відповіді, tool_calls, коли модель викликає інструмент.
usage.prompt_tokens integer Токени, які модель прочитала для цієї відповіді. На shannon-2-* і сімействі Shannon 3 їх може бути більше, ніж тексту, який ви надіслали.
usage.completion_tokens integer Токени, які написала модель.
usage.total_tokens integer Загальна кількість. Вартість моделі Shannon обчислюється з цього числа.
  • usage містить кількість токенів, а не гроші. Що виклик забрав із вашого балансу, показано для кожного запиту на Keys & usage; як це обчислюється, описано на Limits and balance. Ліміти та баланс
  • Кожна відповідь, також помилка й стрім, має заголовок x-request-id. Якщо ваш запит містить заголовок x-request-id, повертається його значення; інакше значення — 12 шістнадцяткових символів. Зберігайте його у своїх логах: воно називає саме цей запит.

Той самий виклик як стрім

Задайте stream у true, щоб читати відповідь у міру її написання. Усе інше в запиті лишається без змін.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1"
)

stream = client.chat.completions.create(
    model="shannon-3",
    messages=[
        {"role": "user", "content": "Hello, Shannon!"}
    ],
    max_tokens=1024,
    stream=True
)

for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)

Кожен кадр стріму — це один рядок, що починається з data: і містить JSON-об'єкт. Один кадр, виведений у кількох рядках:

Один кадр
{
  "id": "chatcmpl-9b2f6c1e4a7d4f0f8a3c5d2e1b6a7c90",
  "object": "chat.completion.chunk",
  "created": 1791590400,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "delta": {
        "content": "Hello! "
      },
      "finish_reason": null
    }
  ]
}
Кадри за порядком delta finish_reason
Поки модель міркує. Нуль або більше кадрів. {"reasoning_content": "…"} null
Відповідь частинами. Нуль або більше кадрів. {"content": "…"} null
Останній кадр JSON. Він також містить usage; просити про це не потрібно. {} "stop"
Кінець стріму: рядок data: [DONE].
  • Відповідь має статус 200 і content-type: text/event-stream. Кожен кадр — це рядок data: <json> і порожній рядок після нього.
  • Рядок : ping надходить кожні 15 секунд. Це коментар, що тримає з'єднання відкритим; клієнти SSE його пропускають.
  • Збій після відкриття стріму надходить як кадр data: {"error": {…}}. Статус залишається 200, тож перевіряйте кадри.

Стримінг

Якщо виклик не вдався

Помилка — це JSON-об'єкт з error, що містить type і message. Це відповіді, які перший виклик зустрічає найчастіше.

Статус Тип Повідомлення Що це означає
401 authentication_error Missing authentication Жоден ключ не дійшов до API. Надішліть Authorization: Bearer і далі ваш ключ.
401 authentication_error Invalid API key Ключ не є поточним ключем жодного облікового запису. Скопіюйте його знову з Keys & usage.
400 invalid_request_error unknown model: <id> model не є опублікованим id. Використайте id з Models & pricing.
422 invalid_request_error Failed to deserialize the JSON body into the target type… Поле має неправильний тип JSON або бракує messages.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan Бюджет виводу запиту не вміщується у ваш баланс.

Обробка помилок

Куди йти далі

  • Моделі та ціни — Виберіть модель: id, контекстні вікна та ціни.
  • Chat Completions — Кожне поле запиту, поле відповіді та подія стріму ендпоінта, який ви викликали.
  • Стримінг — Кадри стріму, рядки keep-alive і помилки всередині стріму.
  • Виклик функцій — Дозвольте моделі викликати ваші функції.
  • Ліміти та баланс — Що запит резервує та скільки коштує, і скільки запитів можна надсилати.
  • Playground — Пробуйте запити в браузері зі своїм ключем.