Прескокни до содржината
Anthropic формат

Anthropic формат

POST /v1/messages прима барање во форматот Anthropic Messages и одговара во истиот формат, со streaming или без. Користете го со Anthropic SDK и со алатки изградени врз него, како Claude Code: поставете го основниот URL, користете го вашиот Shannon API клуч и наведете ид на Shannon модел.

POST https://api.shannon-ai.com/v1/messages

Насочете го Anthropic SDK-то кон основниот URL на Shannon. SDK-то додава /v1/messages и го испраќа вашиот клуч во заглавието x-api-key.

import anthropic

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

message = client.messages.create(
    model="shannon-3",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Say hello in one sentence."}],
)

for block in message.content:
    if block.type == "text":
        print(block.text)

Одговорот е порака чија content е листа од блокови. Блоковите препознајте ги по нивниот type: кога моделот размислувал, првиот блок е thinking, а текстот доаѓа по него.

200 JSON
{
  "id": "msg_5f0c1e7a9b3d4c62a8e1f07d2b46c9a3",
  "type": "message",
  "role": "assistant",
  "model": "shannon-3",
  "content": [
    {
      "type": "thinking",
      "thinking": "The user wants a greeting in one sentence. Keep it short and friendly."
    },
    {
      "type": "text",
      "text": "Hello, it is good to meet you."
    }
  ],
  "stop_reason": "end_turn",
  "usage": {
    "input_tokens": 1184,
    "output_tokens": 46
  }
}

Заглавија

Заглавие Вредност Опис
x-api-key YOUR_API_KEY Вашиот API клуч. Наместо него се прифаќа Authorization: Bearer YOUR_API_KEY.
content-type application/json Задолжително.
anthropic-version 2023-06-01 Се прифаќа, не е задолжително. Anthropic SDK-то испраќа 2023-06-01; одговорот е во ист формат без оглед на вредноста.
anthropic-beta Се прифаќа, не е задолжително.
x-request-id Опционално. Ваш сопствен ид за барањето. Се враќа непроменет во одговорот; без него одговорот носи ид од 12 хексадецимални знаци.

Полиња на барањето

Задолжително е само messages. Колоната Го применуваат ги именува моделите на кои полето го менува одговорот. Хостираните open-weight модели се дванаесетте ид-а од листата на модели; семејството Shannon 3 се shannon-3, shannon-3-pro, shannon-3.1 и shannon-3.1-pro. Модели и цени

Поле Тип Стандардно Опис Го применуваат
model string shannon-1.6-lite ID на Shannon модел од листата на модели. Испратете го со секое барање. Совпаѓањето не прави разлика меѓу големи и мали букви. Секое друго име враќа 400 unknown model, па алатка што испраќа свои имиња на модели мора да се постави на Shannon ид. Сите модели
messages array Задолжително. Разговорот, прво најстарата порака, со улогите user и assistant. Видете Пораки и блокови на содржина подолу. Сите модели
system string | array Упатства за моделот: стринг или низа од текстуални блокови. Видете System prompt подолу. Хостирани open-weight модели, shannon-1.6-*, shannon-2-*, shannon-coder-1
max_tokens integer 4096 Горна граница на одговорот, во токени. Опционално на овој endpoint; Anthropic SDK-то секогаш го испраќа. Вредност надвор од 1 до 65,536 се поместува во тој опсег. Тоа е и количината што се одвојува од вашето салдо додека барањето трае. Хостирани open-weight модели, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
stream boolean false true го испраќа одговорот како server-sent events. Видете Streaming подолу. Сите модели
temperature number Температура на семплирање. На хостираните open-weight модели вредностите се држат помеѓу 0 и 2. Хостирани open-weight модели, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number Nucleus семплирање. Хостирани open-weight модели
stop_sequences array До 4 стринга. Одговорот завршува пред првиот што ќе се појави. stop_reason останува end_turn. Хостирани open-weight модели
tools array Алатките што моделот може да ги повика, секоја како {"name", "description", "input_schema"}. Видете Алатки подолу. Сите модели
tool_choice object {"type": "auto"} му дозволува на моделот да одлучи, {"type": "any"} го тера да повика алатка, {"type": "tool", "name": "…"} го тера да ја повика таа алатка. Хостирани open-weight модели
thinking object Колку моделот размислува пред да одговори. Видете Thinking подолу. Хостирани open-weight модели
web_search boolean false Додаток на Shannon кон форматот: true му дозволува на моделот да пребарува на веб пред да одговори. shannon-1.6-*, shannon-2-*, семејството Shannon 3

