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) 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."}]
}' 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.
{
"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) 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?"}]
}' Talpinamuose atvirų svorių modeliuose usage praneša tokenus, nuskaitytus iš prompt kešo, atskirai nuo kitų įvesties tokenų.
{
"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:
[
{
"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:
[
{
"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ą:
[
{
"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) 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."}]
}' Į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.
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
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Būsena | Tipas | Pranešimas | Kada |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid 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) 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} Skaičiavimas turi savo puslapį, kuriame aprašytas paprasto teksto galinis taškas ir ribos. Tokenų skaičiavimas