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) 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."}]
}' 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ā.
{
"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) 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?"}]
}' 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.
{
"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:
[
{
"name": "get_weather",
"description": "Current weather for a city.",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": [
"city"
]
}
}
] Atbildes, kas to izsauc, 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:
[
{
"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) 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."}]
}' 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ā.
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
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Statuss | Veids | Ziņojums | Kad |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid 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) 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} Skaitīšanai ir sava lapa ar vienkārša teksta galapunktu un ierobežojumiem. Tokenu skaitīšana