Pāriet uz saturu
Anthropic

Anthropic

POST /v1/messages pieņem pieprasījumu Anthropic Messages formātā un atbild tajā pašā formātā, straumēti vai ne. Izmantojiet to ar Anthropic SDK un uz tā balstītiem rīkiem, piemēram, Claude Code: iestatiet bāzes URL, izmantojiet savu Shannon API atslēgu un norādiet Shannon modeļa id.

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

Norādiet Anthropic SDK uz Shannon bāzes URL. SDK pievieno /v1/messages un nosūta jūsu atslēgu galvenē 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)

Atbilde ir ziņojums, kura content ir bloku saraksts. Blokus atrodiet pēc to type: ja modelis spriedis, pirmais bloks ir thinking, bet teksts seko aiz tā.

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

Galvenes

Galvene Vērtība Apraksts
x-api-key YOUR_API_KEY Jūsu API atslēga. Tās vietā tiek pieņemts arī Authorization: Bearer YOUR_API_KEY.
content-type application/json Obligāta.
anthropic-version 2023-06-01 Tiek pieņemta, nav obligāta. Anthropic SDK sūta 2023-06-01; atbildei ir tāds pats formāts neatkarīgi no vērtības.
anthropic-beta Tiek pieņemta, nav obligāta.
x-request-id Neobligāta. Jūsu pašu pieprasījuma id. Tas atbildē atgriežas nemainīts; bez tā atbildei ir id no 12 heksadecimālām rakstzīmēm.

Pieprasījuma lauki

Obligāts ir tikai messages. Kolonna Piemēro nosauc modeļus, kuros lauks maina atbildi. Hostētie atvērto svaru modeļi ir divpadsmit id no modeļu saraksta; Shannon 3 saime ir shannon-3, shannon-3-pro, shannon-3.1 un shannon-3.1-pro. Modeļi un cenas

Lauks Tips Noklusējums Apraksts Piemēro
model string shannon-1.6-lite Shannon modeļa id no modeļu saraksta. Sūtiet to ar katru pieprasījumu. Salīdzināšana nav reģistrjutīga. Jebkurš cits nosaukums atgriež 400 unknown model, tāpēc rīkam, kas sūta savus modeļu nosaukumus, jāiestata Shannon id. Visi modeļi
messages array Obligāts. Saruna, vecākais ziņojums pirmais, ar lomām user un assistant. Skatiet tālāk sadaļu Ziņojumi un satura bloki. Visi modeļi
system string | array Norādījumi modelim: virkne vai teksta bloku masīvs. Skatiet tālāk sadaļu Sistēmas uzvedne. Hostētie atvērto svaru modeļi, shannon-1.6-*, shannon-2-*, shannon-coder-1
max_tokens integer 4096 Atbildes augšējā robeža tokenos. Šajā galapunktā neobligāts; Anthropic SDK to sūta vienmēr. Vērtība ārpus diapazona no 1 līdz 65,536 tiek pārvietota šajā diapazonā. Tas ir arī apjoms, ko pieprasījuma izpildes laikā rezervē no jūsu atlikuma. Hostētie atvērto svaru modeļi, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
stream boolean false true nosūta atbildi kā server-sent events. Skatiet tālāk sadaļu Straumēšana. Visi modeļi
temperature number Paraugu ņemšanas temperatūra. Hostētajiem atvērto svaru modeļiem vērtības tiek turētas starp 0 un 2. Hostētie atvērto svaru modeļi, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number Kodola paraugu ņemšana (nucleus sampling). Hostētie atvērto svaru modeļi
stop_sequences array Līdz 4 virknēm. Atbilde beidzas pirms pirmās no tām, kas parādās. stop_reason paliek end_turn. Hostētie atvērto svaru modeļi
tools array Rīki, ko modelis drīkst izsaukt, katrs kā {"name", "description", "input_schema"}. Skatiet tālāk sadaļu Rīki. Visi modeļi
tool_choice object {"type": "auto"} ļauj modelim izlemt, {"type": "any"} liek tam izsaukt rīku, {"type": "tool", "name": "…"} liek tam izsaukt šo rīku. Hostētie atvērto svaru modeļi
thinking object Cik daudz modelis spriež pirms atbildes. Skatiet tālāk sadaļu Domāšana. Hostētie atvērto svaru modeļi
web_search boolean false Shannon papildinājums formātam: true ļauj modelim pirms atbildes meklēt tīmeklī. shannon-1.6-*, shannon-2-*, Shannon 3 saime