Без max_tokens вредноста е 4,096, а 65,536 на shannon-coder-1.

metadata, top_k, service_tier и маркерите cache_control на блоковите се прифаќаат за постоечкиот клиентски код да работи непроменет. Не го менуваат одговорот; prompt caching на хостираните open-weight модели е автоматско.

JSON одговор според schema се бара со response_format на Chat Completions и со text.format на Responses. Структурирани излези

Барање со system prompt и thinking

Ова барање испраќа system prompt, thinking буџет, температура и стоп секвенца. Користи хостиран open-weight модел, кој ги применува сите.

import anthropic

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

message = client.messages.create(
    model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
    max_tokens=4096,
    system="You are a physics teacher. Answer in two sentences.",
    thinking={"type": "enabled", "budget_tokens": 2048},
    temperature=0.3,
    stop_sequences=["\n\n"],
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
)

for block in message.content:
    if block.type == "thinking":
        print("reasoning:", block.thinking)
    elif block.type == "text":
        print("answer:", block.text)
print(message.usage)

На хостираните open-weight модели usage ги пријавува токените прочитани од prompt кешот одделно од останатите влезни токени.

200 JSON
{
  "usage": {
    "input_tokens": 31,
    "cache_read_input_tokens": 0,
    "cache_creation_input_tokens": 0,
    "output_tokens": 62
  }
}

System prompt

system е стринг или низа од текстуални блокови во облик [{"type": "text", "text": "…"}]. Текстовите на блоковите се спојуваат со прекин на ред.

Го применуваат хостираните open-weight модели, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro и shannon-coder-1. Со ид од семејството Shannon 3, ставете ги упатствата што мора да важат во корисничката порака.

Пораки и блокови на содржина

Пораката има role, user или assistant, и content. content е стринг или низа од блокови.

Блок Опис Достапно на
{"type": "text", "text": "…"} Текст. Сите модели
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}
{"type": "image", "source": {"type": "url", "url": "…"}}
Слика во порака user, како base64 или преку URL. Семејството Shannon 3, shannon-1.6-lite, shannon-1.6-pro и хостираните open-weight модели што наведуваат слика како влез
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Документ (PDF, Word, PowerPoint или Excel) во порака user, како base64 или преку URL. Семејството Shannon 3
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} Во порака assistant: повик на алатка што моделот го направил во претходен одговор. Сите модели
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} Во порака user: резултатот од тој повик. content е стринг или список од текстуални блокови. Сите модели

Можете да ја испратите назад content од претходен одговор онака како што е: блоковите text и tool_use се читаат, блоковите thinking се прескокнуваат.

На нивоата на Shannon сликите и документите се читаат од последната порака user. Големините и лимитите имаат своја страница. Слики и датотеки

Thinking

Хостираните open-weight модели го преведуваат thinking во напор на reasoning. Без полето напорот е висок.

Облик budget_tokens Ефект
{"type": "disabled"} Без reasoning. Одговорот нема блок thinking.
{"type": "enabled", "budget_tokens": 2048} ≤ 2,048 Низок напор.
{"type": "enabled", "budget_tokens": 8192} ≤ 8,192 Среден напор.
{"type": "enabled", "budget_tokens": 16000} > 8,192 Висок напор.

Модел што размислува го враќа своето размислување како блок {"type": "thinking", "thinking": "…"} пред текстот. Нивоата на Shannon што размислуваат го испраќаат исто така.

Напорите се опишани на нивна страница. Напор на reasoning

Алатки

Алатката е функција што ја извршува вашиот код. Опишете ја секоја со name, description и input_schema. Кога моделот сака алатка, одговорот содржи блок tool_use, а stop_reason е tool_use.

Дефиниција на алатка во tools:

