Anthropic-Format
POST /v1/messages hëlt eng Ufro am Anthropic-Messages-Format un an äntwert am selwechte Format, gestreamt oder net. Benotzt et mat der Anthropic-SDK a mat Tools, déi doropper opbauen, wéi Claude Code: stellt d'Basis-URL an, benotzt Ären Shannon-API-Schlëssel an nennt eng Shannon-Modell-ID.
POST https://api.shannon-ai.com/v1/messages
Riicht d'Anthropic-SDK op d'Shannon-Basis-URL. D'SDK hänkt /v1/messages un a schéckt Äre Schlëssel am x-api-key-Header.
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."}]
}' D'Äntwert ass eng Message, deem säi content eng Lëscht vu Blöck ass. Fannt d'Blöck un hirem type: wann de Modell reasonéiert huet, ass den éischte Block thinking an den Text kënnt duerno.
{
"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 | Wäert | Beschreiwung |
|---|---|---|
x-api-key | YOUR_API_KEY | Äre API-Schlëssel. Authorization: Bearer YOUR_API_KEY gëtt amplaz dovun akzeptéiert. |
content-type | application/json | Erfuerderlech. |
anthropic-version | 2023-06-01 | Gëtt akzeptéiert, ass net erfuerderlech. D'Anthropic-SDK schéckt 2023-06-01; d'Äntwert huet dasselwecht Format, egal wéi de Wäert ass. |
anthropic-beta | Gëtt akzeptéiert, ass net erfuerderlech. | |
x-request-id | Optional. Är eege ID fir d'Ufro. Si kënnt onverännert an der Äntwert zréck; ouni si huet d'Äntwert eng ID aus 12 hexadezimale Zeechen. |
Request-Felder
Nëmmen messages ass erfuerderlech. D'Kolonn Ugewannt vun nennt d'Modeller, bei deenen e Feld d'Äntwert ännert. D'Hosted Open-Weight-Modeller sinn déi zwielef IDen aus der Modellëscht; d'Shannon-3-Famill ass shannon-3, shannon-3-pro, shannon-3.1 an shannon-3.1-pro. Modeller a Präisser
| Feld | Typ | Standard | Beschreiwung | Ugewannt vun |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Eng Shannon-Modell-ID aus der Modellëscht. Schéckt se bei all Ufro mat. D'Zuerdnung ënnerscheet net tëscht Groß- a Kleinschreiwung. All aneren Numm gëtt 400 unknown model zréck, dofir muss en Tool, dat seng eege Modellnimm schéckt, op eng Shannon-ID agestallt ginn. | All Modeller |
messages | array | Erfuerderlech. D'Gespréich, eelst Message als éischt, mat de Rollen user an assistant. Kuckt ënnen Messagen a Content-Blöck. | All Modeller | |
system | string | array | Instruktioune fir de Modell: e String oder en Array vun Text-Blöck. Kuckt ënnen System-Prompt. | Hosted Open-Weight-Modeller, shannon-1.6-*, shannon-2-*, shannon-coder-1 | |
max_tokens | integer | 4096 | Uewergrenz vun der Äntwert, an Tokens. Optional bei dësem Endpoint; d'Anthropic-SDK schéckt et ëmmer mat. E Wäert ausserhalb vun 1 bis 65,536 gëtt an dee Beräich geréckelt. Et ass och de Betrag, dee vun Ärem Solde reservéiert gëtt, während d'Ufro leeft. | Hosted Open-Weight-Modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
stream | boolean | false | true schéckt d'Äntwert als Server-sent Events. Kuckt ënnen Streaming. | All Modeller |
temperature | number | Sampling-Temperatur. Bei den Hosted Open-Weight-Modeller ginn d'Wäerter tëscht 0 an 2 gehalen. | Hosted Open-Weight-Modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | Nucleus-Sampling. | Hosted Open-Weight-Modeller | |
stop_sequences | array | Bis zu 4 Strings. D'Äntwert hält virum éischten op, deen optrëtt. stop_reason bleift end_turn. | Hosted Open-Weight-Modeller | |
tools | array | D'Tools, déi de Modell opruffe kann, jidderee als {"name", "description", "input_schema"}. Kuckt ënnen Tools. | All Modeller | |
tool_choice | object | {"type": "auto"} léisst de Modell entscheeden, {"type": "any"} zwéngt en, en Tool opzeruffen, {"type": "tool", "name": "…"} zwéngt en, dat Tool opzeruffen. | Hosted Open-Weight-Modeller | |
thinking | object | Wéi vill de Modell reasonéiert, éier hien äntwert. Kuckt ënnen Thinking. | Hosted Open-Weight-Modeller | |
web_search | boolean | false | En Zousaz vu Shannon zum Format: true léisst de Modell um Web sichen, éier hien äntwert. | shannon-1.6-*, shannon-2-*, Shannon-3-Famill |
Ouni max_tokens ass de Wäert 4,096, a bei shannon-coder-1 65,536.
metadata, top_k, service_tier an cache_control-Markéierungen op Blöck ginn akzeptéiert, sou datt bestehende Client-Code onverännert leeft. Si änneren d'Äntwert net; Prompt Caching bei den Hosted Open-Weight-Modeller ass automatesch.
Eng JSON-Äntwert no engem Schema gëtt bei Chat Completions mat response_format an bei Responses mat text.format ugefrot. Strukturéiert Output
Eng Ufro mat System-Prompt an Thinking
Dës Ufro schéckt e System-Prompt, e Thinking-Budget, eng Temperatur an eng Stop-Sequenz. Si benotzt en Hosted Open-Weight-Modell, dee se all applizéiert.
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?"}]
}' Bei den Hosted Open-Weight-Modeller mellt usage d'Tokens, déi aus dem Prompt-Cache gelies goufen, getrennt vun deenen anere Input-Tokens.
{
"usage": {
"input_tokens": 31,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"output_tokens": 62
}
} System-Prompt
system ass e String oder en Array vun Text-Blöck an der Form [{"type": "text", "text": "…"}]. D'Texter vun de Blöck ginn mat engem Zeilenëmbroch verbonnen.
Hie gëtt vun den Hosted Open-Weight-Modeller, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro a shannon-coder-1 ugewannt. Bei enger ID aus der Shannon-3-Famill setzt Instruktioune, déi gëllen, an d'Benotzermessage.
Messagen a Content-Blöck
Eng Message huet eng role, user oder assistant, an e content. content ass e String oder en Array vu Blöck.
| Block | Beschreiwung | Verfügbar bei |
|---|---|---|
{"type": "text", "text": "…"} | Text. | All Modeller |
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}{"type": "image", "source": {"type": "url", "url": "…"}} | E Bild an enger user-Message, als base64 oder iwwer URL. | Shannon-3-Famill, shannon-1.6-lite, shannon-1.6-pro, an d'Hosted Open-Weight-Modeller, déi Bild-Input opféieren |
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | En Dokument (PDF, Word, PowerPoint oder Excel) an enger user-Message, als base64 oder iwwer URL. | Shannon-3-Famill |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | An enger assistant-Message: en Tool-Opruff, deen de Modell an enger fréierer Äntwert gemaach huet. | All Modeller |
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} | An enger user-Message: d'Resultat vun deem Opruff. content ass e String oder eng Lëscht vun Text-Blöck. | All Modeller |
Dir kënnt de content vun enger fréierer Äntwert onverännert zréckschécken: text- an tool_use-Blöck ginn gelies, thinking-Blöck ginn iwwersprong.
Bei den Shannon-Niveaue ginn Biller an Dokumenter aus der leschter user-Message gelies. Gréissten a Limite hunn hir eege Säit. Biller a Fichieren
Thinking
D'Hosted Open-Weight-Modeller ordnen thinking engem Reasoning-Effort zou. Ouni d'Feld ass den Effort héich.
| Form | budget_tokens | Wierkung |
|---|---|---|
{"type": "disabled"} | Keng Reasoning. D'Äntwert huet keen thinking-Block. | |
{"type": "enabled", "budget_tokens": 2048} | ≤ 2,048 | Niddregen Effort. |
{"type": "enabled", "budget_tokens": 8192} | ≤ 8,192 | Mëttleren Effort. |
{"type": "enabled", "budget_tokens": 16000} | > 8,192 | Héijen Effort. |
E Modell, dat reasonéiert, schéckt seng Reasoning als Block {"type": "thinking", "thinking": "…"} virum Text zréck. D'Shannon-Niveauen, déi reasonéieren, schécken et och.
D'Efforte si op hirer eegener Säit beschriwwen. Reasoning-Effort
Tools
En Tool ass eng Funktioun, déi Äre Code ausféiert. Beschreift all Tool mat engem name, enger description an engem input_schema. Wann de Modell en Tool wëll, enthält d'Äntwert en tool_use-Block an stop_reason ass tool_use.
Eng Tool-Definitioun an tools:
[
{
"name": "get_weather",
"description": "Current weather for a city.",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": [
"city"
]
}
}
] De content vun enger Äntwert, déi et opruff:
[
{
"type": "text",
"text": ""
},
{
"type": "tool_use",
"id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"name": "get_weather",
"input": {
"city": "Paris"
}
}
] Féiert d'Tool aus, schéckt dann d'Ufro nach eng Kéier mam Opruff an engem tool_result-Block, deen zu messages dobäikënnt:
[
{
"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
| Form | Wierkung | Ugewannt vun |
|---|---|---|
{"type": "auto"} | De Modell entscheet, ob en en Tool opruff. Dat ass de Standard. | All Modeller |
{"type": "any"} | De Modell muss ee vun den Tools opruffen. | Hosted Open-Weight-Modeller |
{"type": "tool", "name": "…"} | De Modell muss dat genannt Tool opruffen. | Hosted Open-Weight-Modeller |
Nëmme Tools mat engem input_schema ginn gelies. D'Websich ass bei dësem Endpoint kee Tool: setzt d'Feld web_search.
D'Tool-Loop ass komplett op hirer eegener Säit beschriwwen. Funktiounsofruff
D'Äntwert
| Feld | Typ | Beschreiwung | Geschéckt vun |
|---|---|---|---|
id | string | msg_ gefollegt vun 32 hexadezimale Zeechen. | All Modeller |
type | string | Ëmmer message. | All Modeller |
role | string | Ëmmer assistant. | All Modeller |
model | string | Déi kanonesch ID vum Modell, dee geäntwert huet. | All Modeller |
content | array | D'Blöck vun der Äntwert, an dëser Reiefolleg: thinking, wann de Modell reasonéiert huet, text, dann een tool_use pro Tool-Opruff. | All Modeller |
stop_reason | string | Firwat d'Äntwert opgehalen huet. Kuckt d'Wäerter ënnen. | All Modeller |
usage | object | input_tokens an output_tokens. | All Modeller |
sources | array | Just bei enger Ufro mat web_search: true, där hir Sich eppes fonnt huet: d'Resultater, déi de Modell kritt huet, all mat index, title an url. [1] an der Äntwert ass den Androck mat index 1. An engem Stream kënnt et mam message_delta-Event. | shannon-1.6-*, shannon-2-*, Shannon-3-Famill |
usage.cache_read_input_tokens | integer | cache_read_input_tokens ass den Deel vum Prompt, deen aus dem Cache gelies gouf; input_tokens ass de Rescht. cache_creation_input_tokens ass ëmmer 0. | Hosted Open-Weight-Modeller |
Äntwert-Blöck
| Block | Beschreiwung |
|---|---|
{"type": "thinking", "thinking": "…"} | D'Reasoning vum Modell. Et gëtt kee signature-Member. |
{"type": "text", "text": "…"} | Den Text vun der Äntwert. Hie kann eidel sinn, wann d'Äntwert en Tool-Opruff ass. |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | En Tool-Opruff. input ass en JSON-Objet. Schéckt d'Resultat mat derselwechter id zréck. |
stop_reason
| stop_reason | Beschreiwung | Geschéckt vun |
|---|---|---|
end_turn | De Modell huet seng Äntwert fäerdeg gemaach, oder eng vun Ären stop_sequences ass opgetruede. | All Modeller |
tool_use | D'Äntwert enthält een oder méi Tool-Ufruffer. | All Modeller |
max_tokens | D'Äntwert gouf um Output-Limit ofgeschnidden. | Shannon-3-Famill, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, a Streams |
Streaming
Setzt stream op true fir Server-sent Events. All Frame huet eng event:-Zeil mam Numm vum Event an eng data:-Zeil mat engem JSON-Objet, dat den Numm an type widderhëlt. D'Stream-Helper vun der Anthropic-SDK liesen dës Events fir Iech:
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."}]
}' D'Events, an der Reiefolleg, wéi si ukommen:
| Event | Daten | Wéini |
|---|---|---|
message_start | message | Ëmmer als éischt. message enthält d'ID, d'Roll, de Modell, e leeren content an eng usage, déi bei null ufänkt. |
content_block_start | index, content_block | E Block geet op. content_block ass en eidele text- oder thinking-Block, oder en tool_use-Block mat senger id a sengem name. |
content_block_delta | index, delta {"type": "thinking_delta", "thinking"} | E Stéck vun der Reasoning, fir en thinking-Block. |
content_block_delta | index, delta {"type": "text_delta", "text"} | E Stéck vun der Äntwert, fir en text-Block. |
content_block_delta | index, delta {"type": "input_json_delta", "partial_json"} | D'Argumenter vun engem Tool-Opruff, komplett an engem Delta, fir en tool_use-Block. |
content_block_stop | index | De Block mat dësem index ass komplett. |
message_delta | delta {stop_reason, stop_sequence}, usage | D'Enn vun der Äntwert: delta.stop_reason, an d'usage vun der Ufro. |
message_stop | Ëmmer als lescht. |
D'Blöck si per index an der Reiefolleg nummeréiert, an där si opgoen, an ee Block ass komplett, éier dee nächste opgeet. Liest all Block no sengem Typ, net no senger Nummer: e Stream kann zuerst en eidele text-Block opmaachen, dann den thinking-Block, an d'Äntwert an engem spéideren text-Block liwweren.
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
| Geschéckt vun | Beschreiwung |
|---|---|
Shannon-3-Famill, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | E ping-Event mat den Daten {"type": "ping"}, all 15 Sekonnen. |
| Hosted Open-Weight-Modeller | Eng Kommentarzeil : keepalive, all 15 Sekonnen, während de Modell schafft. |
E Stream, dee feelschléit
E Feeler, nodeems de Stream ugefaang huet, ass en error-Event mat deemselwechte Body wéi eng Feeler-Äntwert: {"type": "error", "error": {"type", "message"}}. D'Ofschlossevents message_delta an message_stop kommen trotzdem nach. Behandelt d'Äntwert als feelgeschloen a schéckt d'Ufro nach eng Kéier.
Feeler
Feeler benotzen den Anthropic-Feeler-Body: type ass error, an d'error-Objet enthält en type an eng message. D'Tabell lëscht, wat dësen Endpoint am heefegsten zréckgëtt. Déi komplett Lëscht, mat deem, wat Dir nei probéiere sollt, huet hir eege Säit. Feelerbehandlung
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Status | Typ | Message | Wéini |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | Et gouf kee API-Schlëssel geschéckt, oder de Schlëssel ass onbekannt oder widderruff. |
400 | invalid_request_error | unknown model: <id> | model ass keng Shannon-Modell-ID. |
400 | invalid_request_error | No user message provided | Shannon-Niveauen: d'Ufro huet keen Benotzertext a keng tools. |
400 | invalid_request_error | <id> does not accept image input | E Bild gouf un en Hosted Open-Weight-Modell ouni Bild-Input geschéckt. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | messages feelt, oder e Feld huet de falsche JSON-Typ. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_tokens ass méi grouss wéi dat, wat vun Ärem Solde iwwreg ass. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Flood-Schutz: méi wéi 120 Ufroen an enger Minutt op Ärem Kont. |
429 | rate_limit_error | Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan | shannon-coder-1: d'Shannon-Coder-Ufruffer vun Ärem Plan fir dat aktuellt 4-Stonne-Fënster sinn opgebraucht. |
500 | server_error | The model backend failed to answer. Please retry. | De Modell huet keng Äntwert produzéiert. Schéckt d'Ufro nach eng Kéier. |
502 | api_error | The model backend failed to answer. Please retry. | De Modell huet keng Äntwert produzéiert. Schéckt d'Ufro nach eng Kéier. |
Tokens zielen
POST /v1/messages/count_tokens hëlt deeselwechte Body wéi eng Message-Ufro (model, system, messages, tools) a gëtt {"input_tokens": n} zréck: d'Zuel vun den Input-Tokens, déi d'Ufro kaschte géif. Et zielt fir d'Hosted Open-Weight-Modeller, ass gratis a gëtt net vum Flood-Schutz gezielt.
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} D'Zielen huet seng eege Säit, mam Plain-Text-Endpoint an de Limiten. Tokenzielung