Preskoči na vsebino
Format Anthropic

Format Anthropic

POST /v1/messages sprejme zahtevek v formatu Anthropic Messages in odgovori v istem formatu, pretočno ali ne. Uporabite ga z Anthropic SDK in z orodji, zgrajenimi na njem, kot je Claude Code: nastavite osnovni URL, uporabite svoj API ključ Shannon in navedite id modela Shannon.

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

Usmerite Anthropic SDK na osnovni URL Shannon. SDK doda /v1/messages in pošlje vaš ključ v glavi 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)

Odgovor je sporočilo, katerega content je seznam blokov. Bloke prepoznate po type: ko je model razmišljal, je prvi blok thinking, besedilo pa sledi za njim.

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

Glave

Glava Vrednost Opis
x-api-key YOUR_API_KEY Vaš API ključ. Namesto njega se sprejme Authorization: Bearer YOUR_API_KEY.
content-type application/json Obvezno.
anthropic-version 2023-06-01 Sprejeto, ni obvezno. Anthropic SDK pošlje 2023-06-01; odgovor ima isti format ne glede na vrednost.
anthropic-beta Sprejeto, ni obvezno.
x-request-id Neobvezno. Vaš lasten id zahtevka. V odgovoru se vrne nespremenjen; brez njega odgovor nosi id z 12 šestnajstiškimi znaki.

Polja zahtevka

Zahtevano je samo messages. Stolpec Uporabljajo navaja modele, pri katerih polje spremeni odgovor. Gostovani modeli z odprtimi utežmi so dvanajst id-jev s seznama modelov; družina Shannon 3 so shannon-3, shannon-3-pro, shannon-3.1 in shannon-3.1-pro. Modeli in cene

Polje Tip Privzeto Opis Uporabljajo
model string shannon-1.6-lite Id modela Shannon s seznama modelov. Pošljite ga z vsakim zahtevkom. Ujemanje ne razlikuje velikih in malih črk. Vsako drugo ime vrne 400 unknown model, zato morate orodje, ki pošilja lastna imena modelov, nastaviti na id Shannon. Vsi modeli
messages array Obvezno. Pogovor, najstarejše sporočilo prvo, z vlogama user in assistant. Glejte spodaj Sporočila in bloki vsebine. Vsi modeli
system string | array Navodila za model: niz ali polje besedilnih blokov. Glejte spodaj Sistemski prompt. Gostovani modeli z odprtimi utežmi, shannon-1.6-*, shannon-2-*, shannon-coder-1
max_tokens integer 4096 Zgornja meja odgovora v tokenih. Na tem endpointu neobvezno; Anthropic SDK ga vedno pošlje. Vrednost zunaj obsega od 1 do 65,536 se premakne v ta obseg. To je tudi znesek, ki se med izvajanjem zahtevka odloži z vašega stanja. Gostovani modeli z odprtimi utežmi, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
stream boolean false true pošlje odgovor kot dogodke, ki jih pošilja strežnik. Glejte spodaj Pretakanje. Vsi modeli
temperature number Temperatura vzorčenja. Pri gostovanih modelih z odprtimi utežmi se vrednosti omejijo med 0 in 2. Gostovani modeli z odprtimi utežmi, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number Jedrno vzorčenje (nucleus sampling). Gostovani modeli z odprtimi utežmi
stop_sequences array Do 4 nizi. Odgovor se konča pred prvim, ki se pojavi. stop_reason ostane end_turn. Gostovani modeli z odprtimi utežmi
tools array Orodja, ki jih model lahko pokliče, vsako kot {"name", "description", "input_schema"}. Glejte spodaj Orodja. Vsi modeli
tool_choice object {"type": "auto"} prepusti odločitev modelu, {"type": "any"} ga prisili, da pokliče orodje, {"type": "tool", "name": "…"} ga prisili, da pokliče to orodje. Gostovani modeli z odprtimi utežmi
thinking object Koliko model razmišlja, preden odgovori. Glejte spodaj Razmišljanje. Gostovani modeli z odprtimi utežmi
web_search boolean false Dodatek Shannon k formatu: true omogoči modelu iskanje po spletu, preden odgovori. shannon-1.6-*, shannon-2-*, družina Shannon 3

Brez max_tokens je vrednost 4,096, pri shannon-coder-1 pa 65,536.

metadata, top_k, service_tier in oznake cache_control na blokih so sprejeti, da obstoječa koda odjemalca deluje nespremenjena. Odgovora ne spremenijo; predpomnjenje promptov na gostovanih modelih z odprtimi utežmi je samodejno.

Odgovor JSON po shemi zahtevate s response_format pri Chat Completions in s text.format pri Responses. Strukturirani izhodi

Zahtevek s sistemskim promptom in razmišljanjem