tools
[
  {
    "name": "get_weather",
    "description": "Current weather for a city.",
    "input_schema": {
      "type": "object",
      "properties": {
        "city": {
          "type": "string"
        }
      },
      "required": [
        "city"
      ]
    }
  }
]

content на одговор што ја повикува:

200 content
[
  {
    "type": "text",
    "text": ""
  },
  {
    "type": "tool_use",
    "id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
    "name": "get_weather",
    "input": {
      "city": "Paris"
    }
  }
]

Извршете ја алатката, па испратете го барањето повторно со повикот и блок tool_result додадени во messages:

messages
[
  {
    "role": "user",
    "content": "What is the weather in Paris?"
  },
  {
    "role": "assistant",
    "content": [
      {
        "type": "tool_use",
        "id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
        "name": "get_weather",
        "input": {
          "city": "Paris"
        }
      }
    ]
  },
  {
    "role": "user",
    "content": [
      {
        "type": "tool_result",
        "tool_use_id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
        "content": "{\"temperature_c\": 18, \"sky\": \"cloudy\"}"
      }
    ]
  }
]

tool_choice

Облик Ефект Го применуваат
{"type": "auto"} Моделот одлучува дали да повика алатка. Ова е стандардно. Сите модели
{"type": "any"} Моделот мора да повика една од алатките. Хостирани open-weight модели
{"type": "tool", "name": "…"} Моделот мора да ја повика наведената алатка. Хостирани open-weight модели

Се читаат само алатки со input_schema. Веб пребарувањето не е алатка на овој endpoint: поставете го полето web_search.

Циклусот на алатки е целосно опишан на своја страница. Повик на функции

Одговорот

Поле Тип Опис Го испраќа
id string msg_ проследено со 32 хексадецимални знаци. Сите модели
type string Секогаш message. Сите модели
role string Секогаш assistant. Сите модели
model string Каноничниот ид на моделот што одговорил. Сите модели
content array Блоковите на одговорот, по овој редослед: thinking кога моделот размислувал, text, па по еден tool_use за секој повик на алатка. Сите модели
stop_reason string Зошто завршил одговорот. Видете ги вредностите подолу. Сите модели
usage object input_tokens и output_tokens. Сите модели
sources array Само на барање со web_search: true чие пребарување нашло нешто: резултатите што му биле дадени на моделот, секој со index, title и url. [1] во одговорот е записот со index 1. Во stream доаѓа со настанот message_delta. shannon-1.6-*, shannon-2-*, семејството Shannon 3
usage.cache_read_input_tokens integer cache_read_input_tokens е делот од prompt-от прочитан од кешот; input_tokens е остатокот. cache_creation_input_tokens е секогаш 0. Хостирани open-weight модели

Блокови на одговорот

Блок Опис
{"type": "thinking", "thinking": "…"} Размислувањето на моделот. Нема член signature.
{"type": "text", "text": "…"} Текстот на одговорот. Може да биде празен кога одговорот е повик на алатка.
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} Повик на алатка. input е JSON објект. Испратете го резултатот назад со ист id.

stop_reason

stop_reason Опис Го испраќа
end_turn Моделот го завршил својот одговор, или се појавила една од вашите stop_sequences. Сите модели
tool_use Одговорот содржи еден или повеќе повици на алатки. Сите модели
max_tokens Одговорот е пресечен на границата за излез. Семејството Shannon 3, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, во потоци

Streaming

Поставете stream на true за server-sent events. Секој фрејм има ред event: со името на настанот и ред data: со JSON објект што го повторува името во type. Помошните streaming функции на Anthropic SDK ги читаат овие настани наместо вас:

import anthropic

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

