Gafee gaa n'ọdịnaya
Anthropic

Anthropic

POST /v1/messages na-anabata request n'usoro Anthropic Messages ma zaa n'otu usoro ahụ, streamed ma ọ bụ na streamed. Jiri ya na Anthropic SDK na tools e wuru na ya, dị ka Claude Code: setịpụ base URL, jiri Shannon API key gị ma kpọọ Shannon model id.

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

Gbanwee Anthropic SDK ka ọ gaa Shannon base URL. SDK na-agbakwunye /v1/messages ma zipu key gị na header 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)

Azịza bụ ozi nke content ya bụ ndepụta blocks. Chọta blocks site na type ha: mgbe model chere echiche, block mbụ bụ thinking ma text na-abịa n'azụ ya.

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

Headers

Header Uru Nkọwa
x-api-key YOUR_API_KEY API key gị. A na-anabata Authorization: Bearer YOUR_API_KEY n'ọnọdụ ya.
content-type application/json Achọrọ.
anthropic-version 2023-06-01 A na-anabata ya, a chọghị ya. Anthropic SDK na-ezipụ 2023-06-01; azịza nwere otu usoro n'agbanyeghị uru ahụ.
anthropic-beta A na-anabata ya, a chọghị ya.
x-request-id Nhọrọ. Id nke gị maka request ahụ. Ọ na-alọghachi n'azịza na-agbanwebeghị; na-enweghị ya, azịza nwere id nke mkpụrụedemede hexadecimal 12.

Request fields

Naanị messages ka a chọrọ. Ogidi Ndị na-etinye ya na-akpọ aha model ndị field na-agbanwe azịza na ha. Hosted open-weight models bụ id iri na abụọ nke ndepụta model; ezinụlọ Shannon 3 bụ shannon-3, shannon-3-pro, shannon-3.1 na shannon-3.1-pro. Models & ọnụahịa

Field Ụdị Default Nkọwa Ndị na-etinye ya
model string shannon-1.6-lite Shannon model id sitere na ndepụta model. Zipu ya na request ọ bụla. Nhọrọ anaghị eche mkpụrụedemede nta ma ọ bụ nnukwu. Aha ọ bụla ọzọ na-eweghachi 400 unknown model, yabụ tool na-ezipụ aha model nke ya ga-ekwesị ka e setịpụ ya na Shannon id. Model niile
messages array Chọrọ. Mkparịta ụka, ozi kacha ochie buru ụzọ, nwere roles user na assistant. Lee Messages na content blocks n'okpuru. Model niile
system string | array Ntụziaka maka model: string, ma ọ bụ array nke text blocks. Lee System prompt n'okpuru. Hosted open-weight models, shannon-1.6-*, shannon-2-*, shannon-coder-1
max_tokens integer 4096 Oke elu nke azịza, na tokens. Nhọrọ n'endpoint a; Anthropic SDK na-ezipụ ya mgbe niile. A na-edozi uru dị n'èzí 1 ruo 65,536 ka ọ banye n'oke ahụ. Ọ bụkwa ọnụọgụ a na-ewepụta n'ime balance gị mgbe request na-aga. Hosted open-weight models, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
stream boolean false true na-ezipụ azịza dị ka server-sent events. Lee Streaming n'okpuru. Model niile
temperature number Sampling temperature. Na hosted open-weight models a na-edebe uru n'agbata 0 na 2. Hosted open-weight models, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number Nucleus sampling. Hosted open-weight models
stop_sequences array Ruo strings 4. Azịza na-akwụsị tupu nke mbụ pụtara. stop_reason na-anọgide end_turn. Hosted open-weight models
tools array Tools model nwere ike ịkpọ, nke ọ bụla dị ka {"name", "description", "input_schema"}. Lee Tools n'okpuru. Model niile
tool_choice object {"type": "auto"} na-ahapụ model ka ọ kpebie, {"type": "any"} na-eme ka ọ kpọọ tool, {"type": "tool", "name": "…"} na-eme ka ọ kpọọ tool ahụ. Hosted open-weight models
thinking object Ole model na-eche tupu ọ zaa. Lee Thinking n'okpuru. Hosted open-weight models
web_search boolean false Mgbakwunye Shannon na usoro ahụ: true na-ahapụ model ka ọ chọọ n'ịntanetị tupu ọ zaa. shannon-1.6-*, shannon-2-*, ezinụlọ Shannon 3

Na-enweghị max_tokens uru bụ 4,096, na 65,536 na shannon-coder-1.

A na-anabata metadata, top_k, service_tier na cache_control markers n'elu blocks ka koodu client dị adị na-agba n'enweghị mgbanwe. Ha anaghị agbanwe azịza; prompt caching na hosted open-weight models na-eme site n'onwe ya.

A na-arịọ azịza JSON nke schema site na response_format na Chat Completions na text.format na Responses. Mmepụta ahaziri

Request nwere system prompt na thinking