Bez max_tokens vērtība ir 4,096, bet shannon-coder-1 — 65,536.

metadata, top_k, service_tier un cache_control atzīmes blokos tiek pieņemtas, lai esošais klienta kods darbotos nemainīts. Tās atbildi nemaina; uzvedņu kešošana hostētajiem atvērto svaru modeļiem ir automātiska.

JSON atbildi pēc shēmas pieprasa ar response_format Chat Completions un ar text.format Responses. Strukturēti izvadi

Pieprasījums ar sistēmas uzvedni un domāšanu

Šis pieprasījums sūta sistēmas uzvedni, domāšanas budžetu, temperatūru un apturēšanas secību. Tas izmanto hostētu atvērto svaru modeli, kas piemēro visu minēto.

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)

Hostētajiem atvērto svaru modeļiem usage norāda no uzvednes keša nolasītos tokenus atsevišķi no pārējiem ievades tokeniem.

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

Sistēmas uzvedne

system ir virkne vai teksta bloku masīvs formā [{"type": "text", "text": "…"}]. Bloku teksti tiek savienoti ar rindas pārtraukumu.

To piemēro hostētie atvērto svaru modeļi, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro un shannon-coder-1. Ar Shannon 3 saimes id norādījumus, kam jāizpildās, ievietojiet lietotāja ziņojumā.

Ziņojumi un satura bloki

Ziņojumam ir role, user vai assistant, un content. content ir virkne vai bloku masīvs.

Bloks Apraksts Pieejams
{"type": "text", "text": "…"} Teksts. Visi modeļi
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}
{"type": "image", "source": {"type": "url", "url": "…"}}
Attēls user ziņojumā, kā base64 vai pēc URL. Shannon 3 saime, shannon-1.6-lite, shannon-1.6-pro un hostētie atvērto svaru modeļi, kuriem norādīta attēlu ievade
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Dokuments (PDF, Word, PowerPoint vai Excel) user ziņojumā, kā base64 vai pēc URL. Shannon 3 saime
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} assistant ziņojumā: rīka izsaukums, ko modelis veica iepriekšējā atbildē. Visi modeļi
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} user ziņojumā: šī izsaukuma rezultāts. content ir virkne vai teksta bloku saraksts. Visi modeļi

Iepriekšējas atbildes content varat nosūtīt atpakaļ tādu, kāds tas ir: text un tool_use bloki tiek nolasīti, thinking bloki tiek izlaisti.

Shannon līmeņos attēli un dokumenti tiek nolasīti no pēdējā user ziņojuma. Izmēriem un ierobežojumiem ir sava lapa. Attēli un faili

Domāšana

Hostētie atvērto svaru modeļi thinking pārvērš spriešanas apjomā. Bez lauka apjoms ir augsts.

Forma budget_tokens Ietekme
{"type": "disabled"} Bez spriešanas. Atbildē nav thinking bloka.
{"type": "enabled", "budget_tokens": 2048} ≤ 2,048 Zems apjoms.
{"type": "enabled", "budget_tokens": 8192} ≤ 8,192 Vidējs apjoms.
{"type": "enabled", "budget_tokens": 16000} > 8,192 Augsts apjoms.

