Мазмунга өтүү
Anthropic

Anthropic

POST /v1/messages Anthropic Messages форматындагы сурамды кабыл алып, ошол эле форматта жооп берет, стриминг менен же стримингсиз. Аны Anthropic SDK менен жана ага негизделген куралдар менен, мисалы Claude Code менен колдонуңуз: base URL'ди коюңуз, Shannon API ачкычыңызды колдонуңуз жана Shannon модель id'син көрсөтүңүз.

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

Anthropic SDK'ны Shannon base URL'ине багыттаңыз. 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 боюнча табыңыз: модель reasoning жүргүзсө, биринчи блок 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 Милдеттүү эмес. Сурам үчүн өзүңүздүн id'ңиз. Ал жоопто өзгөрүүсүз кайтып келет; болбосо жоопто 12 он алтылык белгиден турган id болот.

Сурам талаалары

Милдеттүү талаа — messages гана. Колдонгон мамычасы талаа жоопту өзгөрткөн моделдерди атайт. Хостингдеги ачык салмактуу моделдер — модель тизмесиндеги он эки id; Shannon 3 үй-бүлөсү — shannon-3, shannon-3-pro, shannon-3.1 жана shannon-3.1-pro. Моделдер жана баалар

Талаа Түрү Демейки Сүрөттөмө Колдонгон
model string shannon-1.6-lite Модель тизмесиндеги Shannon модель id'си. Аны ар бир сурам менен жөнөтүңүз. Регистр эске алынбайт. Башка ар кандай ат 400 unknown model кайтарат, андыктан өз модель аттарын жөнөткөн курал Shannon id'сине коюлушу керек. Бардык моделдер
messages array Милдеттүү. Сүйлөшүү, эң эски билдирүүдөн баштап, user жана assistant ролдору менен. Төмөндөгү «Билдирүүлөр жана мазмун блоктору» бөлүмүн караңыз. Бардык моделдер
system string | array Модель үчүн нускамалар: сап же текст блокторунун массиви. Төмөндөгү «Система промпту» бөлүмүн караңыз. Хостингдеги ачык салмактуу моделдер, shannon-1.6-*, shannon-2-*, shannon-coder-1
max_tokens integer 4096 Жооптун токендердеги жогорку чеги. Бул endpoint'те милдеттүү эмес; Anthropic SDK аны ар дайым жөнөтөт. 1ден 65,536го чейинки диапазондон тышкаркы маани ошол диапазонго келтирилет. Сурам иштеп жатканда балансыңыздан бөлүп коюлган сумма да ушул. Хостингдеги ачык салмактуу моделдер, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
stream boolean false true жоопту server-sent events катары жөнөтөт. Төмөндөгү «Стриминг» бөлүмүн караңыз. Бардык моделдер
temperature number Сэмплинг температурасы. Хостингдеги ачык салмактуу моделдерде маанилер 0 менен 2 ортосунда кармалат. Хостингдеги ачык салмактуу моделдер, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number Nucleus сэмплинги. Хостингдеги ачык салмактуу моделдер
stop_sequences array 4кө чейин сап. Жооп пайда болгон биринчисинен мурун аяктайт. stop_reason end_turn бойдон калат. Хостингдеги ачык салмактуу моделдер
tools array Модель чакыра турган куралдар, ар бири {"name", "description", "input_schema"} түрүндө. Төмөндөгү «Куралдар» бөлүмүн караңыз. Бардык моделдер
tool_choice object {"type": "auto"} моделге өзү чечүүгө мүмкүнчүлүк берет, {"type": "any"} аны курал чакырууга мажбурлайт, {"type": "tool", "name": "…"} аны так ошол куралды чакырууга мажбурлайт. Хостингдеги ачык салмактуу моделдер
thinking object Модель жооп берерден мурун канчалык reasoning жүргүзөрү. Төмөндөгү «Ойлонуу» бөлүмүн караңыз. Хостингдеги ачык салмактуу моделдер
web_search boolean false Форматка Shannon кошкон мүмкүнчүлүк: true модельге жооп берерден мурун веб-издөөгө уруксат берет. shannon-1.6-*, shannon-2-*, Shannon 3 үй-бүлөсү

max_tokens болбосо, мааниси 4,096, ал эми shannon-coder-1де 65,536.

Блоктордогу metadata, top_k, service_tier жана cache_control белгилери кабыл алынат, ошондо учурдагы клиент коду өзгөрүүсүз иштейт. Алар жоопту өзгөртпөйт; хостингдеги ачык салмактуу моделдерде промпт кэштөө автоматтык.

Схемага ылайык JSON жооп Chat Completions'та response_format менен, Responses'та text.format менен суралат. Түзүмдүү чыгыштар

Система промпту жана ойлонуу менен сурам

Бул сурам система промптун, ойлонуу бюджетин, температураны жана токтотуу ырааттуулугун жөнөтөт. Ал хостингдеги ачык салмактуу модельди колдонот, ал булардын баарын колдонот.

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)

