Pereiti prie turinio
Anthropic

Anthropic

POST /v1/messages priima užklausą Anthropic Messages formatu ir atsako tuo pačiu formatu, srautu arba ne. Naudokite jį su Anthropic SDK ir ant jo sukurtais įrankiais, pavyzdžiui, Claude Code: nustatykite bazinį URL, naudokite savo Shannon API raktą ir nurodykite Shannon modelio id.

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

Nukreipkite Anthropic SDK į Shannon bazinį URL. SDK prideda /v1/messages ir siunčia jūsų raktą antraštėje 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)

Atsakymas yra žinutė, kurios content yra blokų sąrašas. Blokus atpažinkite pagal type: kai modelis mąstė, pirmasis blokas yra thinking, o tekstas eina po jo.

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

Antraštės

Antraštė Reikšmė Aprašymas
x-api-key YOUR_API_KEY Jūsų API raktas. Vietoje jo priimamas Authorization: Bearer YOUR_API_KEY.
content-type application/json Privaloma.
anthropic-version 2023-06-01 Priimama, neprivaloma. Anthropic SDK siunčia 2023-06-01; atsakymo formatas tas pats, kad ir kokia būtų reikšmė.
anthropic-beta Priimama, neprivaloma.
x-request-id Neprivaloma. Jūsų pačių užklausos id. Jis grąžinamas atsakyme nepakeistas; be jo atsakyme yra 12 šešioliktainių simbolių id.

Užklausos laukai

Būtinas tik messages. Stulpelyje Taiko nurodyti modeliai, kuriuose laukas keičia atsakymą. Talpinami atvirų svorių modeliai yra dvylika modelių sąrašo id; Shannon 3 šeima yra shannon-3, shannon-3-pro, shannon-3.1 ir shannon-3.1-pro. Modeliai ir kainos

Laukas Tipas Numatytoji Aprašymas Taiko
model string shannon-1.6-lite Shannon modelio id iš modelių sąrašo. Siųskite jį su kiekviena užklausa. Raidžių registras nesvarbus. Bet koks kitas pavadinimas grąžina 400 unknown model, todėl įrankį, kuris siunčia savo modelių pavadinimus, reikia nustatyti naudoti Shannon id. Visi modeliai
messages array Privalomas. Pokalbis, seniausia žinutė pirma, su rolėmis user ir assistant. Žr. žemiau Žinutės ir turinio blokai. Visi modeliai
system string | array Nurodymai modeliui: eilutė arba tekstinių blokų masyvas. Žr. žemiau Sistemos nurodymai. Talpinami atvirų svorių modeliai, shannon-1.6-*, shannon-2-*, shannon-coder-1
max_tokens integer 4096 Viršutinė atsakymo riba tokenais. Šiame galiniame taške neprivaloma; Anthropic SDK jį siunčia visada. Reikšmė už intervalo nuo 1 iki 65,536 perkeliama į šį intervalą. Tai taip pat suma, kuri jūsų balanse rezervuojama, kol vykdoma užklausa. Talpinami atvirų svorių modeliai, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
stream boolean false true siunčia atsakymą kaip server-sent events. Žr. žemiau Srautinis perdavimas. Visi modeliai
temperature number Mėginių ėmimo temperatūra. Talpinamuose atvirų svorių modeliuose reikšmės laikomos intervale nuo 0 iki 2. Talpinami atvirų svorių modeliai, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number Branduolio (nucleus) mėginių ėmimas. Talpinami atvirų svorių modeliai
stop_sequences array Iki 4 eilučių. Atsakymas baigiasi prieš pirmąją pasirodžiusią. stop_reason lieka end_turn. Talpinami atvirų svorių modeliai
tools array Įrankiai, kuriuos modelis gali kviesti, kiekvienas kaip {"name", "description", "input_schema"}. Žr. žemiau Įrankiai. Visi modeliai
tool_choice object {"type": "auto"} leidžia modeliui nuspręsti, {"type": "any"} priverčia jį kviesti įrankį, {"type": "tool", "name": "…"} priverčia kviesti būtent tą įrankį. Talpinami atvirų svorių modeliai
thinking object Kiek modelis mąsto prieš atsakydamas. Žr. žemiau Mąstymas. Talpinami atvirų svorių modeliai
web_search boolean false Shannon papildymas formatui: true leidžia modeliui prieš atsakant ieškoti internete. shannon-1.6-*, shannon-2-*, Shannon 3 šeima

