Агуулга руу алгасах
Anthropic

Anthropic

POST /v1/messages нь Anthropic Messages форматтай хүсэлт хүлээн авч, streaming-тэй ч, үгүй ч ижил форматаар хариулна. Үүнийг 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 header-ээр илгээнэ.

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
  }
}

Header-ууд

Header Утга Тайлбар
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 заавал шаардлагатай. Хэрэгжүүлэгч багана нь талбар хариултыг өөрчилдөг загваруудыг нэрлэнэ. Hosted open-weight загварууд нь загварын жагсаалтын арван хоёр 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 үүрэгтэй. Доорх Мессеж ба content блок хэсгийг үзнэ үү. Бүх загвар
system string | array Загварт өгөх зааварчилгаа: string эсвэл текст блокуудын массив. Доорх System prompt хэсгийг үзнэ үү. Hosted open-weight загварууд, shannon-1.6-*, shannon-2-*, shannon-coder-1
max_tokens integer 4096 Хариултын дээд хязгаар, токеноор. Энэ endpoint дээр заавал биш; Anthropic SDK үргэлж илгээдэг. 1-ээс 65,536-ийн гаднах утгыг тэр мужид оруулна. Мөн хүсэлт ажиллаж байх хугацаанд таны үлдэгдлээс нөөцлөгдөх хэмжээ юм. Hosted open-weight загварууд, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
stream boolean false true нь хариултыг server-sent events хэлбэрээр илгээнэ. Доорх Streaming хэсгийг үзнэ үү. Бүх загвар
temperature number Sampling temperature. Hosted open-weight загварууд дээр утгыг 0-ээс 2-ын хооронд барина. Hosted open-weight загварууд, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number Nucleus sampling. Hosted open-weight загварууд
stop_sequences array 4 хүртэлх string. Хариулт эхэнд нь гарсан эхний string-ээс өмнө дуусна. stop_reason нь end_turn хэвээр байна. Hosted open-weight загварууд
tools array Загварын дуудаж болох tool-ууд, тус бүр {"name", "description", "input_schema"} хэлбэртэй. Доорх Tools хэсгийг үзнэ үү. Бүх загвар
tool_choice object {"type": "auto"} загвар өөрөө шийднэ, {"type": "any"} tool заавал дуудуулна, {"type": "tool", "name": "…"} тухайн tool-ийг дуудуулна. Hosted open-weight загварууд
thinking object Загвар хариулахаасаа өмнө хэр их reasoning хийхийг заана. Доорх Thinking хэсгийг үзнэ үү. Hosted open-weight загварууд
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 тэмдэглэгээг зөвшөөрдөг тул одоо байгаа клиент код өөрчлөлтгүй ажиллана. Эдгээр нь хариултыг өөрчлөхгүй; hosted open-weight загварууд дээр prompt кэшлэл автомат.

Schema-ийн дагуух JSON хариултыг Chat Completions дээр response_format-аар, Responses дээр text.format-аар хүснэ. Бүтэцтэй гаралт

System prompt болон thinking-тэй хүсэлт

Энэ хүсэлт system prompt, thinking budget, temperature болон stop sequence илгээнэ. Бүгдийг хэрэгжүүлдэг hosted 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)

Hosted 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 нь string, эсвэл [{"type": "text", "text": "…"}] хэлбэрийн текст блокуудын массив. Блокуудын текстийг мөр таслалтаар залгана.

Үүнийг hosted open-weight загварууд, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro болон shannon-coder-1 хэрэгжүүлнэ. Shannon 3 гэр бүлийн id-тай бол заавал мөрдөх зааврыг хэрэглэгчийн мессежид оруулна уу.

Мессеж ба content блокууд

Мессеж нь role (user эсвэл assistant) болон content-той. content нь string эсвэл блокуудын массив байна.

