Anthropic formátum
A POST /v1/messages Anthropic Messages formátumú kérést fogad, és ugyanabban a formátumban válaszol, streamelve vagy anélkül. Használd az Anthropic SDK-val és az arra épülő eszközökkel, például a Claude Code-dal: állítsd be az alap URL-t, használd a Shannon API-kulcsodat, és adj meg egy Shannon modellazonosítót.
POST https://api.shannon-ai.com/v1/messages
Irányítsd az Anthropic SDK-t a Shannon alap URL-jére. Az SDK hozzáfűzi a /v1/messages útvonalat, és a kulcsodat az x-api-key fejlécben küldi.
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."}]
}' A válasz egy üzenet, amelynek content mezője blokkok listája. A blokkokat a type alapján keresd meg: ha a modell gondolkodott, az első blokk thinking, utána jön a szöveg.
{
"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
}
} Fejlécek
| Fejléc | Érték | Leírás |
|---|---|---|
x-api-key | YOUR_API_KEY | Az API-kulcsod. Helyette az Authorization: Bearer YOUR_API_KEY is elfogadott. |
content-type | application/json | Kötelező. |
anthropic-version | 2023-06-01 | Elfogadott, nem kötelező. Az Anthropic SDK a 2023-06-01 értéket küldi; a válasz formátuma az értéktől függetlenül ugyanaz. |
anthropic-beta | Elfogadott, nem kötelező. | |
x-request-id | Nem kötelező. A kérés saját azonosítód. Változtatás nélkül visszajön a válaszban; nélküle a válasz 12 hexadecimális karakteres azonosítót kap. |
Kérésmezők
Csak a messages kötelező. Az Alkalmazza oszlop megnevezi azokat a modelleket, amelyeken a mező megváltoztatja a választ. A hosztolt nyílt súlyú modellek a modelllista tizenkét azonosítója; a Shannon 3 család a shannon-3, shannon-3-pro, shannon-3.1 és shannon-3.1-pro. Modellek és árak
| Mező | Típus | Alapérték | Leírás | Alkalmazza |
|---|---|---|---|---|
model | string | shannon-1.6-lite | Egy Shannon modellazonosító a modelllistából. Minden kéréssel küldd el. Az egyeztetés nem tesz különbséget kis- és nagybetű között. Bármilyen más név 400 unknown model hibát ad, ezért az az eszköz, amely saját modellneveket küld, csak Shannon azonosítóra állítható. | Minden modell |
messages | array | Kötelező. A beszélgetés, a legrégebbi üzenettel kezdve, a user és assistant szerepekkel. Lásd lent az Üzenetek és tartalomblokkok részt. | Minden modell | |
system | string | array | Utasítások a modellnek: egy string vagy szövegblokkok tömbje. Lásd lent a Rendszerprompt részt. | Hosztolt nyílt súlyú modellek, shannon-1.6-*, shannon-2-*, shannon-coder-1 | |
max_tokens | integer | 4096 | A válasz felső korlátja tokenben. Ezen a végponton nem kötelező; az Anthropic SDK mindig elküldi. Az 1 és 65,536 közötti tartományon kívüli értéket a rendszer a tartományba igazítja. Ennyit foglal le az egyenlegedből a kérés futása alatt. | Hosztolt nyílt súlyú modellek, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 |
stream | boolean | false | true esetén a válasz server-sent eventsként érkezik. Lásd lent a Streaming részt. | Minden modell |
temperature | number | Mintavételi hőmérséklet. A hosztolt nyílt súlyú modelleken az értékek 0 és 2 között maradnak. | Hosztolt nyílt súlyú modellek, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | |
top_p | number | Nucleus sampling. | Hosztolt nyílt súlyú modellek | |
stop_sequences | array | Legfeljebb 4 string. A válasz az első megjelenő előtt véget ér. A stop_reason értéke end_turn marad. | Hosztolt nyílt súlyú modellek | |
tools | array | Az eszközök, amelyeket a modell meghívhat, mindegyik {"name", "description", "input_schema"} alakban. Lásd lent az Eszközök részt. | Minden modell | |
tool_choice | object | A {"type": "auto"} a modellre bízza a döntést, a {"type": "any"} eszközhívásra kényszeríti, a {"type": "tool", "name": "…"} pedig arra, hogy azt az eszközt hívja. | Hosztolt nyílt súlyú modellek | |
thinking | object | Mennyit gondolkodik a modell a válasz előtt. Lásd lent a Thinking részt. | Hosztolt nyílt súlyú modellek | |
web_search | boolean | false | Shannon kiegészítés a formátumhoz: true esetén a modell a válasz előtt keres a weben. | shannon-1.6-*, shannon-2-*, Shannon 3 család |
max_tokens nélkül az érték 4,096, a shannon-coder-1 modellen 65,536.
A metadata, top_k, service_tier és a blokkokon lévő cache_control jelölők elfogadottak, hogy a meglévő klienskód változtatás nélkül fusson. Nem változtatják meg a választ; a prompt-gyorsítótárazás a hosztolt nyílt súlyú modelleken automatikus.
A sémának megfelelő JSON-választ a Chat Completionsben a response_format, a Responsesben a text.format kéri. Strukturált kimenetek
Egy kérés rendszerprompttal és thinkinggel
Ez a kérés rendszerpromptot, thinking budgetet, hőmérsékletet és egy stop sequence-t küld. Hosztolt nyílt súlyú modellt használ, amely mindegyiket alkalmazza.
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?"}]
}' A hosztolt nyílt súlyú modelleken a usage a prompt-gyorsítótárból olvasott tokeneket a többi bemeneti tokentől külön jelenti.
{
"usage": {
"input_tokens": 31,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"output_tokens": 62
}
} Rendszerprompt
A system egy string vagy szövegblokkok tömbje [{"type": "text", "text": "…"}] alakban. A blokkok szövegeit sortörés fűzi össze.
Alkalmazzák a hosztolt nyílt súlyú modellek, a shannon-1.6-lite, shannon-1.6-pro, shannon-2-lite, shannon-2-pro és a shannon-coder-1. Shannon 3 családbeli azonosítónál a feltétlenül betartandó utasításokat tedd a felhasználói üzenetbe.
Üzenetek és tartalomblokkok
Az üzenetnek van egy role értéke, user vagy assistant, és egy content mezője. A content egy string vagy blokkok tömbje.
| Blokk | Leírás | Elérhető ezeken |
|---|---|---|
{"type": "text", "text": "…"} | Szöveg. | Minden modell |
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": "…"}}{"type": "image", "source": {"type": "url", "url": "…"}} | Egy kép egy user üzenetben, base64-ként vagy URL-lel. | Shannon 3 család, shannon-1.6-lite, shannon-1.6-pro, és a hosztolt nyílt súlyú modellek, amelyek képbemenetet támogatnak |
{"type": "document", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} | Egy dokumentum (PDF, Word, PowerPoint vagy Excel) egy user üzenetben, base64-ként vagy URL-lel. | Shannon 3 család |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | Egy assistant üzenetben: egy eszközhívás, amelyet a modell egy korábbi válaszban indított. | Minden modell |
{"type": "tool_result", "tool_use_id": "toolu_…", "content": "…"} | Egy user üzenetben: a hívás eredménye. A content egy string vagy szövegblokkok listája. | Minden modell |
Egy korábbi válasz content mezőjét változtatás nélkül visszaküldheted: a text és tool_use blokkokat beolvassa a rendszer, a thinking blokkokat kihagyja.
A Shannon szinteken a képeket és dokumentumokat az utolsó user üzenetből olvassa a rendszer. A méreteknek és korlátoknak külön oldaluk van. Képek és fájlok
Thinking
A hosztolt nyílt súlyú modellek a thinking mezőt reasoning effortra képezik le. A mező nélkül az effort magas.
| Alak | budget_tokens | Hatás |
|---|---|---|
{"type": "disabled"} | Nincs reasoning. A válaszban nincs thinking blokk. | |
{"type": "enabled", "budget_tokens": 2048} | ≤ 2,048 | Alacsony effort. |
{"type": "enabled", "budget_tokens": 8192} | ≤ 8,192 | Közepes effort. |
{"type": "enabled", "budget_tokens": 16000} | > 8,192 | Magas effort. |
A gondolkodó modell a reasoningjét a szöveg előtt egy {"type": "thinking", "thinking": "…"} blokkban adja vissza. A gondolkodó Shannon szintek is elküldik.
Az effortokat külön oldal írja le. Reasoning effort
Eszközök
Az eszköz egy függvény, amelyet a kódod futtat. Írj le mindegyiket egy name, egy description és egy input_schema mezővel. Ha a modell eszközt kér, a válasz egy tool_use blokkot tartalmaz, és a stop_reason értéke tool_use.
Egy eszközdefiníció a tools listában:
[
{
"name": "get_weather",
"description": "Current weather for a city.",
"input_schema": {
"type": "object",
"properties": {
"city": {
"type": "string"
}
},
"required": [
"city"
]
}
}
] A hívást tartalmazó válasz content mezője:
[
{
"type": "text",
"text": ""
},
{
"type": "tool_use",
"id": "toolu_3d9a7c1e5b2f4a60c8e1d7f09b24a6c5",
"name": "get_weather",
"input": {
"city": "Paris"
}
}
] Futtasd az eszközt, majd küldd el újra a kérést úgy, hogy a hívást és egy tool_result blokkot hozzáadsz a messages listához:
[
{
"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
| Alak | Hatás | Alkalmazza |
|---|---|---|
{"type": "auto"} | A modell dönt arról, hogy hív-e eszközt. Ez az alapérték. | Minden modell |
{"type": "any"} | A modellnek meg kell hívnia valamelyik eszközt. | Hosztolt nyílt súlyú modellek |
{"type": "tool", "name": "…"} | A modellnek meg kell hívnia a megnevezett eszközt. | Hosztolt nyílt súlyú modellek |
Csak az input_schema mezővel rendelkező eszközöket olvassa be a rendszer. A webes keresés ezen a végponton nem eszköz: állítsd be a web_search mezőt.
Az eszközciklust külön oldal írja le teljesen. Funkcióhívás
A válasz
| Mező | Típus | Leírás | Küldi |
|---|---|---|---|
id | string | msg_, utána 32 hexadecimális karakter. | Minden modell |
type | string | Mindig message. | Minden modell |
role | string | Mindig assistant. | Minden modell |
model | string | A válaszoló modell kanonikus azonosítója. | Minden modell |
content | array | A válasz blokkjai ebben a sorrendben: thinking, ha a modell gondolkodott, text, majd tool-hívásonként egy tool_use. | Minden modell |
stop_reason | string | Miért ért véget a válasz. Lásd az alábbi értékeket. | Minden modell |
usage | object | input_tokens és output_tokens. | Minden modell |
sources | array | Csak olyan kérésnél, amely web_search: true értéket küld, és amelynek a keresése talált valamit: az eredmények, amelyeket a modell megkapott, mindegyik index, title és url mezővel. A válaszban az [1] az index 1 értékű elem. Streamben a message_delta eseménnyel érkezik. | shannon-1.6-*, shannon-2-*, Shannon 3 család |
usage.cache_read_input_tokens | integer | A cache_read_input_tokens a promptnak a gyorsítótárból olvasott része; az input_tokens a maradék. A cache_creation_input_tokens mindig 0. | Hosztolt nyílt súlyú modellek |
Válaszblokkok
| Blokk | Leírás |
|---|---|
{"type": "thinking", "thinking": "…"} | A modell reasoningje. Nincs signature tag. |
{"type": "text", "text": "…"} | A válasz szövege. Üres lehet, ha a válasz eszközhívás. |
{"type": "tool_use", "id": "toolu_…", "name": "…", "input": {…}} | Egy eszközhívás. Az input egy JSON-objektum. Az eredményt ugyanazzal az id-val küldd vissza. |
stop_reason
| stop_reason | Leírás | Küldi |
|---|---|---|
end_turn | A modell befejezte a válaszát, vagy megjelent az egyik stop_sequences értéked. | Minden modell |
tool_use | A válasz egy vagy több eszközhívást tartalmaz. | Minden modell |
max_tokens | A választ a kimeneti korlátnál megszakította a rendszer. | Shannon 3 család, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1, streamekben |
Streaming
Állítsd a stream értékét true-ra server-sent eventsekhez. Minden keret tartalmaz egy event: sort az esemény nevével és egy data: sort egy JSON-objektummal, amely a nevet a type mezőben megismétli. Az Anthropic SDK stream-segédei ezeket az eseményeket helyetted olvassák:
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."}]
}' Az események az érkezésük sorrendjében:
| Esemény | Adat | Mikor |
|---|---|---|
message_start | message | Mindig az első. A message tartalmazza az azonosítót, a szerepet, a modellt, egy üres content mezőt és egy nulláról induló usage adatot. |
content_block_start | index, content_block | Egy blokk megnyílik. A content_block egy üres text vagy thinking blokk, vagy egy tool_use blokk az id és name mezőjével. |
content_block_delta | index, delta {"type": "thinking_delta", "thinking"} | A reasoning egy darabja, thinking blokkhoz. |
content_block_delta | index, delta {"type": "text_delta", "text"} | A válasz egy darabja, text blokkhoz. |
content_block_delta | index, delta {"type": "input_json_delta", "partial_json"} | Egy eszközhívás argumentumai, egyetlen deltában teljesen, tool_use blokkhoz. |
content_block_stop | index | Az ezzel az index értékkel jelölt blokk teljes. |
message_delta | delta {stop_reason, stop_sequence}, usage | A válasz vége: a delta.stop_reason és a kérés usage adata. |
message_stop | Mindig az utolsó. |
A blokkokat az index számozza a megnyitásuk sorrendjében, és egy blokk befejeződik, mielőtt a következő megnyílik. Minden blokkot a típusa szerint olvass, ne a száma szerint: a stream megnyithat először egy üres text blokkot, utána a thinking blokkot, és a választ egy későbbi text blokkban adhatja.
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
| Küldi | Leírás |
|---|---|
Shannon 3 család, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 | Egy ping esemény a {"type": "ping"} adattal, 15 másodpercenként. |
| Hosztolt nyílt súlyú modellek | Egy : keepalive megjegyzéssor, 15 másodpercenként, amíg a modell dolgozik. |
Hibával végződő stream
A stream indulása utáni hiba egy error esemény, a hibaválaszéval azonos törzzsel: {"type": "error", "error": {"type", "message"}}. A záró események, a message_delta és a message_stop, ezután is megérkeznek. Tekintsd a választ sikertelennek, és küldd el újra a kérést.
Hibák
A hibák az Anthropic hibatörzset használják: a type értéke error, az error objektum pedig egy type és egy message mezőt tartalmaz. A táblázat azt sorolja fel, amit ez a végpont leggyakrabban visszaad. A teljes listának, azzal együtt, hogy mit érdemes újrapróbálni, külön oldala van. Hibakezelés
{
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "unknown model: no-such-model"
}
} | Státusz | Típus | Üzenet | Mikor |
|---|---|---|---|
401 | authentication_error | Missing authenticationInvalid API key | Nem küldtél API-kulcsot, vagy a kulcs ismeretlen vagy vissza van vonva. |
400 | invalid_request_error | unknown model: <id> | A model nem Shannon modellazonosító. |
400 | invalid_request_error | No user message provided | Shannon szintek: a kérésben nincs felhasználói szöveg és nincs tools. |
400 | invalid_request_error | <id> does not accept image input | Képet küldtél egy olyan hosztolt nyílt súlyú modellnek, amely nem támogat képbemenetet. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | A messages hiányzik, vagy egy mező JSON-típusa hibás. |
429 | rate_limit_error | Quota exceeded. Upgrade your plan at shannon-ai.com/plan | A max_tokens nagyobb, mint az egyenlegedből megmaradt rész. |
429 | rate_limit_error | Too many requests. Retry in <n>s. | Flood protection: egy percen belül több mint 120 kérés érkezett a fiókodról. |
429 | rate_limit_error | Shannon Coder call quota reached. Upgrade your plan at shannon-ai.com/plan | shannon-coder-1: a csomagod Shannon Coder hívásai elfogytak az aktuális 4 órás ablakra. |
500 | server_error | The model backend failed to answer. Please retry. | A modell nem adott választ. Küldd el újra a kérést. |
502 | api_error | The model backend failed to answer. Please retry. | A modell nem adott választ. Küldd el újra a kérést. |
Tokenek számolása
A POST /v1/messages/count_tokens ugyanazt a törzset fogadja, mint egy üzenetkérés (model, system, messages, tools), és {"input_tokens": n} értéket ad vissza: a bemeneti tokenek számát, amelyet a kérésért felszámolnának. A hosztolt nyílt súlyú modelleknél számol, ingyenes, és a flood protection nem számítja bele.
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} A számolásnak külön oldala van, a sima szöveges végponttal és a korlátokkal. Tokenszámlálás