Към съдържанието
Преглед

Преглед

Картата на API: всеки ендпоинт, как изглеждат заявката и грешката, как се плащат извикванията и какво да знаете, когато идвате от SDK на OpenAI или Anthropic.

Ендпоинти

Всеки ендпоинт е под един базов URL и се обслужва през HTTPS.

Базов URL
https://api.shannon-ai.com
Ендпоинт Формат За какво служи
POST /v1/chat/completions OpenAI Chat Completions Изпратете разговор и получете следващия отговор. Със или без стрийминг.
POST /v1/messages Anthropic Messages Същото, във формата на заявките и отговорите на SDK на Anthropic.
POST /v1/responses OpenAI Responses Същото, във формата на Responses. Ендпоинтът не пази състояние: изпращайте разговора с всяка заявка.
GET /v1/models Списък с модели на OpenAI Изброява моделите с контекстен прозорец, цени и възможности. Не изисква ключ.
POST /v1/tokenize Shannon API Пребройте токените на текст или на чат заявка за хостван open-weight модел. Безплатно.
POST /v1/messages/count_tokens Броене на токени на Anthropic Пребройте входните токени на заявка Messages за хостван open-weight модел. Безплатно.

Трите ендпоинта, които създават текст, стигат до едни и същи модели. Изберете този, чийто формат вашият код вече използва.

Основи на заявките

Хедър Описание
Authorization: Bearer <key> Вашият API ключ. Задължителен на всеки ендпоинт освен GET /v1/models, освен ако не изпратите x-api-key.
x-api-key: <key> Същият ключ в хедъра, който SDK на Anthropic изпращат. Чете се на всеки ендпоинт.
Content-Type: application/json Задължителен при всяка POST. Без него отговорът е 415.
x-request-id: <your id> По избор. Вашето собствено id на заявката; връща се в хедъра на отговора x-request-id. Без него API създава такова от 12 шестнадесетични знака.
  • Тялото на всяка POST заявка е един JSON обект, до 32 MiB.
  • Поле, което API не познава, не причинява грешка и няма ефект. Заявка, написана за друг доставчик, не се проваля заради допълнително поле.
  • Познато поле с грешен JSON тип или липсващо задължително поле получава отговор 422. Тяло, което не е валиден JSON, получава отговор 400.
  • model е едно от id-тата на Models & pricing. Главните и малките букви нямат значение.

Отговорът е JSON или стрийм от server-sent events, когато заявката задава stream на true. Всеки ендпоинт отговаря в собствения си формат. Всеки отговор има хедъра x-request-id.

През какво минава една заявка

Заявката се проверява в строг ред, преди да се изпълни моделът. Първата проверка, която не успее, отговаря, така че 401 още не Ви казва нищо за тялото.

Формат на грешките

Грешката е JSON обект с error, който съдържа type и message. /v1/messages я обвива така, както SDK на Anthropic очакват; всеки друг път използва формата на OpenAI.

{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: gpt-4o"
  }
}
  • Четете type и message. code и param присъстват само при някои грешки: третирайте ги като по избор. param винаги е null.
  • След като стрийм е започнал, статусът вече е 200. Тогава неуспехът пристига като кадър за грешка в стрийма.
  • Всеки отговор с грешка носи хедъра x-request-id.
Статус Тип Кога
400 invalid_request_error Тялото не е валиден JSON, id-то на модела е непознато или моделът не приема вид вход, който сте изпратили.
401 authentication_error Ключът липсва или не е валиден.
404 not_found_error Пътят не съществува.
405 api_error Пътят съществува, но методът е грешен.
413 invalid_request_error Тялото е по-голямо от 32 MiB.
415 invalid_request_error Content-Type не е application/json.
422 invalid_request_error Поле има грешен JSON тип или липсва задължително поле.
429 rate_limit_error Балансът не покрива заявката, в рамките на минута са пристигнали повече от 120 заявки, извикванията на Shannon Coder за прозореца са изчерпани или моделът е зает. Съобщението казва кое от тях е.
5xx api_error Статус 500, 502, 503 или 504: заявката е била валидна и не е могла да получи отговор. Изпратете я отново. 500 може да носи типа server_error.