Be max_tokens reikšmė yra 4,096, o shannon-coder-1 atveju 65,536.

metadata, top_k, service_tier ir blokų cache_control žymos priimamos, kad esamas kliento kodas veiktų nepakeistas. Jos nekeičia atsakymo; talpinamų atvirų svorių modelių prompt kešavimas yra automatinis.

JSON atsakymas pagal schemą prašomas per response_format Chat Completions ir per text.format Responses. Struktūruoti išėjimai

Užklausa su sistemos nurodymais ir mąstymu

Ši užklausa siunčia sistemos nurodymus, mąstymo biudžetą, temperatūrą ir stabdymo seką. Ji naudoja talpinamą atvirų svorių modelį, kuris taiko visus šiuos nustatymus.

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)

Talpinamuose atvirų svorių modeliuose usage praneša tokenus, nuskaitytus iš prompt kešo, atskirai nuo kitų įvesties tokenų.

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

Sistemos nurodymai

system yra eilutė arba tekstinių blokų masyvas formos [{"type": "text", "text": "…"}]. Blokų tekstai sujungiami eilutės lūžiu.

Jį taiko talpinami atvirų svorių modeliai, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro ir shannon-coder-1. Su Shannon 3 šeimos id nurodymus, kurie privalo galioti, įrašykite į vartotojo žinutę.

Žinutės ir turinio blokai

Žinutė turi role, user arba assistant, ir content. content yra eilutė arba blokų masyvas.

Blokas Aprašymas Prieinama
{"type": "text", "text": "…"} Tekstas. Visi modeliai
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}
{"type": "image", "source": {"type": "url", "url": "…"}}
Vaizdas user žinutėje, kaip base64 arba pagal URL. Shannon 3 šeima, shannon-1.6-lite, shannon-1.6-pro ir talpinami atvirų svorių modeliai, kurie nurodo vaizdo įvestį
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Dokumentas (PDF, Word, PowerPoint ar Excel) user žinutėje, kaip base64 arba pagal URL. Shannon 3 šeima
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} assistant žinutėje: įrankio kreipinys, kurį modelis atliko ankstesniame atsakyme. Visi modeliai
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} user žinutėje: to kreipinio rezultatas. content yra eilutė arba tekstinių blokų sąrašas. Visi modeliai

Ankstesnio atsakymo content galite siųsti atgal nepakeistą: text ir tool_use blokai perskaitomi, thinking blokai praleidžiami.

Shannon lygiuose vaizdai ir dokumentai skaitomi iš paskutinės user žinutės. Dydžiai ir ribos aprašyti atskirame puslapyje. Vaizdai ir failai

Mąstymas

Talpinami atvirų svorių modeliai thinking susieja su mąstymo pastangomis. Be šio lauko pastangos yra didelės.

Forma budget_tokens Poveikis
{"type": "disabled"} Be mąstymo. Atsakyme nėra thinking bloko.
{"type": "enabled", "budget_tokens": 2048} ≤ 2,048 Mažos pastangos.
{"type": "enabled", "budget_tokens": 8192} ≤ 8,192 Vidutinės pastangos.
{"type": "enabled", "budget_tokens": 16000} > 8,192 Didelės pastangos.

Mąstantis modelis savo mąstymą grąžina kaip bloką {"type": "thinking", "thinking": "…"} prieš tekstą. Mąstantys Shannon lygiai jį siunčia taip pat.