Request a na-eziga system prompt, thinking budget, temperature na stop sequence. Ọ na-eji hosted open-weight model, nke na-etinye ha niile.

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)

Na hosted open-weight models usage na-akọ tokens e sitere na prompt cache gụọ dị iche na input tokens ndị ọzọ.

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

System prompt

system bụ string, ma ọ bụ array nke text blocks n'udi [{"type": "text", "text": "…"}]. A na-ejikọta text nke blocks site na ahịrị ọhụrụ.

Hosted open-weight models, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro na shannon-coder-1 na-etinye ya. Na id nke ezinụlọ Shannon 3, tinye ntụziaka ndị ga-adịgide n'ime ozi user.

Ozi na content blocks

Ozi nwere role, user ma ọ bụ assistant, na content. content bụ string, ma ọ bụ array nke blocks.

Block Nkọwa Dị na
{"type": "text", "text": "…"} Text. Model niile
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}
{"type": "image", "source": {"type": "url", "url": "…"}}
Foto n'ime ozi user, dị ka base64 ma ọ bụ site na URL. Ezinụlọ Shannon 3, shannon-1.6-lite, shannon-1.6-pro, na hosted open-weight models ndị depụtara image input
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Akwụkwọ (PDF, Word, PowerPoint ma ọ bụ Excel) n'ime ozi user, dị ka base64 ma ọ bụ site na URL. Ezinụlọ Shannon 3
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} N'ime ozi assistant: oku tool nke model mere n'azịza gara aga. Model niile
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} N'ime ozi user: nsonaazụ oku ahụ. content bụ string, ma ọ bụ ndepụta nke text blocks. Model niile

Ị nwere ike iziga content nke azịza gara aga ka ọ dị: a na-agụ blocks text na tool_use, a na-agafe blocks thinking.

Na ọkwa Shannon, a na-agụ foto na akwụkwọ site na ozi user ikpeazụ. Nha na oke nwere peeji nke ha. Images na files

Thinking

Hosted open-weight models na-ahazi thinking ka ọ bụrụ reasoning effort. Na-enweghị field ahụ effort bụ high.

Udi budget_tokens Mmetụta
{"type": "disabled"} Enweghị reasoning. Azịza enweghị thinking block.
{"type": "enabled", "budget_tokens": 2048} ≤ 2,048 Effort dị ala.
{"type": "enabled", "budget_tokens": 8192} ≤ 8,192 Effort etiti.
{"type": "enabled", "budget_tokens": 16000} > 8,192 Effort dị elu.

Model na-eche echiche na-eweghachi reasoning ya dị ka block {"type": "thinking", "thinking": "…"} n'ihu text. Ọkwa Shannon na-eche echiche na-ezipụkwa ya.

A kọwara efforts n'peeji nke ha. Reasoning effort

Tools

Tool bụ function koodu gị na-agba. Kọwaa nke ọ bụla site na name, description na input_schema. Mgbe model chọrọ tool, azịza nwere tool_use block ma stop_reason bụ tool_use.

Nkọwa tool n'ime tools:

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

content nke azịza na-akpọ ya:

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

Gbaa tool ahụ, mgbe ahụ zipu request ọzọ nwere oku ahụ na tool_result block agbakwunyere na 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

Udi Mmetụta Ndị na-etinye ya
{"type": "auto"} Model na-ekpebi ma ọ ga-akpọ tool. Nke a bụ default. Model niile
{"type": "any"} Model ga-akpọ otu n'ime tools. Hosted open-weight models
{"type": "tool", "name": "…"} Model ga-akpọ tool nke e kpọrọ aha. Hosted open-weight models

A na-agụ naanị tools nwere input_schema. Web search abụghị tool n'endpoint a: setịpụ field web_search.

A kọwara tool loop nke ọma n'peeji nke ya. Oku ọrụ

Azịza

Field Ụdị Nkọwa Onye zitere
id string msg_ sochiri mkpụrụedemede hexadecimal 32. Model niile
type string Mgbe niile message. Model niile
role string Mgbe niile assistant. Model niile
model string Canonical id nke model zara. Model niile
content array Blocks nke azịza, n'usoro a: thinking mgbe model chere echiche, text, mgbe ahụ otu tool_use kwa oku tool. Model niile
stop_reason string Ihe mere azịza ji kwụsị. Lee uru ndị dị n'okpuru. Model niile
usage object input_tokens na output_tokens. Model niile
sources array Naanị na request nwere web_search: true nke search ya chọtara ihe: results e nyere model, nke ọ bụla nwere index, title na url. [1] n'azịza bụ entry nwere index 1. Na stream ọ na-abịa ya na event message_delta. shannon-1.6-*, shannon-2-*, ezinụlọ Shannon 3
usage.cache_read_input_tokens integer cache_read_input_tokens bụ akụkụ nke prompt e sitere na cache gụọ; input_tokens bụ ndị fọdụrụ. cache_creation_input_tokens bụ 0 mgbe niile. Hosted open-weight models

Blocks nke azịza