Обработка на грешки

Фактуриране и баланс

  • Има един баланс на акаунт и чатът и API го споделят: първо днешният лимит на плана, после закупеният кредит. API няма собствена квота.
  • Заявката резервира своя изходен бюджет (max_tokens, по подразбиране 4,096) и след това се таксува за токените, които действително е използвала, по цената на модела.
  • Всеки отговор докладва броя си токени в usage. Страницата Keys & usage показва баланса и колко е струвала всяка заявка.
  • Всяка заявка се обслужва еднакво. Единственото ограничение на честотата на заявките е защитата от наводняване: 120 заявки в минута на акаунт. Заявките, изпратени паралелно, чакат на опашка.

Ограничения и баланс Модели и цени Keys & usage

Полета, които зависят от модела

Всеки модел приема една и съща заявка. Някои полета имат ефект само при определени модели; таблицата посочва къде. Страниците на ендпоинтите изброяват всяко поле.

Поле Описание Прилага се от
system Инструкции за модела: съобщение system при Chat Completions, system при Messages, instructions при Responses. Хоствани open-weight модели, shannon-1.6-*, shannon-2-*, shannon-coder-1
temperature Температура на семплиране. Хоствани open-weight модели, shannon-1.6-*, shannon-coder-1
top_p Nucleus семплиране. Хоствани open-weight модели
seed Фиксиран seed за семплирането. Хоствани open-weight модели
stop До 4 последователности за спиране. Хоствани open-weight модели
reasoning_effort Колко разсъждава моделът, преди да отговори. reasoning.effort при Responses, thinking при Messages. Хоствани open-weight модели
web_search true позволява на модела да търси в мрежата за тази заявка. Поле на това API, при Chat Completions и Messages. Моделите на Shannon, освен shannon-coder-1
max_tokens Изходният бюджет. При всеки модел той задава сумата, резервирана от баланса Ви. Като ограничение на дължината на отговора: хостваните open-weight модели, shannon-1.6-*, shannon-coder-1

Chat Completions

Ако идвате от SDK на OpenAI

  • Задайте базовия URL на https://api.shannon-ai.com/v1, а ключа на Вашия ключ за Shannon. Тогава извикванията на Chat Completions и Responses работят със SDK такъв, какъвто е.
  • model трябва да е id на Shannon. Име на модел на друг доставчик, например gpt-4o, получава отговор 400 и unknown model.
  • Разсъжденията идват в отделно поле: reasoning_content до content, в съобщението и в делтите на стрийма.
  • Стриймът винаги носи usage в последния си фрагмент, заедно с finish_reason.
  • Извикване на инструмент в стрийм пристига като един фрагмент с пълния низ arguments.
  • Отговорът има един избор.
  • Пътища на API на OpenAI, които не са в таблицата по-горе, например /v1/embeddings, получават отговор 404.

Ако идвате от SDK на Anthropic

  • Задайте базовия URL на https://api.shannon-ai.com, без /v1, а ключа на Вашия ключ за Shannon. SDK го изпраща като x-api-key.
  • model трябва да е id на Shannon.
  • max_tokens е по избор в това API. Стойността му по подразбиране е 4,096.
  • Отговорът съдържа блокове със съдържание от тип thinking, text и tool_use. Първият блок не винаги е текстът: избирайте блоковете по type.
  • stop_reason е end_turn или tool_use. Стрийм на модел на Shannon може да завърши и с max_tokens.
  • anthropic-version и anthropic-beta се приемат, така че SDK работи без промяна. Заявката не се нуждае от тях.
  • Грешките на /v1/messages имат формата на Anthropic: {"type": "error", "error": {…}}.

Инструментите за програмиране, които говорят тези формати, се настройват по същия начин: базов URL, ключ и id на Shannon като модел. CLI инструменти за програмиране