with client.messages.stream(
    model="shannon-3",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Explain server-sent events in three sentences."}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)
    message = stream.get_final_message()

print()
print(message.stop_reason, message.usage)

Настаните, по редот по кој пристигнуваат:

Настан Податоци Кога
message_start message Секогаш прв. message ги содржи ид-то, улогата, моделот, празна content и usage што започнува од нула.
content_block_start index, content_block Се отвора блок. content_block е празен блок text или thinking, или блок tool_use со неговите id и name.
content_block_delta index, delta {"type": "thinking_delta", "thinking"} Парче од reasoning-от, за блок thinking.
content_block_delta index, delta {"type": "text_delta", "text"} Парче од одговорот, за блок text.
content_block_delta index, delta {"type": "input_json_delta", "partial_json"} Аргументите на повик на алатка, целосни во една делта, за блок tool_use.
content_block_stop index Блокот со овој index е завршен.
message_delta delta {stop_reason, stop_sequence}, usage Крајот на одговорот: delta.stop_reason и usage на барањето.
message_stop Секогаш последен.

Блоковите се нумерирани со index по редот на отворање, а еден блок е завршен пред да се отвори следниот. Читајте го секој блок по неговиот тип, а не по бројот: streaming може прво да отвори празен блок text, потоа блок thinking, а одговорот да го достави во подоцнежен блок text.

200 text/event-stream
event: message_start
data: {"type":"message_start","message":{"id":"msg_5f0c…","type":"message","role":"assistant","model":"shannon-3","content":[],"usage":{"input_tokens":0,"output_tokens":0}}}

event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}

event: content_block_stop
data: {"type":"content_block_stop","index":0}

event: content_block_start
data: {"type":"content_block_start","index":1,"content_block":{"type":"thinking","thinking":""}}

event: content_block_delta
data: {"type":"content_block_delta","index":1,"delta":{"type":"thinking_delta","thinking":"Three sentences: what it is, how it is framed, why it is used."}}

event: ping
data: {"type": "ping"}

event: content_block_stop
data: {"type":"content_block_stop","index":1}

event: content_block_start
data: {"type":"content_block_start","index":2,"content_block":{"type":"text","text":""}}

event: content_block_delta
data: {"type":"content_block_delta","index":2,"delta":{"type":"text_delta","text":"Server-sent events let a server push text over one HTTP reply."}}

event: content_block_stop
data: {"type":"content_block_stop","index":2}

event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn","stop_sequence":null},"usage":{"input_tokens":1190,"output_tokens":84}}

event: message_stop
data: {"type":"message_stop"}

Keep-alive

Го испраќа Опис
Семејството Shannon 3, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Настан ping со податоците {"type": "ping"}, на секои 15 секунди.
Хостирани open-weight модели Коментар ред : keepalive, на секои 15 секунди додека моделот работи.

Streaming што не успева

Грешка по започнување на streaming-от е настан error со исто тело како одговор со грешка: {"type": "error", "error": {"type", "message"}}. Завршните настани, message_delta и message_stop, сепак следуваат. Сметајте го одговорот за неуспешен и испратете го барањето повторно.

Грешки

Грешките го користат Anthropic телото на грешка: type е error, а објектот error содржи type и message. Табелата ги наведува грешките што овој endpoint најчесто ги враќа. Целосната листа, со тоа што да се повтори, има своја страница. Ракување со грешки

400 JSON
{
  "type": "error",
  "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 не е ид на Shannon модел.
400 invalid_request_error No user message provided Нивоа на Shannon: барањето нема кориснички текст и нема tools.
400 invalid_request_error <id> does not accept image input Слика е испратена до хостиран open-weight модел без поддршка за слика на влез.
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 барања во една минута на вашата сметка.
429 rate_limit_error Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan shannon-coder-1: повиците на Shannon Coder од вашиот план за тековниот 4-часовен прозорец се искористени.
500 server_error The model backend failed to answer. Please retry. Моделот не даде одговор. Испратете го барањето повторно.
502 api_error The model backend failed to answer. Please retry. Моделот не даде одговор. Испратете го барањето повторно.

Броење токени

POST /v1/messages/count_tokens го прима истото тело како барање за порака (model, system, messages, tools) и враќа {"input_tokens": n}: бројот на влезни токени што би се наплатиле за барањето. Брои за хостираните open-weight модели, бесплатно е и не се брои во flood protection.

import anthropic

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

count = client.messages.count_tokens(
    model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
    system="You are a physics teacher. Answer in two sentences.",
    messages=[{"role": "user", "content": "Why is the sky blue?"}],
)

print(count.input_tokens)

Броењето има своја страница, со endpoint-от за обичен текст и лимитите. Броење токени