Ta zahtevek pošlje sistemski prompt, proračun razmišljanja, temperaturo in zaporedje za ustavitev. Uporablja gostovani model z odprtimi utežmi, ki upošteva vse našteto.

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)

Pri gostovanih modelih z odprtimi utežmi usage poroča o tokenih, prebranih iz predpomnilnika promptov, ločeno od drugih vhodnih tokenov.

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

Sistemski prompt

system je niz ali polje besedilnih blokov v obliki [{"type": "text", "text": "…"}]. Besedila blokov se združijo s prelomom vrstice.

Upoštevajo ga gostovani modeli z odprtimi utežmi, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro in shannon-coder-1. Pri id-ju iz družine Shannon 3 navodila, ki morajo veljati, vstavite v uporabnikovo sporočilo.

Sporočila in bloki vsebine

Sporočilo ima role, to je user ali assistant, in content. content je niz ali polje blokov.

Blok Opis Na voljo pri
{"type": "text", "text": "…"} Besedilo. Vsi modeli
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}
{"type": "image", "source": {"type": "url", "url": "…"}}
Slika v sporočilu user, kot base64 ali prek URL-ja. Družina Shannon 3, shannon-1.6-lite, shannon-1.6-pro in gostovani modeli z odprtimi utežmi, ki navajajo vhod s slikami
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Dokument (PDF, Word, PowerPoint ali Excel) v sporočilu user, kot base64 ali prek URL-ja. Družina Shannon 3
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} V sporočilu assistant: klic orodja, ki ga je model naredil v prejšnjem odgovoru. Vsi modeli
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} V sporočilu user: rezultat tega klica. content je niz ali seznam besedilnih blokov. Vsi modeli

content prejšnjega odgovora lahko pošljete nazaj nespremenjen: bloka text in tool_use se preberejo, bloki thinking se preskočijo.

Pri ravneh Shannon se slike in dokumenti preberejo iz zadnjega sporočila user. Velikosti in omejitve imajo svojo stran. Slike in datoteke

Razmišljanje

Gostovani modeli z odprtimi utežmi preslikajo thinking v napor razmišljanja. Brez polja je napor visok.

Oblika budget_tokens Učinek
{"type": "disabled"} Brez razmišljanja. Odgovor nima bloka thinking.
{"type": "enabled", "budget_tokens": 2048} ≤ 2,048 Nizek napor.
{"type": "enabled", "budget_tokens": 8192} ≤ 8,192 Srednji napor.
{"type": "enabled", "budget_tokens": 16000} > 8,192 Visok napor.

Model, ki razmišlja, vrne svoje razmišljanje kot blok {"type": "thinking", "thinking": "…"} pred besedilom. Ravni Shannon, ki razmišljajo, ga prav tako pošljejo.

Napori so opisani na svoji strani. Napor razmišljanja

Orodja

Orodje je funkcija, ki jo izvaja vaša koda. Vsako opišite z name, description in input_schema. Ko model želi orodje, odgovor vsebuje blok tool_use, stop_reason pa je tool_use.

Definicija orodja v tools:

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

content odgovora, ki ga pokliče:

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

Zaženite orodje, nato zahtevek pošljite znova s klicem in blokom tool_result, dodanima v 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

Oblika Učinek Uporabljajo
{"type": "auto"} Model sam odloči, ali bo poklical orodje. To je privzeto. Vsi modeli
{"type": "any"} Model mora poklicati eno od orodij. Gostovani modeli z odprtimi utežmi
{"type": "tool", "name": "…"} Model mora poklicati imenovano orodje. Gostovani modeli z odprtimi utežmi

Prebrana so samo orodja z input_schema. Spletno iskanje na tem endpointu ni orodje: nastavite polje web_search.

Zanka orodij je v celoti opisana na svoji strani. Klicanje funkcij

Odgovor

Polje Tip Opis Pošilja
id string msg_, ki mu sledi 32 šestnajstiških znakov. Vsi modeli
type string Vedno message. Vsi modeli
role string Vedno assistant. Vsi modeli
model string Kanonični id modela, ki je odgovoril. Vsi modeli
content array Bloki odgovora v tem vrstnem redu: thinking, če je model razmišljal, text, nato po en tool_use za vsak klic orodja. Vsi modeli
stop_reason string Zakaj se je odgovor končal. Glejte vrednosti spodaj. Vsi modeli
usage object input_tokens in output_tokens. Vsi modeli
sources array Samo pri zahtevku z web_search: true, katerega iskanje je kaj našlo: rezultati, ki jih je model dobil, vsak z index, title in url. [1] v odgovoru je vnos z index 1. V toku pride z dogodkom message_delta. shannon-1.6-*, shannon-2-*, družina Shannon 3
usage.cache_read_input_tokens integer cache_read_input_tokens je del prompta, prebran iz predpomnilnika; input_tokens je ostalo. cache_creation_input_tokens je vedno 0. Gostovani modeli z odprtimi utežmi