Block Nkọwa
{"type": "thinking", "thinking": "…"} Reasoning nke model. Enweghị member signature.
{"type": "text", "text": "…"} Text nke azịza ahụ. Ọ nwere ike ịbụ ihe efu mgbe azịza bụ oku tool.
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} Oku tool. input bụ JSON object. Zighachi nsonaazụ ya site na otu id.

stop_reason

stop_reason Nkọwa Onye zitere
end_turn Model mechiri azịza ya, ma ọ bụ otu n'ime stop_sequences gị pụtara. Model niile
tool_use Azịza nwere otu oku tool ma ọ bụ karịa. Model niile
max_tokens E bipụrụ azịza ahụ na oke output. Ezinụlọ Shannon 3, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, n'ime streams

Streaming

Setịpụ stream na true maka server-sent events. Frame ọ bụla nwere ahịrị event: nwere aha event na ahịrị data: nwere JSON object na-emeghachi aha ahụ na type. Stream helpers nke Anthropic SDK na-agụ events ndị a maka gị:

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)

Events ndị ahụ, n'usoro ha si abịa:

Event Data Mgbe
message_start message Mgbe niile bụ nke mbụ. message nwere id, role, model, content efu na usage malitere na efu.
content_block_start index, content_block Block na-emeghe. content_block bụ text ma ọ bụ thinking block efu, ma ọ bụ tool_use block nwere id na name ya.
content_block_delta index, delta {"type": "thinking_delta", "thinking"} Otu akụkụ nke reasoning, maka thinking block.
content_block_delta index, delta {"type": "text_delta", "text"} Otu akụkụ nke azịza, maka text block.
content_block_delta index, delta {"type": "input_json_delta", "partial_json"} Arguments nke oku tool, zuru ezu n'otu delta, maka tool_use block.
content_block_stop index Block nwere index a zuru ezu.
message_delta delta {stop_reason, stop_sequence}, usage Ọgwụgwụ azịza: delta.stop_reason, na usage nke request.
message_stop Mgbe niile bụ nke ikpeazụ.

A na-edepụta blocks site na index n'usoro ha si meghee, ma otu block zuru ezu tupu nke ọzọ emeghee. Gụọ block ọ bụla site na ụdị ya, ọ bụghị site na nọmba ya: stream nwere ike imeghe text block efu buru ụzọ, mgbe ahụ thinking block, ma weta azịza n'ime text block nke dị n'azụ.

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

Onye zitere Nkọwa
Ezinụlọ Shannon 3, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 ping event nwere data {"type": "ping"}, kwa sekọnd 15.
Hosted open-weight models Ahịrị nkọwa : keepalive, kwa sekọnd 15 mgbe model na-arụ ọrụ.

Stream na-ada

Ọdịda mgbe stream malitechara bụ error event nwere otu body dị ka error reply: {"type": "error", "error": {"type", "message"}}. Events mmechi, message_delta na message_stop, ka na-eso. Lee azịza ahụ dị ka nke dara ma zipu request ahụ ọzọ.

Njehie

Njehie na-eji Anthropic error body: type bụ error, ma error object nwere type na message. Tebụl a depụtara ihe endpoint a na-eweghachi n'ọtụtụ oge. Ndepụta zuru ezu, na ihe a ga-anwa ọzọ, nwere peeji nke ya. Njikwa njehie

400 JSON
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Status Ụdị Ozi Mgbe
401 authentication_error Missing authentication
Invalid API key
Ezipụghị API key, ma ọ bụ key ahụ amaghị ama ma ọ bụ akagbuola ya.
400 invalid_request_error unknown model: <id> model abụghị Shannon model id.
400 invalid_request_error No user message provided Ọkwa Shannon: request enweghị user text na enweghị tools.
400 invalid_request_error <id> does not accept image input Ezigara foto na hosted open-weight model na-enweghị image input.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages na-efu, ma ọ bụ field nwere JSON type ezighi ezi.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens karịrị ihe fọdụrụ na balance gị.
429 rate_limit_error Too many requests. Retry in <n>s. Flood protection: karịa request 120 n'ime otu nkeji n'akaụntụ gị.
429 rate_limit_error Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan shannon-coder-1: eriela oku Shannon Coder nke plan gị maka windo awa 4 nke ugbu a.
500 server_error The model backend failed to answer. Please retry. Model emepụtaghị azịza. Zipu request ahụ ọzọ.
502 api_error The model backend failed to answer. Please retry. Model emepụtaghị azịza. Zipu request ahụ ọzọ.

Ịgụ tokens

POST /v1/messages/count_tokens na-anabata otu body dị ka request ozi (model, system, messages, tools) ma weghachi {"input_tokens": n}: ọnụọgụ input tokens a ga-akwụ ụgwọ maka request ahụ. Ọ na-agụ maka hosted open-weight models, ọ bụ n'efu, flood protection anaghịkwa agụ ya.

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)

Ịgụ nwere peeji nke ya, nwere plain-text endpoint na oke. Ịgụ tokens