Antrooppinen muoto
POST /v1/messages ottaa vastaan pyynnön Anthropic Messages -muodossa ja vastaa samassa muodossa, suoratoistettuna tai ei. Käytä sitä Anthropic SDK:n ja sen päälle rakennettujen työkalujen, kuten Claude Coden, kanssa: aseta perus-URL, käytä Shannon API-avaintasi ja anna Shannon-mallin id.
POST https://api.shannon-ai.com/v1/messages
Osoita Anthropic SDK Shannonin perus-URL:iin. SDK lisää /v1/messages ja lähettää avaimesi x-api-key-otsakkeessa.
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."}]
}' Vastaus on viesti, jonka content on lohkojen lista. Tunnista lohkot niiden type-kentästä: kun malli päätteli, ensimmäinen lohko on thinking ja teksti tulee sen jälkeen.
{
"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
}
} Otsakkeet
| Otsake | Arvo | Kuvaus |
|---|---|---|
x-api-key | YOUR_API_KEY | API-avaimesi. Authorization: Bearer YOUR_API_KEY hyväksytään sen sijasta. |
content-type | application/json | Pakollinen. |
anthropic-version | 2023-06-01 | Hyväksytään, ei pakollinen. Anthropic SDK lähettää arvon 2023-06-01; vastauksella on sama muoto arvosta riippumatta. |
anthropic-beta | Hyväksytään, ei pakollinen. | |
x-request-id | Valinnainen. Oma id pyynnölle. Se palautuu vastauksessa muuttumattomana; ilman sitä vastauksessa on 12 heksadesimaalimerkin id. |
Pyynnön kentät
Vain messages on pakollinen. Käyttävät mallit -sarake nimeää mallit, joilla kenttä muuttaa vastausta. Hostatut avoimen painon mallit ovat mallilistan kaksitoista id:tä; Shannon 3 -perhe on shannon-3, shannon-3-pro, shannon-3.1 ja shannon-3.1-pro. Mallit ja hinnoittelu
| Kenttä | Tyyppi | Oletus | Kuvaus | Käyttävät mallit |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Shannon-mallin id mallilistasta. Lähetä se jokaisen pyynnön mukana. Kirjainkoolla ei ole merkitystä. Mikä tahansa muu nimi palauttaa 400 unknown model, joten työkalu, joka lähettää omia mallinimiään, on asetettava käyttämään Shannon-id:tä. | Kaikki mallit |
messages | array | Pakollinen. Keskustelu vanhin viesti ensin, rooleilla user ja assistant. Katso alta Viestit ja sisältölohkot. | Kaikki mallit | |
system | string | array | Ohjeet mallille: merkkijono tai tekstilohkojen taulukko. Katso alta System prompt. | Hostatut avoimen painon mallit, shannon-1.6-*, shannon-2-*, shannon-coder-1 | |
max_tokens | integer | 4096 | Vastauksen yläraja tokeneina. Valinnainen tässä päätepisteessä; Anthropic SDK lähettää sen aina. Alueen 1–65,536 ulkopuolinen arvo siirretään tälle alueelle. Se on myös määrä, joka varataan saldostasi pyynnön ajaksi. | Hostatut avoimen painon mallit, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
stream | boolean | false | true lähettää vastauksen server-sent events -tapahtumina. Katso alta Suoratoisto. | Kaikki mallit |
temperature | number | Näytteenoton lämpötila. Hostatuilla avoimen painon malleilla arvot pidetään välillä 0–2. | Hostatut avoimen painon mallit, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | Nucleus-näytteenotto. | Hostatut avoimen painon mallit | |
stop_sequences | array | Enintään 4 merkkijonoa. Vastaus päättyy ennen ensimmäistä niistä, joka esiintyy. stop_reason pysyy arvossa end_turn. | Hostatut avoimen painon mallit | |
tools | array | Työkalut, joita malli saa kutsua, kukin muodossa {"name", "description", "input_schema"}. Katso alta Työkalut. | Kaikki mallit | |
tool_choice | object | {"type": "auto"} antaa mallin päättää, {"type": "any"} pakottaa sen kutsumaan jotakin työkalua, {"type": "tool", "name": "…"} pakottaa sen kutsumaan kyseistä työkalua. | Hostatut avoimen painon mallit | |
thinking | object | Kuinka paljon malli päättelee ennen vastaamista. Katso alta Thinking. | Hostatut avoimen painon mallit | |
web_search | boolean | false | Shannonin lisäys formaattiin: true antaa mallin hakea verkosta ennen vastaamista. | shannon-1.6-*, shannon-2-*, Shannon 3 -perhe |
Ilman max_tokens-arvoa oletus on 4,096 ja shannon-coder-1:llä 65,536.
metadata, top_k, service_tier ja lohkojen cache_control-merkinnät hyväksytään, jotta olemassa oleva asiakaskoodi toimii muuttumattomana. Ne eivät muuta vastausta; hostattujen avoimen painon mallien prompt-välimuistitus on automaattista.
JSON-vastaus skeeman mukaan pyydetään response_format-kentällä Chat Completionsissa ja text.format-kentällä Responsesissa. Strukturoidut lähdöt
Pyyntö, jossa on system prompt ja thinking
Tämä pyyntö lähettää system promptin, thinking-budjetin, lämpötilan ja pysäytysjonon. Se käyttää hostattua avoimen painon mallia, joka soveltaa niitä kaikkia.
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?"}]
}' Hostatuilla avoimen painon malleilla usage raportoi prompt-välimuistista luetut tokenit erikseen muista syötetokeneista.
{
"usage": {
"input_tokens": 31,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"output_tokens": 62
}
} System prompt
system on merkkijono tai tekstilohkojen taulukko muodossa [{"type": "text", "text": "…"}]. Lohkojen tekstit yhdistetään rivinvaihdolla.
Sen soveltavat hostatut avoimen painon mallit, shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro ja shannon-coder-1. Shannon 3 -perheen id:llä pakollisesti noudatettavat ohjeet kuuluvat käyttäjän viestiin.
Viestit ja sisältölohkot
Viestillä on role, user tai assistant, ja content. content on merkkijono tai lohkojen taulukko.
| Lohko | Kuvaus | Saatavilla |
|---|---|---|
{"type": "text", "text": "…"} | Teksti. | Kaikki mallit |
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}{"type": "image", "source": {"type": "url", "url": "…"}} | Kuva user-viestissä, base64-muodossa tai URL:llä. | Shannon 3 -perhe, shannon-1.6-lite, shannon-1.6-pro ja hostatut avoimen painon mallit, joiden syötteeksi kuva on merkitty |
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | Dokumentti (PDF, Word, PowerPoint tai Excel) user-viestissä, base64-muodossa tai URL:llä. | Shannon 3 -perhe |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | assistant-viestissä: työkalukutsu, jonka malli teki aiemmassa vastauksessa. | Kaikki mallit |
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} | user-viestissä: kyseisen kutsun tulos. content on merkkijono tai tekstilohkojen lista. | Kaikki mallit |
Aiemman vastauksen content voi lähettää takaisin sellaisenaan: text- ja tool_use-lohkot luetaan, thinking-lohkot ohitetaan.
Shannon-tasoilla kuvat ja dokumentit luetaan viimeisestä user-viestistä. Koot ja rajat on kuvattu omalla sivullaan. Kuvat ja tiedostot
Thinking
Hostatut avoimen painon mallit kuvaavat thinking-kentän päättelyn tehoksi. Ilman kenttää teho on korkea.
| Muoto | budget_tokens | Vaikutus |
|---|---|---|
{"type": "disabled"} | Ei päättelyä. Vastauksessa ei ole thinking-lohkoa. | |
{"type": "enabled", "budget_tokens": 2048} | ≤ 2,048 | Matala teho. |
{"type": "enabled", "budget_tokens": 8192} | ≤ 8,192 | Keskitaso. |
{"type": "enabled", "budget_tokens": 16000} | > 8,192 | Korkea teho. |
Päättelevä malli palauttaa päättelynsä lohkona {"type": "thinking", "thinking": "…"} tekstin edellä. Myös päättelevät Shannon-tasot lähettävät sen.
Tehotasot on kuvattu omalla sivullaan. Päättelyn teho
Työkalut
Työkalu on funktio, jonka koodisi suorittaa. Kuvaa jokainen kentillä name, description ja input_schema. Kun malli haluaa työkalun, vastaus sisältää tool_use-lohkon ja stop_reason on tool_use.
Työkalumääritys kentässä tools:
[
{
"name": "get_weather",
"description": "Current weather for a city.",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": [
"city"
]
}
}
] Sen kutsuvan vastauksen content:
[
{
"type": "text",
"text": ""
},
{
"type": "tool_use",
"id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"name": "get_weather",
"input": {
"city": "Paris"
}
}
] Suorita työkalu ja lähetä sitten pyyntö uudelleen niin, että kutsu ja tool_result-lohko on lisätty kenttään 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
| Muoto | Vaikutus | Käyttävät mallit |
|---|---|---|
{"type": "auto"} | Malli päättää, kutsuuko se työkalua. Tämä on oletus. | Kaikki mallit |
{"type": "any"} | Mallin on kutsuttava jotakin työkaluista. | Hostatut avoimen painon mallit |
{"type": "tool", "name": "…"} | Mallin on kutsuttava nimettyä työkalua. | Hostatut avoimen painon mallit |
Vain työkalut, joilla on input_schema, luetaan. Verkkohaku ei ole työkalu tässä päätepisteessä: aseta kenttä web_search.
Työkaluluuppi on kuvattu kokonaisuudessaan omalla sivullaan. Toiminto kutsu
Vastaus
| Kenttä | Tyyppi | Kuvaus | Lähettäjä |
|---|---|---|---|
id | string | msg_ ja sen perässä 32 heksadesimaalimerkkiä. | Kaikki mallit |
type | string | Aina message. | Kaikki mallit |
role | string | Aina assistant. | Kaikki mallit |
model | string | Vastanneen mallin kanoninen id. | Kaikki mallit |
content | array | Vastauksen lohkot tässä järjestyksessä: thinking, kun malli päätteli, text, sitten yksi tool_use kutakin työkalukutsua kohti. | Kaikki mallit |
stop_reason | string | Miksi vastaus päättyi. Katso arvot alta. | Kaikki mallit |
usage | object | input_tokens ja output_tokens. | Kaikki mallit |
sources | array | Vain pyynnössä, jossa on web_search: true ja jonka haku löysi jotain: tulokset, jotka malli sai, kukin kentillä index, title ja url. Vastauksen [1] on merkintä, jonka index on 1. Striimissä se tulee tapahtuman message_delta mukana. | shannon-1.6-*, shannon-2-*, Shannon 3 -perhe |
usage.cache_read_input_tokens | integer | cache_read_input_tokens on promptista välimuistista luettu osa; input_tokens on loppuosa. cache_creation_input_tokens on aina 0. | Hostatut avoimen painon mallit |
Vastauksen lohkot
| Lohko | Kuvaus |
|---|---|
{"type": "thinking", "thinking": "…"} | Mallin päättely. signature-jäsentä ei ole. |
{"type": "text", "text": "…"} | Vastauksen teksti. Se voi olla tyhjä, kun vastaus on työkalukutsu. |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | Työkalukutsu. input on JSON-objekti. Lähetä tulos takaisin samalla id:llä. |
stop_reason
| stop_reason | Kuvaus | Lähettäjä |
|---|---|---|
end_turn | Malli päätti vastauksensa, tai jokin stop_sequences-merkkijonoistasi esiintyi. | Kaikki mallit |
tool_use | Vastaus sisältää yhden tai useamman työkalukutsun. | Kaikki mallit |
max_tokens | Vastaus katkaistiin tulosteen rajaan. | Shannon 3 -perhe, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, suoratoistossa |
Suoratoisto
Aseta stream arvoon true saadaksesi server-sent events -tapahtumat. Jokaisella kehyksellä on event:-rivi, jossa on tapahtuman nimi, ja data:-rivi, jossa on JSON-objekti, joka toistaa nimen kentässä type. Anthropic SDK:n stream-apufunktiot lukevat nämä tapahtumat puolestasi:
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."}]
}' Tapahtumat saapumisjärjestyksessä:
| Tapahtuma | Data | Milloin |
|---|---|---|
message_start | message | Aina ensimmäinen. message sisältää id:n, roolin, mallin, tyhjän content-kentän ja usage-kentän, joka alkaa nollasta. |
content_block_start | index, content_block | Lohko avautuu. content_block on tyhjä text- tai thinking-lohko tai tool_use-lohko, jolla on id ja name. |
content_block_delta | index, delta {"type": "thinking_delta", "thinking"} | Pala päättelyä thinking-lohkolle. |
content_block_delta | index, delta {"type": "text_delta", "text"} | Pala vastausta text-lohkolle. |
content_block_delta | index, delta {"type": "input_json_delta", "partial_json"} | Työkalukutsun argumentit kokonaisina yhdessä deltassa tool_use-lohkolle. |
content_block_stop | index | Lohko, jonka index on tämä, on valmis. |
message_delta | delta {stop_reason, stop_sequence}, usage | Vastauksen loppu: delta.stop_reason ja pyynnön usage. |
message_stop | Aina viimeinen. |
Lohkot numeroidaan index-kentällä avautumisjärjestyksessä, ja yksi lohko valmistuu ennen kuin seuraava avautuu. Lue jokainen lohko tyypin mukaan, älä numeron: virta voi avata ensin tyhjän text-lohkon, sitten thinking-lohkon ja antaa vastauksen myöhemmässä text-lohkossa.
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
| Lähettäjä | Kuvaus |
|---|---|
Shannon 3 -perhe, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | ping-tapahtuma datalla {"type": "ping"} 15 sekunnin välein. |
| Hostatut avoimen painon mallit | Kommenttirivi : keepalive 15 sekunnin välein mallin työskennellessä. |
Epäonnistuva virta
Virta voi epäonnistua alettuaan: tällöin tulee error-tapahtuma, jonka runko on sama kuin virhevastauksessa: {"type": "error", "error": {"type", "message"}}. Päätöstapahtumat message_delta ja message_stop seuraavat silti. Käsittele vastaus epäonnistuneena ja lähetä pyyntö uudelleen.
Virheet
Virheet käyttävät Anthropicin virherunkoa: type on error, ja error-objekti sisältää kentät type ja message. Taulukossa on yleisimmin palautuvat virheet tästä päätepisteestä. Täydellinen lista ja ohjeet uudelleenyritykseen ovat omalla sivullaan. Virheiden käsittely
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Tila | Tyyppi | Viesti | Milloin |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | API-avainta ei lähetetty, tai avain on tuntematon tai mitätöity. |
400 | invalid_request_error | unknown model: <id> | model ei ole Shannon-mallin id. |
400 | invalid_request_error | No user message provided | Shannon-tasot: pyynnössä ei ole käyttäjän tekstiä eikä tools-kenttää. |
400 | invalid_request_error | <id> does not accept image input | Kuva lähetettiin hostatulle avoimen painon mallille, joka ei tue kuvasyötettä. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | messages puuttuu, tai jonkin kentän JSON-tyyppi on väärä. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | max_tokens on suurempi kuin saldostasi jäljellä oleva määrä. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Tulvasuoja: tililtäsi tuli yli 120 pyyntöä minuutissa. |
429 | rate_limit_error | Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan | shannon-coder-1: tilauksesi Shannon Coder -kutsut nykyiseltä 4 tunnin jaksolta on käytetty. |
500 | server_error | The model backend failed to answer. Please retry. | Malli ei tuottanut vastausta. Lähetä pyyntö uudelleen. |
502 | api_error | The model backend failed to answer. Please retry. | Malli ei tuottanut vastausta. Lähetä pyyntö uudelleen. |
Tokenien laskenta
POST /v1/messages/count_tokens ottaa saman rungon kuin viestipyyntö (model, system, messages, tools) ja palauttaa {"input_tokens": n}: syötetokenien määrän, joka pyynnöstä veloitettaisiin. Laskenta toimii hostatuille avoimen painon malleille, se on ilmaista eikä se kuulu tulvasuojan laskentaan.
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} Laskennalla on oma sivunsa, jossa kuvataan tekstimuotoinen päätepiste ja rajat. Tokenien laskenta