Pastangų lygiai aprašyti atskirame puslapyje. Mąstymo pastangos

Įrankiai

Įrankis yra funkcija, kurią vykdo jūsų kodas. Kiekvieną aprašykite su name, description ir input_schema. Kai modelis nori įrankio, atsakyme yra tool_use blokas, o stop_reason yra tool_use.

Įrankio apibrėžimas tools:

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

Atsakymo, kuriuo jis kviečiamas, content:

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

Paleiskite įrankį, tada siųskite užklausą dar kartą, prie messages pridėję kreipinį ir tool_result bloką:

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

Forma Poveikis Taiko
{"type": "auto"} Modelis pats sprendžia, ar kviesti įrankį. Tai numatytoji reikšmė. Visi modeliai
{"type": "any"} Modelis privalo iškviesti vieną iš įrankių. Talpinami atvirų svorių modeliai
{"type": "tool", "name": "…"} Modelis privalo iškviesti nurodytą įrankį. Talpinami atvirų svorių modeliai

Skaitomi tik įrankiai su input_schema. Paieška internete šiame galiniame taške nėra įrankis: nustatykite lauką web_search.

Įrankių ciklas pilnai aprašytas atskirame puslapyje. Funkcijų kvietimas

Atsakymas

Laukas Tipas Aprašymas Siunčia
id string msg_ ir 32 šešioliktainiai simboliai. Visi modeliai
type string Visada message. Visi modeliai
role string Visada assistant. Visi modeliai
model string Atsakiusio modelio kanoninis id. Visi modeliai
content array Atsakymo blokai šia tvarka: thinking, kai modelis mąstė, text, tada po vieną tool_use kiekvienam įrankio kreipiniui. Visi modeliai
stop_reason string Kodėl atsakymas baigėsi. Žr. reikšmes žemiau. Visi modeliai
usage object input_tokens ir output_tokens. Visi modeliai
sources array Tik užklausoje su web_search: true, kurios paieška ką nors rado: modeliui perduoti rezultatai, kiekvienas su index, title ir url. [1] atsakyme yra įrašas, kurio index yra 1. Sraute jis ateina su įvykiu message_delta. shannon-1.6-*, shannon-2-*, Shannon 3 šeima
usage.cache_read_input_tokens integer cache_read_input_tokens yra prompt dalis, nuskaityta iš kešo; input_tokens yra likusi dalis. cache_creation_input_tokens visada yra 0. Talpinami atvirų svorių modeliai

Atsakymo blokai

Blokas Aprašymas
{"type": "thinking", "thinking": "…"} Modelio mąstymas. Nario signature nėra.
{"type": "text", "text": "…"} Atsakymo tekstas. Jis gali būti tuščias, kai atsakymas yra įrankio kreipinys.
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} Įrankio kreipinys. input yra JSON objektas. Rezultatą siųskite atgal su tuo pačiu id.

stop_reason

stop_reason Aprašymas Siunčia
end_turn Modelis baigė atsakymą arba pasirodė viena iš jūsų stop_sequences. Visi modeliai
tool_use Atsakyme yra vienas ar daugiau įrankių kreipinių. Visi modeliai
max_tokens Atsakymas nutrauktas pasiekus išvesties ribą. Shannon 3 šeima, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, srautuose

Srautinis perdavimas

Nustatykite stream į true, kad gautumėte server-sent events. Kiekvienas kadras turi event: eilutę su įvykio pavadinimu ir data: eilutę su JSON objektu, kuris pavadinimą kartoja lauke type. Anthropic SDK srauto pagalbinės priemonės šiuos įvykius perskaito už jus:

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)

Įvykiai tokia tvarka, kokia jie ateina:

Įvykis Duomenys Kada
message_start message Visada pirmas. message turi id, rolę, modelį, tuščią content ir usage, kuris prasideda nuo nulio.
content_block_start index, content_block Blokas atsidaro. content_block yra tuščias text ar thinking blokas arba tool_use blokas su savo id ir name.
content_block_delta index, delta {"type": "thinking_delta", "thinking"} Mąstymo dalis thinking blokui.
content_block_delta index, delta {"type": "text_delta", "text"} Atsakymo dalis text blokui.
content_block_delta index, delta {"type": "input_json_delta", "partial_json"} Įrankio kreipinio argumentai, pateikiami vienoje deltoje, tool_use blokui.
content_block_stop index Blokas su šiuo index baigtas.
message_delta delta {stop_reason, stop_sequence}, usage Atsakymo pabaiga: delta.stop_reason ir užklausos usage.
message_stop Visada paskutinis.

Blokai numeruojami pagal index tokia tvarka, kokia atsidaro, ir vienas blokas baigiamas prieš atsidarant kitam. Kiekvieną bloką skaitykite pagal jo tipą, o ne numerį: srautas gali pirmiausia atidaryti tuščią text bloką, tada thinking bloką, o atsakymą pateikti vėlesniame text bloke.

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

Siunčia Aprašymas
Shannon 3 šeima, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 ping įvykis su duomenimis {"type": "ping"} kas 15 sekundžių.
Talpinami atvirų svorių modeliai Komentaro eilutė : keepalive kas 15 sekundžių, kol modelis dirba.

Srautas, kuris nepavyksta

Triktis, įvykusi srautui jau prasidėjus, yra error įvykis su tokiu pat turiniu kaip klaidos atsakymas: {"type": "error", "error": {"type", "message"}}. Baigiamieji įvykiai message_delta ir message_stop vis tiek seka. Laikykite atsakymą nepavykusiu ir išsiųskite užklausą dar kartą.

Klaidos

Klaidos naudoja Anthropic klaidos turinį: type yra error, o error objekte yra type ir message. Lentelėje išvardyta, ką šis galinis taškas grąžina dažniausiai. Pilnas sąrašas su nurodymais, ką kartoti, yra atskirame puslapyje. Klaidų tvarkymas

400 JSON
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Būsena Tipas Pranešimas Kada
401 authentication_error Missing authentication
Invalid API key
API raktas nebuvo išsiųstas arba raktas nežinomas ar atšauktas.
400 invalid_request_error unknown model: <id> model nėra Shannon modelio id.
400 invalid_request_error No user message provided Shannon lygiai: užklausoje nėra vartotojo teksto ir nėra tools.
400 invalid_request_error <id> does not accept image input Vaizdas buvo išsiųstas talpinamam atvirų svorių modeliui, kuris nepriima vaizdo įvesties.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … Trūksta messages arba lauko JSON tipas neteisingas.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens yra didesnis nei jūsų balanso likutis.
429 rate_limit_error Too many requests. Retry in <n>s. Apsauga nuo užplūdimo: per vieną minutę jūsų paskyroje gauta daugiau nei 120 užklausų.
429 rate_limit_error Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan shannon-coder-1: išnaudoti jūsų plano Shannon Coder kreipiniai dabartiniam 4 valandų langui.
500 server_error The model backend failed to answer. Please retry. Modelis neparengė atsakymo. Išsiųskite užklausą dar kartą.
502 api_error The model backend failed to answer. Please retry. Modelis neparengė atsakymo. Išsiųskite užklausą dar kartą.

Tokenų skaičiavimas

POST /v1/messages/count_tokens priima tokį patį turinį kaip žinutės užklausa (model, system, messages, tools) ir grąžina {"input_tokens": n}: įvesties tokenų skaičių, kuris būtų apmokestintas už šią užklausą. Skaičiavimas veikia talpinamiems atvirų svorių modeliams, yra nemokamas ir neįskaičiuojamas į apsaugą nuo užplūdimo.

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)

Skaičiavimas turi savo puslapį, kuriame aprašytas paprasto teksto galinis taškas ir ribos. Tokenų skaičiavimas