Tokenu skaitīšana
Saskaitiet teksta vai visa pieprasījuma tokenus, pirms to nosūtāt.
POST https://api.shannon-ai.com/v1/tokenize
POST https://api.shannon-ai.com/v1/messages/count_tokens
Abi galapunkti skaita ar jūsu nosaukta modeļa tokenizatoru, un neviens modelis nedarbojas. Tie aptver hostētos atvērto svaru modeļus. /v1/tokenize pieņem vienkāršu tekstu vai Chat Completions sarunu. /v1/messages/count_tokens pieņem pieprasījumu Anthropic Messages formātā, kas ir izsaukums, ko veic Anthropic SDK un Claude Code.
Skaitīšana ir bezmaksas. Izsaukumam vajadzīga jūsu API atslēga, tas neko neņem no jūsu atlikuma un neparādās jūsu izmantošanas žurnālā.
Teksta skaitīšana
Sūtiet model un text. Teksts tiek skaitīts tāds, kāds tas ir, bez čata formatējuma ap to.
import requests
response = requests.post(
"https://api.shannon-ai.com/v1/tokenize",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"text": "Hello, world",
},
)
print(response.json()["tokens"]) const response = await fetch("https://api.shannon-ai.com/v1/tokenize", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
text: "Hello, world",
}),
});
const { tokens } = await response.json();
console.log(tokens); curl https://api.shannon-ai.com/v1/tokenize \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"text": "Hello, world"
}' {
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"tokens": 3
} Skaitļi šīs lapas atbildēs ir piemēri. Tas pats teksts citā modelī dod citu skaitu.
Čata pieprasījuma skaitīšana
Sūtiet model un messages, ar tools, ja pieprasījumam tie ir, tieši tā, kā tos sūtītu uz /v1/chat/completions. Atbilde ir visas ievades lielums.
import requests
request = {
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"messages": [
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "What is the weather in Paris?"},
],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Current weather for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}
],
}
response = requests.post(
"https://api.shannon-ai.com/v1/tokenize",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json=request,
)
print(response.json()["tokens"]) const request = {
model: "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
messages: [
{ role: "system", content: "You are a concise assistant." },
{ role: "user", content: "What is the weather in Paris?" },
],
tools: [
{
type: "function",
function: {
name: "get_weather",
description: "Current weather for a city",
parameters: {
type: "object",
properties: { city: { type: "string" } },
required: ["city"],
},
},
},
],
};
const response = await fetch("https://api.shannon-ai.com/v1/tokenize", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify(request),
});
const { tokens } = await response.json();
console.log(tokens); curl https://api.shannon-ai.com/v1/tokenize \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"messages": [
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "What is the weather in Paris?"}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Current weather for a city",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"]
}
}
}
]
}' {
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"tokens": 164
} /v1/tokenize lauki
| Lauks | Tips | Apraksts |
|---|---|---|
model | string | Obligāts. Hostēta atvērto svaru modeļa id. Lielie un mazie burti tiek uzskatīti par vienādiem. |
text | string | Teksts, ko skaitīt tādu, kāds tas ir, bez čata formatējuma. Līdz 4,000,000 baitiem. Sūtiet text vai messages; ja ir abi, tiek skaitīts text. |
messages | array | Čata ziņojumi Chat Completions formātā. Tie tiek skaitīti kā pieprasījuma pilnā ievade: katrs ziņojums ar formatējumu, ko modeļa čata veidne tam apliek apkārt. |
tools | array | Rīku definīcijas, ko iekļaut skaitā. Lieto kopā ar messages. |
Atbilde ir JSON objekts ar šiem laukiem:
| Lauks | Tips | Apraksts |
|---|---|---|
model | string | Modeļa id, kuram skaits tika veikts, publicētajā pierakstā. |
tokens | integer | Ar text: teksta tokeni. Ar messages: visas ievades tokeni, attēlus ieskaitot. |
Messages pieprasījuma skaitīšana
Sūtiet pamattekstu, ko sūtītu uz /v1/messages: model, messages, un system un tools, ja tos lietojat. Oficiālie Anthropic SDK šo galapunktu izsauc ar messages.count_tokens.
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 concise assistant.",
messages=[
{"role": "user", "content": "Summarise the attached report."}
],
)
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 concise assistant.",
messages: [
{ role: "user", content: "Summarise the attached report." },
],
});
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 concise assistant.",
"messages": [
{"role": "user", "content": "Summarise the attached report."}
]
}' {
"input_tokens": 21
} /v1/messages/count_tokens lauki
| Lauks | Tips | Apraksts |
|---|---|---|
model | string | Obligāts. Hostēta atvērto svaru modeļa id. |
messages | array | Obligāts. Ziņojumi Anthropic Messages formātā. Tiek skaitīti bloki text, image, tool_use un tool_result. |
system | string | array | Sistēmas uzvedne: virkne vai teksta bloku masīvs. |
tools | array | Rīku definīcijas ar name, description un input_schema. |
Tiek pieņemti savietojamībai, bez ietekmes uz skaitu: tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking. Varat nodot īsta pieprasījuma pamattekstu bez izmaiņām.
Atbilde ir JSON objekts ar šiem laukiem:
| Lauks | Tips | Apraksts |
|---|---|---|
input_tokens | integer | Visas ievades tokeni: sistēmas uzvedne, ziņojumi, rīki un attēli. |
Atbalstītie modeļi
Abi galapunkti skaita hostētajiem atvērto svaru modeļiem. GET /v1/models uzskaita /v1/tokenize un /v1/messages/count_tokens katra tos atbalstošā modeļa laukā endpoints. Uz jebkuru citu model vērtību, Shannon id ieskaitot, atbild ar 400.
DeepSeek-V4-Pro-0813-3BIT-REAPGLM-5.2-3BIT-REAPKimi-K3-3BIT-REAPNemotron3Ultra-3BIT-REAPMiniMax-M3-3BIT-REAPDeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAPKimi-K2.6-W4A16-AUTOROUND-REAPLaguna-S-2.1-W4A16-AUTOROUND-REAPinkling-W4A16-AUTOROUND-REAPMiMo-V2.5-Pro-W8A16MiMo-V2.5-W8A16Hy3-W8A16
Shannon modelim tokenu skaitu nolasiet no atbildes objekta usage.
Kā skaits tiek veikts
Katrs modelis tiek skaitīts ar savu tokenizatoru un savu čata veidni. Novērtējums pēc rakstzīmēm vai vārdiem netiek izmantots.
| Kas tiek skaitīts | Noteikums |
|---|---|
| Teksts | Virknes tokeni tādi, kā nosūtīti. Tukša virkne tiek skaitīta kā 0. |
| Ziņojumi | Ziņojumi un rīki tiek izkārtoti ar paša modeļa čata veidni līdz vietai, kur sākas atbilde, un tiek skaitīta visa šī uzvedne. |
| Lomas | Tiek skaitīti ziņojumi system, user, assistant un tool. developer tiek skaitīts kā system. Ziņojums bez satura un bez rīka izsaukuma neko nepievieno. |
| Rīku izsaukumi un rezultāti | Iepriekšējo asistenta gājienu rīku izsaukumi un to rezultāti ir skaita daļa abos galapunktos. |
| Attēli | Attēls, kas nosūtīts pamatteksta iekšienē (base64 vai data: URL), pievieno vienu tokenu katram 28 × 28 pikseļu laukumam: ceil(width / 28) × ceil(height / 28). Attēlu, kas norādīts kā http(s) URL, šie galapunkti nelejupielādē un skaita kā 1,024. |
Piemērs: 1,024 × 768 pikseļu attēls tiek skaitīts kā ceil(1024 / 28) × ceil(768 / 28) = 37 × 28 = 1,036 tokeni.
Skaits un ko rēķina pieprasījumam
Visa pieprasījuma skaits tiek veikts tāpat kā īsta pieprasījuma ievades skaits ar to pašu modeli, ziņojumiem un rīkiem. Atbilde šo skaitli ziņo kā usage.prompt_tokens galapunktā Chat Completions, kā usage.input_tokens galapunktā Responses un kā usage.input_tokens plus usage.cache_read_input_tokens galapunktā Messages.
- Skaits ir ievade pirms kešētās ievades atlaides. Īsts pieprasījums var daļu šīs ievades nolasīt no keša un šo daļu rēķināt par kešēto likmi. Promptu kešēšana
- Attēls, norādīts kā
http(s)URL, šeit tiek skaitīts kā 1,024. Īsts pieprasījums attēlu lejupielādē un skaita pēc tā izmēra pikseļos, tāpēc abi skaitļi var atšķirties. Sūtiet attēlu kā base64, lai iegūtu to pašu skaitli. - Izvade skaita sastāvā nav. Īsta pieprasījuma atbilde papildus tiek rēķināta kā izvades tokeni, spriešanu ieskaitot.
textskaitam nav čata formatējuma. Izmantojiet to dokumenta vai uzvednes daļas mērīšanai un formumessagespieprasījuma mērīšanai.
Lai skaitu pārvērstu izmaksās, reiziniet to ar modeļa ievades cenu par 1M tokenu. Modeļi un cenas
Ierobežojumi
| Ierobežojums | Vērtība | Virs tā |
|---|---|---|
text garums | 4,000,000 baiti (UTF-8) | 413 ar ziņojumu text too long |
| Pieprasījuma pamatteksts | 32 MiB | 413 |
| Vienam pieprasījumam | Viens teksts vai viena saruna | Lai saskaitītu vairākus tekstus, sūtiet vienu pieprasījumu katram tekstam. |
Skaitīšanas izsaukumi netiek ieskaitīti 120 pieprasījumu minūtē ierobežojumā. Ierobežojumi un atlikums
Kļūdas
| Statuss | Tips | Ziņojums | Kad |
|---|---|---|---|
400 | invalid_request_error | tokenize is available for the hosted open models; unknown model: <model> | /v1/tokenize ar model, kas nav hostēta atvērto svaru modeļa id. |
400 | invalid_request_error | count_tokens is available for the hosted open models; unknown model: <model> | /v1/messages/count_tokens ar model, kas nav hostēta atvērto svaru modeļa id, vai bez model. |
400 | invalid_request_error | send `text` or `messages` | /v1/tokenize bez text un bez messages. |
401 | authentication_error | Missing authentication / Invalid API key | Atslēga netika nosūtīta, vai atslēga nav derīga. |
413 | invalid_request_error | text too long | text ir garāks par 4,000,000 baitiem. Uz pamattekstu virs 32 MiB tāpat atbild ar 413. |
415 | invalid_request_error | Expected request with `Content-Type: application/json` | Pieprasījumam nav JSON satura tipa. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | Trūkst obligāta lauka (model galapunktā /v1/tokenize, messages galapunktā /v1/messages/count_tokens) vai laukam ir nepareizs tips. |
503 | api_error | token counting is temporarily unavailable for this model | Skaitu šobrīd nevar veikt šim modelim. Mēģiniet vēlāk vēlreiz. |
/v1/tokenize atgriež kļūdas OpenAI formā. Galapunktā /v1/messages/count_tokens paša galapunkta kļūdas (400 modelim, 503) nāk Anthropic formā, bet 401, 413, 415 un 422 nāk OpenAI formā. Vispirms lasiet statusa kodu, tad error.type un error.message, kas ir abās formās.
{
"error": {
"type": "invalid_request_error",
"message": "tokenize is available for the hosted open models; unknown model: shannon-3"
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "count_tokens is available for the hosted open models; unknown model: shannon-3"
}
}