Блок Тайлбар Боломжтой загвар
{"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, мөн зураг оролтыг дэмждэг hosted open-weight загварууд
{"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 мессеж дотор: загварын өмнөх хариулт дахь tool дуудлага. Бүх загвар
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} user мессеж дотор: тухайн дуудлагын үр дүн. content нь string эсвэл текст блокуудын жагсаалт байна. Бүх загвар

Өмнөх хариултын content-ыг яг хэвээр нь буцааж илгээж болно: text болон tool_use блокуудыг уншиж, thinking блокуудыг алгасана.

Shannon түвшингүүдэд зураг болон баримтыг сүүлийн user мессежээс уншина. Хэмжээ, хязгаар нь тусдаа хуудастай. Зураг ба файл

Thinking

Hosted open-weight загварууд thinking-ийг reasoning effort-тэй харгалзуулдаг. Талбаргүй бол effort өндөр байна.

Хэлбэр budget_tokens Үр нөлөө
{"type": "disabled"} Reasoning байхгүй. Хариултад thinking блок байхгүй.
{"type": "enabled", "budget_tokens": 2048} ≤ 2,048 Бага effort.
{"type": "enabled", "budget_tokens": 8192} ≤ 8,192 Дунд effort.
{"type": "enabled", "budget_tokens": 16000} > 8,192 Өндөр effort.

Reasoning хийдэг загвар reasoning-ээ текстийн өмнө {"type": "thinking", "thinking": "…"} блокоор буцаана. Reasoning хийдэг Shannon түвшингүүд мөн адил илгээнэ.

Effort-уудыг тусдаа хуудсанд тайлбарласан. Reasoning effort

Tools

Tool бол таны код ажиллуулдаг функц. Тус бүрийг name, description ба input_schema-аар тодорхойлно. Загвар tool хүссэн үед хариулт tool_use блок агуулж, stop_reason нь tool_use болно.

tools доторх tool тодорхойлолт:

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-оо ажиллуулаад, дуудлага болон 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"} Загвар tool дуудах эсэхээ өөрөө шийднэ. Энэ нь үндсэн утга. Бүх загвар
{"type": "any"} Загвар tool-уудын аль нэгийг заавал дуудна. Hosted open-weight загварууд
{"type": "tool", "name": "…"} Загвар нэрлэсэн tool-ийг заавал дуудна. Hosted open-weight загварууд

Зөвхөн input_schema-тай tool-уудыг уншина. Энэ endpoint дээр вэб хайлт tool биш: web_search талбарыг тохируулна.

Tool давталтыг тусдаа хуудсанд бүрэн тайлбарласан. Функц дуудлага

Хариулт

Талбар Төрөл Тайлбар Илгээгч
id string msg_ араас нь 32 арвантын тэмдэгт. Бүх загвар
type string Үргэлж message. Бүх загвар
role string Үргэлж assistant. Бүх загвар
model string Хариулсан загварын каноник id. Бүх загвар
content array Хариултын блокууд, дараах дарааллаар: загвар reasoning хийсэн бол thinking, text, дараа нь tool дуудлага бүрт нэг 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 event-тэй хамт ирнэ. 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. Hosted open-weight загварууд

Хариултын блокууд

Блок Тайлбар
{"type": "thinking", "thinking": "…"} Загварын reasoning. signature гишүүн байхгүй.
{"type": "text", "text": "…"} Хариултын текст. Хариулт нь tool дуудлага байх үед хоосон байж болно.
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} Tool дуудлага. input нь JSON объект. Үр дүнг ижил id-тай буцааж илгээнэ.

stop_reason

stop_reason Тайлбар Илгээгч
end_turn Загвар хариултаа дуусгасан, эсвэл таны stop_sequences-ийн нэг нь гарч ирсэн. Бүх загвар
tool_use Хариулт нэг буюу хэд хэдэн tool дуудлага агуулсан. Бүх загвар
max_tokens Хариулт гаралтын хязгаарт хүрч таслагдсан. Shannon 3 гэр бүл, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, stream-д

Streaming

Server-sent events авахын тулд stream-ийг true болгоно. Frame бүр event-ийн нэртэй event: мөр болон нэрийг type-д давтсан JSON объекттой data: мөртэй. Anthropic SDK-ийн stream туслахууд эдгээр event-ийг таны өмнөөс уншина:

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)

Event-үүд ирэх дарааллаар:

Үйл явдал Өгөгдөл Хэзээ
message_start message Үргэлж эхний. message нь id, role, model, хоосон 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 блокийн tool дуудлагын аргументууд, нэг delta-д бүрэн.
content_block_stop index Энэ index-тэй блок дууссан.
message_delta delta {stop_reason, stop_sequence}, usage Хариултын төгсгөл: delta.stop_reason ба хүсэлтийн usage.
message_stop Үргэлж сүүлчийн.

Блокууд нээгдэх дарааллаар index-ээр дугаарлагдах бөгөөд дараагийн блок нээгдэхээс өмнө нэг блок бүрэн дуусна. Блок бүрийг дугаараар нь бус төрлөөр нь унш: stream эхлээд хоосон 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 event, 15 секунд тутамд.
Hosted open-weight загварууд : keepalive гэсэн тайлбар мөр, загвар ажиллаж байх хугацаанд 15 секунд тутамд.

Амжилтгүй болсон stream

Stream эхэлсний дараах эвдрэл нь алдааны хариулттай ижил body-той error event байна: {"type": "error", "error": {"type", "message"}}. Хаалтын event-үүд болох message_delta ба message_stop үүний дараа ч ирнэ. Хариултыг амжилтгүй гэж үзээд хүсэлтээ дахин илгээнэ үү.

Алдаа

Алдаа нь Anthropic-ийн алдааны body хэлбэртэй: 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 Зураг оролтгүй hosted 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: таны багцын одоогийн 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 нь мессежийн хүсэлттэй ижил body (model, system, messages, tools) авч, {"input_tokens": n} буцаана: хүсэлтээс тооцогдох оролтын токены тоо. Hosted 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 болон хязгаартай, тусдаа хуудастай. Токен тоолох