Pāriet uz saturu
Tokenu skaitīšana

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"])
200 Atbilde
{
  "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"])
200 Atbilde
{
  "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)
200 Atbilde
{
  "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-REAP
  • GLM-5.2-3BIT-REAP
  • Kimi-K3-3BIT-REAP
  • Nemotron3Ultra-3BIT-REAP
  • MiniMax-M3-3BIT-REAP
  • DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP
  • Kimi-K2.6-W4A16-AUTOROUND-REAP
  • Laguna-S-2.1-W4A16-AUTOROUND-REAP
  • inkling-W4A16-AUTOROUND-REAP
  • MiMo-V2.5-Pro-W8A16
  • MiMo-V2.5-W8A16
  • Hy3-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.
  • text skaitam nav čata formatējuma. Izmantojiet to dokumenta vai uzvednes daļas mērīšanai un formu messages pieprasī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.

400 /v1/tokenize
{
  "error": {
    "type": "invalid_request_error",
    "message": "tokenize is available for the hosted open models; unknown model: shannon-3"
  }
}
400 /v1/messages/count_tokens
{
  "type": "error",
  "error": {
    "type": "invalid_request_error",
    "message": "count_tokens is available for the hosted open models; unknown model: shannon-3"
  }
}