Modelis, kas spriež, atgriež savu spriešanu kā bloku {"type": "thinking", "thinking": "…"} pirms teksta. To sūta arī Shannon līmeņi, kas spriež.

Apjomi ir aprakstīti savā lapā. Spriešanas apjoms

Rīki

Rīks ir funkcija, ko izpilda jūsu kods. Aprakstiet katru ar name, description un input_schema. Kad modelis vēlas rīku, atbildē ir tool_use bloks un stop_reason ir tool_use.

Rīka definīcija laukā tools:

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

Atbildes, kas to izsauc, content:

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

Izpildiet rīku, tad nosūtiet pieprasījumu vēlreiz, messages pievienojot izsaukumu un tool_result bloku:

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 Ietekme Piemēro
{"type": "auto"} Modelis izlemj, vai izsaukt rīku. Tas ir noklusējums. Visi modeļi
{"type": "any"} Modelim jāizsauc kāds no rīkiem. Hostētie atvērto svaru modeļi
{"type": "tool", "name": "…"} Modelim jāizsauc nosauktais rīks. Hostētie atvērto svaru modeļi

Tiek nolasīti tikai rīki ar input_schema. Tīmekļa meklēšana šajā galapunktā nav rīks: iestatiet lauku web_search.

Rīku cikls ir pilnībā aprakstīts savā lapā. Funkciju izsaukšana

Atbilde

Lauks Tips Apraksts Sūta
id string msg_, kam seko 32 heksadecimālas rakstzīmes. Visi modeļi
type string Vienmēr message. Visi modeļi
role string Vienmēr assistant. Visi modeļi
model string Modeļa, kas atbildēja, kanoniskais id. Visi modeļi
content array Atbildes bloki šādā secībā: thinking, ja modelis spriedis, text, tad viens tool_use katram rīka izsaukumam. Visi modeļi
stop_reason string Kāpēc atbilde beidzās. Skatiet vērtības tālāk. Visi modeļi
usage object input_tokens un output_tokens. Visi modeļi
sources array Tikai pieprasījumam ar web_search: true, kura meklēšana kaut ko atrada: rezultāti, kas doti modelim, katrs ar index, title un url. [1] atbildē ir ieraksts ar index 1. Straumē tas nāk ar notikumu message_delta. shannon-1.6-*, shannon-2-*, Shannon 3 saime
usage.cache_read_input_tokens integer cache_read_input_tokens ir uzvednes daļa, kas nolasīta no keša; input_tokens ir pārējais. cache_creation_input_tokens vienmēr ir 0. Hostētie atvērto svaru modeļi

Atbildes bloki

Bloks Apraksts
{"type": "thinking", "thinking": "…"} Modeļa spriešana. Locekļa signature nav.
{"type": "text", "text": "…"} Atbildes teksts. Tas var būt tukšs, ja atbilde ir rīka izsaukums.
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} Rīka izsaukums. input ir JSON objekts. Rezultātu sūtiet atpakaļ ar to pašu id.

stop_reason

stop_reason Apraksts Sūta
end_turn Modelis pabeidza atbildi, vai parādījās kāda no jūsu stop_sequences. Visi modeļi
tool_use Atbildē ir viens vai vairāki rīku izsaukumi. Visi modeļi
max_tokens Atbilde tika pārtraukta pie izvades ierobežojuma. Shannon 3 saime, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, straumēs

Straumēšana

Iestatiet stream uz true, lai saņemtu server-sent events. Katram kadram ir rinda event: ar notikuma nosaukumu un rinda data: ar JSON objektu, kas atkārto nosaukumu laukā type. Anthropic SDK straumes palīgfunkcijas šos notikumus nolasa jūsu vietā:

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)

Notikumi tādā secībā, kādā tie ierodas:

Notikums Dati Kad
message_start message Vienmēr pirmais. message satur id, lomu, modeli, tukšu content un usage, kas sākas ar nulli.
content_block_start index, content_block Atveras bloks. content_block ir tukšs text vai thinking bloks vai tool_use bloks ar savu id un name.
content_block_delta index, delta {"type": "thinking_delta", "thinking"} Spriešanas gabals thinking blokam.
content_block_delta index, delta {"type": "text_delta", "text"} Atbildes gabals text blokam.
content_block_delta index, delta {"type": "input_json_delta", "partial_json"} Rīka izsaukuma argumenti, pilnībā vienā deltā, tool_use blokam.
content_block_stop index Bloks ar šo index ir pabeigts.
message_delta delta {stop_reason, stop_sequence}, usage Atbildes beigas: delta.stop_reason un pieprasījuma usage.
message_stop Vienmēr pēdējais.

Bloki tiek numurēti ar index tādā secībā, kādā tie atveras, un viens bloks ir pabeigts, pirms atveras nākamais. Lasiet katru bloku pēc tā tipa, nevis numura: straume var vispirms atvērt tukšu text bloku, tad thinking bloku un atbildi piegādāt vēlākā text blokā.

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

Sūta Apraksts
Shannon 3 saime, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 ping notikums ar datiem {"type": "ping"} ik pēc 15 sekundēm.
Hostētie atvērto svaru modeļi Komentāra rinda : keepalive ik pēc 15 sekundēm, kamēr modelis strādā.

Straume, kas neizdodas

Kļūme pēc straumes sākuma ir error notikums ar tādu pašu pamattekstu kā kļūdas atbildei: {"type": "error", "error": {"type", "message"}}. Noslēguma notikumi message_delta un message_stop tāpat seko. Uzskatiet atbildi par neizdevušos un nosūtiet pieprasījumu vēlreiz.

Kļūdas

Kļūdas izmanto Anthropic kļūdas pamattekstu: type ir error, un objektā error ir type un message. Tabulā ir uzskaitīts tas, ko šis galapunkts atgriež visbiežāk. Pilns saraksts ar norādēm, ko mēģināt atkārtot, ir atsevišķā lapā. Kļūdu apstrāde

400 JSON
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Statuss Veids Ziņojums Kad
401 authentication_error Missing authentication
Invalid API key
API atslēga netika nosūtīta, vai atslēga nav zināma vai ir atsaukta.
400 invalid_request_error unknown model: <id> model nav Shannon modeļa id.
400 invalid_request_error No user message provided Shannon līmeņi: pieprasījumā nav lietotāja teksta un nav tools.
400 invalid_request_error <id> does not accept image input Attēls tika nosūtīts hostētam atvērto svaru modelim, kuram nav attēlu ievades.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … messages trūkst, vai laukam ir nepareizs JSON tips.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan max_tokens ir lielāks par jūsu atlikuma atlikušo daļu.
429 rate_limit_error Too many requests. Retry in <n>s. Flood protection: vairāk nekā 120 pieprasījumu minūtē jūsu kontā.
429 rate_limit_error Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan shannon-coder-1: jūsu plāna Shannon Coder izsaukumi pašreizējā 4 stundu logā ir izlietoti.
500 server_error The model backend failed to answer. Please retry. Modelis neizveidoja atbildi. Nosūtiet pieprasījumu vēlreiz.
502 api_error The model backend failed to answer. Please retry. Modelis neizveidoja atbildi. Nosūtiet pieprasījumu vēlreiz.

Tokenu skaitīšana

POST /v1/messages/count_tokens pieņem to pašu pamattekstu kā ziņojuma pieprasījums (model, system, messages, tools) un atgriež {"input_tokens": n}: ievades tokenu skaitu, ko pieprasījumam rēķinātu. Skaitīšana darbojas hostētajiem atvērto svaru modeļiem, tā ir bezmaksas un to neņem vērā pieprasījumu ierobežojums (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)

Skaitīšanai ir sava lapa ar vienkārša teksta galapunktu un ierobežojumiem. Tokenu skaitīšana