Хостингдеги ачык салмактуу моделдерде usage промпт кэшинен окулган токендерди башка кириш токендеринен өзүнчө көрсөтөт.

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

Система промпту

system — сап же [{"type": "text", "text": "…"}] түрүндөгү текст блокторунун массиви. Блоктордун тексттери сап үзгүчтөр менен бириктирилет.

Аны хостингдеги ачык салмактуу моделдер, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro жана shannon-coder-1 колдонот. Shannon 3 үй-бүлөсүнүн id'си менен сөзсүз аткарылышы керек нускамаларды колдонуучу билдирүүсүнө жазыңыз.

Билдирүүлөр жана мазмун блоктору

Билдирүүдө 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 жана сүрөттү киришке колдой турган хостингдеги ачык салмактуу моделдер
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} user билдирүүсүндөгү документ (PDF, Word, PowerPoint же Excel), 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 талаасын 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 Жогорку аракет.

Reasoning жүргүзгөн модель аны текст алдында {"type": "thinking", "thinking": "…"} блогу катары кайтарат. Reasoning жүргүзгөн 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"} Модель куралдардын бирин чакырышы керек. Хостингдеги ачык салмактуу моделдер
{"type": "tool", "name": "…"} Модель аталган куралды чакырышы керек. Хостингдеги ачык салмактуу моделдер

Жалаң input_schema бар куралдар гана окулат. Веб-издөө бул endpoint'те курал эмес: web_search талаасын коюңуз.

Курал цикли өз бетинде толук сүрөттөлгөн. Функция чакыруу

Жооп

Талаа Түрү Сүрөттөмө Жөнөткөн
id string msg_ жана андан кийин 32 он алтылык белги. Бардык моделдер
type string Ар дайым message. Бардык моделдер
role string Ар дайым assistant. Бардык моделдер
model string Жооп берген модельдин канондук id'си. Бардык моделдер
content array Жооптун блоктору ушул тартипте: модель reasoning жүргүзсө thinking, text, андан кийин ар бир курал чалуусуна бирден tool_use. Бардык моделдер
stop_reason string Жооп эмне үчүн аяктады. Төмөндөгү маанилерди караңыз. Бардык моделдер
usage object input_tokens жана output_tokens. Бардык моделдер
sources array Издөөсү бир нерсе тапкан, web_search: true менен жөнөтүлгөн сурамда гана: моделге берилген натыйжалар, ар бири index, title жана url менен. Жооптогу [1] — index 1 болгон жазуу. Стримде ал message_delta окуясы менен келет. shannon-1.6-*, shannon-2-*, Shannon 3 үй-бүлөсү
usage.cache_read_input_tokens integer cache_read_input_tokens — промптун кэштен окулган бөлүгү; input_tokens — калган бөлүгү. cache_creation_input_tokens ар дайым 0. Хостингдеги ачык салмактуу моделдер

Жооп блоктору

Блок Сүрөттөмө
{"type": "thinking", "thinking": "…"} Модельдин reasoning'и. 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, стримдерде

Стриминг

Server-sent events үчүн stream параметрин true кылыңыз. Ар бир фреймде окуянын аты бар event: сабы жана ошол атты type талаасында кайталаган JSON объекти бар data: сабы болот. 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 id, ролду, модельди, бош content'ти жана нөлдөн башталган usage'ти камтыйт.
content_block_start index, content_block Блок ачылат. content_block — бош text же thinking блок, же id жана name менен tool_use блок.
content_block_delta index, delta {"type": "thinking_delta", "thinking"} thinking блогу үчүн reasoning'дин бир бөлүгү.
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 боюнча номерленет жана бир блок аяктагандан кийин гана кийинкиси ачылат. Ар бир блокту номери боюнча эмес, түрү боюнча окуңуз: стрим алгач бош 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 {"type": "ping"} маалыматы бар ping окуясы, ар 15 секундда.
Хостингдеги ачык салмактуу моделдер Модель иштеп жатканда ар 15 секундда : keepalive комментарий сабы.

Ката кеткен стрим

Стрим башталгандан кийинки ката — ката жоопундагыдай эле денеси бар 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 модель id'си эмес.
400 invalid_request_error No user message provided Shannon деңгээлдери: сурамда колдонуучу тексти да, tools да жок.
400 invalid_request_error <id> does not accept image input Сүрөт киришин колдобогон хостингдеги ачык салмактуу моделге сүрөт жөнөтүлдү.
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: планыңыздын учурдагы 4 сааттык терезедеги Shannon Coder чалуулары түгөндү.
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} кайтарат: сурам үчүн эсептелчү кириш токендеринин саны. Ал хостингдеги ачык салмактуу моделдер үчүн иштейт, акысыз жана 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'и жана чектөөлөр сүрөттөлгөн. Токен саноо