Anthropic
POST /v1/messages võtab vastu päringu Anthropic Messages vormingus ja vastab samas vormingus, voona või ilma. Kasuta seda Anthropic SDK-ga ja selle peal ehitatud tööriistadega, näiteks Claude Code: sea baas-URL, kasuta oma Shannoni API võtit ja nimeta Shannoni mudeli id.
POST https://api.shannon-ai.com/v1/messages
Suuna Anthropic SDK Shannoni base URL-ile. SDK lisab /v1/messages ja saadab sinu võtme päises 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) import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com",
});
const message = await client.messages.create({
model: "shannon-3",
max_tokens: 1024,
messages: [{ role: "user", content: "Say hello in one sentence." }],
});
for (const block of message.content) {
if (block.type === "text") console.log(block.text);
} curl https://api.shannon-ai.com/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"model": "shannon-3",
"max_tokens": 1024,
"messages": [{"role": "user", "content": "Say hello in one sentence."}]
}' Vastus on sõnum, mille content on plokkide loend. Leia plokid nende type järgi: kui mudel arutles, on esimene plokk thinking ja tekst tuleb pärast seda.
{
"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
}
} Päised
| Päis | Väärtus | Kirjeldus |
|---|---|---|
x-api-key | YOUR_API_KEY | Sinu API võti. Selle asemel võetakse vastu ka Authorization: Bearer YOUR_API_KEY. |
content-type | application/json | Kohustuslik. |
anthropic-version | 2023-06-01 | Võetakse vastu, ei ole kohustuslik. Anthropic SDK saadab 2023-06-01; vastuse vorming on sama olenemata väärtusest. |
anthropic-beta | Võetakse vastu, ei ole kohustuslik. | |
x-request-id | Valikuline. Sinu enda päringu id. See tuleb vastuses muutmata kujul tagasi; ilma selleta on vastuse id 12 kuueteistkümnendmärgiga. |
Päringu väljad
Kohustuslik on ainult messages. Veerg Rakendavad nimetab mudelid, millel väli vastust muudab. Hostitud avatud kaaludega mudelid on mudelite loendi kaksteist id-d; Shannon 3 perekond on shannon-3, shannon-3-pro, shannon-3.1 ja shannon-3.1-pro. Mudelid ja hinnad
| Väli | Tüüp | Vaikeväärtus | Kirjeldus | Rakendavad |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Shannoni mudeli id mudelite loendist. Saada see iga päringuga. Võrdlemisel ei arvestata suur- ja väiketähti. Iga muu nimi tagastab 400 unknown model, seega tööriist, mis saadab oma mudelinimesid, tuleb seada Shannoni id peale. | Kõik mudelid |
messages | array | Kohustuslik. Vestlus, vanim sõnum esimesena, rollidega user ja assistant. Vaata allpool jaotist Sõnumid ja sisuplokid. | Kõik mudelid | |
system | string | array | Juhised mudelile: string või tekstiplokkide massiiv. Vaata allpool jaotist Süsteemiprompt. | Hostitud avatud kaaludega mudelid, shannon-1.6-*, shannon-2-*, shannon-coder-1 | |
max_tokens | integer | 4096 | Vastuse ülempiir tokenites. Sellel lõpp-punktil valikuline; Anthropic SDK saadab selle alati. Väärtus väljaspool vahemikku 1 kuni 65,536 viiakse sellesse vahemikku. See on ka summa, mis päringu töötamise ajal sinu saldost kõrvale pannakse. | Hostitud avatud kaaludega mudelid, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
stream | boolean | false | true saadab vastuse server-sent events kujul. Vaata allpool jaotist Voogedastus. | Kõik mudelid |
temperature | number | Valimi temperatuur. Hostitud avatud kaaludega mudelitel hoitakse väärtused vahemikus 0 kuni 2. | Hostitud avatud kaaludega mudelid, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | Nucleus sampling. | Hostitud avatud kaaludega mudelid | |
stop_sequences | array | Kuni 4 stringi. Vastus lõpeb enne esimest, mis ilmub. stop_reason jääb end_turn. | Hostitud avatud kaaludega mudelid | |
tools | array | Tööriistad, mida mudel võib kutsuda, igaüks kujul {"name", "description", "input_schema"}. Vaata allpool jaotist Tööriistad. | Kõik mudelid | |
tool_choice | object | {"type": "auto"} laseb mudelil otsustada, {"type": "any"} sunnib tööriista kutsuma, {"type": "tool", "name": "…"} sunnib kutsuma just selle tööriista. | Hostitud avatud kaaludega mudelid | |
thinking | object | Kui palju mudel enne vastamist arutleb. Vaata allpool jaotist Mõtlemine. | Hostitud avatud kaaludega mudelid | |
web_search | boolean | false | Shannoni täiendus vormingule: true laseb mudelil enne vastamist veebist otsida. | shannon-1.6-*, shannon-2-*, Shannon 3 perekond |
Ilma max_tokens väljata on väärtus 4,096 ja shannon-coder-1 puhul 65,536.
metadata, top_k, service_tier ja cache_control markerid plokkidel võetakse vastu, et olemasolev kliendikood töötaks muutmata kujul. Need ei muuda vastust; prompt caching hostitud avatud kaaludega mudelitel on automaatne.
JSON-vastust skeemi järgi küsitakse Chat Completionsis response_format ja Responsesis text.format abil. Struktureeritud väljundid
Päring süsteemiprompti ja mõtlemisega
See päring saadab süsteemiprompti, thinking-eelarve, temperatuuri ja stop-jada. Kasutusel on hostitud avatud kaaludega mudel, mis rakendab neid kõiki.
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) import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com",
});
const message = await 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 (const block of message.content) {
if (block.type === "thinking") console.log("reasoning:", block.thinking);
if (block.type === "text") console.log("answer:", block.text);
}
console.log(message.usage); curl https://api.shannon-ai.com/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"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?"}]
}' Hostitud avatud kaaludega mudelitel näitab usage promptivahemälust loetud tokeneid eraldi muudest sisendtokenitest.
{
"usage": {
"input_tokens": 31,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"output_tokens": 62
}
} Süsteemiprompt
system on string või tekstiplokkide massiiv kujul [{"type": "text", "text": "…"}]. Plokkide tekstid ühendatakse reavahetusega.
Seda rakendavad hostitud avatud kaaludega mudelid, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro ja shannon-coder-1. Shannon 3 perekonna id puhul pane juhised, mis peavad kehtima, kasutaja sõnumisse.
Sõnumid ja sisuplokid
Sõnumil on role, user või assistant, ja content. content on string või plokkide massiiv.
| Plokk | Kirjeldus | Saadaval |
|---|---|---|
{"type": "text", "text": "…"} | Tekst. | Kõik mudelid |
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}{"type": "image", "source": {"type": "url", "url": "…"}} | Pilt user sõnumis, base64-na või URL-iga. | Shannon 3 perekond, shannon-1.6-lite, shannon-1.6-pro ja hostitud avatud kaaludega mudelid, mis loetlevad pildisisendi |
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | Dokument (PDF, Word, PowerPoint või Excel) user sõnumis, base64-na või URL-iga. | Shannon 3 perekond |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | assistant sõnumis: tööriistakutse, mille mudel tegi varasemas vastuses. | Kõik mudelid |
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} | user sõnumis: selle kutse tulemus. content on string või tekstiplokkide loend. | Kõik mudelid |
Varasema vastuse content võid saata tagasi muutmata kujul: text ja tool_use plokid loetakse, thinking plokid jäetakse vahele.
Shannoni tasemetel loetakse pildid ja dokumendid viimasest user sõnumist. Suurustel ja piirangutel on oma leht. Pildid ja failid
Mõtlemine
Hostitud avatud kaaludega mudelid vastendavad thinking arutluse pingutuseks. Ilma selle väljata on pingutus kõrge.
| Kuju | budget_tokens | Mõju |
|---|---|---|
{"type": "disabled"} | Ilma arutluseta. Vastuses ei ole thinking-plokki. | |
{"type": "enabled", "budget_tokens": 2048} | ≤ 2,048 | Madal pingutus. |
{"type": "enabled", "budget_tokens": 8192} | ≤ 8,192 | Keskmine pingutus. |
{"type": "enabled", "budget_tokens": 16000} | > 8,192 | Kõrge pingutus. |
Arutlev mudel tagastab oma arutluse plokina {"type": "thinking", "thinking": "…"} teksti ees. Arutlevad Shannoni tasemed saadavad selle samuti.
Pingutuse tasemeid kirjeldatakse nende oma lehel. Reasoning-pingutus
Tööriistad
Tööriist on funktsioon, mida sinu kood käivitab. Kirjelda igaüks väljadega name, description ja input_schema. Kui mudel soovib tööriista, sisaldab vastus tool_use-plokki ja stop_reason on tool_use.
Tööriista definitsioon väljas tools:
[
{
"name": "get_weather",
"description": "Current weather for a city.",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": [
"city"
]
}
}
] Seda kutsuva vastuse content:
[
{
"type": "text",
"text": ""
},
{
"type": "tool_use",
"id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"name": "get_weather",
"input": {
"city": "Paris"
}
}
] Käivita tööriist ja saada päring uuesti, lisades messages hulka kutse ja tool_result-ploki:
[
{
"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
| Kuju | Mõju | Rakendavad |
|---|---|---|
{"type": "auto"} | Mudel otsustab, kas tööriista kutsuda. See on vaikeväärtus. | Kõik mudelid |
{"type": "any"} | Mudel peab kutsuma ühe tööriistadest. | Hostitud avatud kaaludega mudelid |
{"type": "tool", "name": "…"} | Mudel peab kutsuma nimetatud tööriista. | Hostitud avatud kaaludega mudelid |
Loetakse ainult tööriistu, millel on input_schema. Veebiotsing ei ole selles lõpp-punktis tööriist: määra väli web_search.
Tööriistatsüklit kirjeldatakse täielikult selle oma lehel. Funktsioonikutse
Vastus
| Väli | Tüüp | Kirjeldus | Saatja |
|---|---|---|---|
id | string | msg_, millele järgneb 32 kuueteistkümnendsüsteemi märki. | Kõik mudelid |
type | string | Alati message. | Kõik mudelid |
role | string | Alati assistant. | Kõik mudelid |
model | string | Vastanud mudeli kanooniline id. | Kõik mudelid |
content | array | Vastuse plokid selles järjekorras: thinking, kui mudel arutles, text ja seejärel üks tool_use iga tööriistakutse kohta. | Kõik mudelid |
stop_reason | string | Miks vastus lõppes. Vaata väärtusi allpool. | Kõik mudelid |
usage | object | input_tokens ja output_tokens. | Kõik mudelid |
sources | array | Ainult päringul, milles on web_search: true ja mille otsing leidis midagi: tulemused, mille mudel sai, igaühel index, title ja url. [1] vastuses on kirje, mille index on 1. Voos tuleb see sündmusega message_delta. | shannon-1.6-*, shannon-2-*, Shannon 3 perekond |
usage.cache_read_input_tokens | integer | cache_read_input_tokens on vahemälust loetud osa promptist; input_tokens on ülejäänu. cache_creation_input_tokens on alati 0. | Hostitud avatud kaaludega mudelid |
Vastuse plokid
| Plokk | Kirjeldus |
|---|---|
{"type": "thinking", "thinking": "…"} | Mudeli arutlus. Välja signature ei ole. |
{"type": "text", "text": "…"} | Vastuse tekst. See võib olla tühi, kui vastus on tööriistakutse. |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | Tööriistakutse. input on JSON-objekt. Saada tulemus tagasi sama id-ga. |
stop_reason
| stop_reason | Kirjeldus | Saatja |
|---|---|---|
end_turn | Mudel lõpetas vastuse või ilmus üks sinu stop_sequences jada. | Kõik mudelid |
tool_use | Vastus sisaldab ühte või mitut tööriistakutset. | Kõik mudelid |
max_tokens | Vastus katkestati väljundi piirangu juures. | Shannon 3 perekond, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, voogudes |
Voogedastus
Määra stream väärtuseks true, et saada server-sent events. Igal kaadril on event:-rida sündmuse nimega ja data:-rida JSON-objektiga, mis kordab nime väljas type. Anthropic SDK voohelperid loevad need sündmused sinu eest:
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) import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com",
});
const stream = client.messages.stream({
model: "shannon-3",
max_tokens: 1024,
messages: [{ role: "user", content: "Explain server-sent events in three sentences." }],
});
stream.on("text", (text) => process.stdout.write(text));
const message = await stream.finalMessage();
console.log("\n", message.stop_reason, message.usage); curl -N https://api.shannon-ai.com/v1/messages \
-H "x-api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"model": "shannon-3",
"max_tokens": 1024,
"stream": true,
"messages": [{"role": "user", "content": "Explain server-sent events in three sentences."}]
}' Sündmused sellises järjekorras, nagu need saabuvad:
| Sündmus | Andmed | Millal |
|---|---|---|
message_start | message | Alati esimene. message sisaldab id-d, rolli, mudelit, tühja content ja nullist algavat usage. |
content_block_start | index, content_block | Plokk avaneb. content_block on tühi text- või thinking-plokk või tool_use-plokk koos oma id ja name. |
content_block_delta | index, delta {"type": "thinking_delta", "thinking"} | Arutluse tükk thinking-ploki jaoks. |
content_block_delta | index, delta {"type": "text_delta", "text"} | Vastuse tükk text-ploki jaoks. |
content_block_delta | index, delta {"type": "input_json_delta", "partial_json"} | Tööriistakutse argumendid tool_use-ploki jaoks, tervikuna ühes deltas. |
content_block_stop | index | Selle index-iga plokk on lõpetatud. |
message_delta | delta {stop_reason, stop_sequence}, usage | Vastuse lõpp: delta.stop_reason ja päringu usage. |
message_stop | Alati viimane. |
Plokid nummerdatakse index järgi selles järjekorras, nagu nad avanevad, ja üks plokk on lõpetatud enne, kui järgmine avaneb. Loe iga plokki selle tüübi, mitte numbri järgi: voog võib avada kõigepealt tühja text-ploki, siis thinking-ploki ja anda vastuse hilisemas text-plokis.
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
| Saatja | Kirjeldus |
|---|---|
Shannon 3 perekond, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | ping-sündmus andmetega {"type": "ping"}, iga 15 sekundi järel. |
| Hostitud avatud kaaludega mudelid | Kommentaarirea : keepalive, iga 15 sekundi järel, kuni mudel töötab. |
Voog, mis ebaõnnestub
Tõrge pärast voo algust on error-sündmus, mille sisu on sama mis veavastusel: {"type": "error", "error": {"type", "message"}}. Lõpusündmused message_delta ja message_stop järgnevad siiski. Käsitle vastust ebaõnnestununa ja saada päring uuesti.
Vead
Vead kasutavad Anthropicu vea sisu: type on error ja error objekt sisaldab type ja message välja. Tabelis on loetletud, mida see lõpp-punkt kõige sagedamini tagastab. Täielikul loendil, koos juhisega, mida korrata, on oma leht. Vigade käsitlus
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Olek | Tüüp | Teade | Millal |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | API võtit ei saadetud või võti on tundmatu või tühistatud. |
400 | invalid_request_error | unknown model: <id> | model ei ole Shannoni mudeli id. |
400 | invalid_request_error | No user message provided | Shannoni tasemed: päringul pole kasutaja teksti ega tools. |
400 | invalid_request_error | <id> does not accept image input | Pilt saadeti hostitud avatud kaaludega mudelile, millel pole pildisisendit. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | messages puudub või väljal on vale JSON-tüüp. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_tokens on suurem kui sinu saldo järelejäänud osa. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Kiirusepiirang: üle 120 päringu minutis sinu kontol. |
429 | rate_limit_error | Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan | shannon-coder-1: sinu paketi Shannon Coderi kutsed jooksvas 4-tunnises aknas on ära kasutatud. |
500 | server_error | The model backend failed to answer. Please retry. | Mudel ei andnud vastust. Saada päring uuesti. |
502 | api_error | The model backend failed to answer. Please retry. | Mudel ei andnud vastust. Saada päring uuesti. |
Tokenite lugemine
POST /v1/messages/count_tokens võtab sama sisu mis sõnumipäring (model, system, messages, tools) ja tagastab {"input_tokens": n}: sisendtokenite arvu, mille eest päringut arveldataks. See toimib hostitud avatud kaaludega mudelitel, on tasuta ja kiirusepiirang seda ei loe.
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) import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com",
});
const count = await client.messages.countTokens({
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?" }],
});
console.log(count.input_tokens); curl https://api.shannon-ai.com/v1/messages/count_tokens \
-H "x-api-key: YOUR_API_KEY" \
-H "content-type: application/json" \
-d '{
"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?"}]
}'
# {"input_tokens": 31} Lugemisel on oma leht koos lihttekst-lõpp-punkti ja piirangutega. Tokenite lugemine