Bloki odgovora

Blok Opis
{"type": "thinking", "thinking": "…"} Razmišljanje modela. Člana signature ni.
{"type": "text", "text": "…"} Besedilo odgovora. Lahko je prazno, kadar je odgovor klic orodja.
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} Klic orodja. input je objekt JSON. Rezultat pošljite nazaj z istim id.

stop_reason

stop_reason Opis Pošilja
end_turn Model je dokončal odgovor ali pa se je pojavil eden od vaših stop_sequences. Vsi modeli
tool_use Odgovor vsebuje enega ali več klicev orodij. Vsi modeli
max_tokens Odgovor je bil odrezan na omejitvi izhoda. Družina Shannon 3, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, v tokovih

Pretakanje

Nastavite stream na true za dogodke, ki jih pošilja strežnik. Vsak okvir ima vrstico event: z imenom dogodka in vrstico data: z objektom JSON, ki ponovi ime v type. Pomočniki za tokove v Anthropic SDK te dogodke preberejo namesto vas:

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)

Dogodki v vrstnem redu prihoda:

Dogodek Podatki Kdaj
message_start message Vedno prvi. message vsebuje id, vlogo, model, prazen content in usage, ki se začne pri nič.
content_block_start index, content_block Blok se odpre. content_block je prazen blok text ali thinking ali blok tool_use z id in name.
content_block_delta index, delta {"type": "thinking_delta", "thinking"} Del razmišljanja za blok thinking.
content_block_delta index, delta {"type": "text_delta", "text"} Del odgovora za blok text.
content_block_delta index, delta {"type": "input_json_delta", "partial_json"} Argumenti klica orodja, v celoti v eni delti, za blok tool_use.
content_block_stop index Blok s tem index je končan.
message_delta delta {stop_reason, stop_sequence}, usage Konec odgovora: delta.stop_reason in usage zahtevka.
message_stop Vedno zadnji.

Bloki so oštevilčeni z index po vrstnem redu odpiranja, vsak blok pa je končan, preden se odpre naslednji. Vsak blok berite po njegovem tipu, ne po številki: tok lahko najprej odpre prazen blok text, nato blok thinking, odgovor pa dostavi v poznejšem bloku 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

Pošilja Opis
Družina Shannon 3, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Dogodek ping s podatki {"type": "ping"} vsakih 15 sekund.
Gostovani modeli z odprtimi utežmi Komentarna vrstica : keepalive vsakih 15 sekund, medtem ko model dela.

Tok, ki ne uspe

Napaka po začetku toka je dogodek error z istim telesom kot odgovor z napako: {"type": "error", "error": {"type", "message"}}. Sledijo še sklepni dogodki, message_delta in message_stop. Odgovor obravnavajte kot neuspel in zahtevek pošljite znova.

Napake

Napake uporabljajo telo napake Anthropic: type je error, objekt error pa vsebuje type in message. Tabela navaja, kaj ta endpoint najpogosteje vrne. Celoten seznam s priporočili, kaj ponoviti, ima svojo stran. Obravnava napak

400 JSON
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Status Tip Sporočilo Kdaj
401 authentication_error Missing authentication
Invalid API key
API ključ ni bil poslan ali pa je ključ neznan ali preklican.
400 invalid_request_error unknown model: <id> model ni id modela Shannon.
400 invalid_request_error No user message provided Ravni Shannon: zahtevek nima besedila uporabnika in nima tools.
400 invalid_request_error <id> does not accept image input Slika je bila poslana gostovanemu modelu z odprtimi utežmi brez vhoda s slikami.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages manjka ali ima polje napačen tip JSON.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens je večji od tega, kar je ostalo na vašem stanju.
429 rate_limit_error Too many requests. Retry in <n>s. Zaščita pred poplavo zahtevkov: več kot 120 zahtevkov v eni minuti na vašem računu.
429 rate_limit_error Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan shannon-coder-1: klici Shannon Coder vašega paketa za trenutno 4-urno okno so porabljeni.
500 server_error The model backend failed to answer. Please retry. Model ni ustvaril odgovora. Pošljite zahtevek znova.
502 api_error The model backend failed to answer. Please retry. Model ni ustvaril odgovora. Pošljite zahtevek znova.

Štetje tokenov

POST /v1/messages/count_tokens sprejme isto telo kot zahtevek za sporočilo (model, system, messages, tools) in vrne {"input_tokens": n}: število vhodnih tokenov, ki bi jih zahtevek obračunal. Šteje za gostovane modele z odprtimi utežmi, je brezplačno in ga zaščita pred poplavo zahtevkov ne všteva.

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)

Štetje ima svojo stran, z endpointom za navadno besedilo in omejitvami. Štetje tokenov