Preskočiť na obsah
Počítanie tokenov

Počítanie tokenov

Spočítajte tokeny textu alebo celého requestu skôr, než ho pošlete.

POST https://api.shannon-ai.com/v1/tokenize

POST https://api.shannon-ai.com/v1/messages/count_tokens

Oba endpointy počítajú tokenizerom modelu, ktorý uvediete, a nespúšťa sa žiadny model. Pokrývajú hostované open-weight modely. /v1/tokenize berie obyčajný text alebo konverzáciu vo formáte Chat Completions. /v1/messages/count_tokens berie request vo formáte Anthropic Messages, čo je volanie, ktoré robia SDK Anthropic a Claude Code.

Počítanie je zadarmo. Volanie potrebuje váš API kľúč, nič neberie zo zostatku a neobjaví sa vo vašom zázname využitia.

Spočítať text

Pošlite model a text. Text sa počíta tak, ako je, bez chatového formátovania okolo neho.

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 Odpoveď
{
  "model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
  "tokens": 3
}

Čísla v odpovediach na tejto stránke sú príklady. Ten istý text dá na inom modeli iný počet.

Spočítať chatový request

Pošlite model a messages, s tools, keď ich request má, presne tak, ako by ste ich poslali na /v1/chat/completions. Odpoveď je veľkosť celého vstupu.

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 Odpoveď
{
  "model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
  "tokens": 164
}

Polia /v1/tokenize

Pole Typ Popis
model string Povinné. Id hostovaného open-weight modelu. Veľké a malé písmená sa berú rovnako.
text string Text na spočítanie tak, ako je, bez chatového formátovania. Do 4,000,000 bajtov. Pošlite text alebo messages; keď sú prítomné oba, počíta sa text.
messages array Chatové správy vo formáte Chat Completions. Počítajú sa ako celý vstup requestu: každá správa s formátovaním, ktoré okolo nej kladie šablóna chatu modelu.
tools array Definície nástrojov, ktoré sa majú zahrnúť do počtu. Používajú sa spolu s messages.

Odpoveď je objekt JSON s týmito poľami:

Pole Typ Popis
model string Id modelu, pre ktorý sa počet urobil, v jeho zverejnenom zápise.
tokens integer S text: tokeny textu. S messages: tokeny celého vstupu, vrátane obrázkov.

Spočítať request Messages

Pošlite telo, ktoré by ste poslali na /v1/messages: model, messages a system a tools, keď ich používate. Oficiálne SDK Anthropic volajú tento endpoint cez 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 Odpoveď
{
  "input_tokens": 21
}

Polia /v1/messages/count_tokens

Pole Typ Popis
model string Povinné. Id hostovaného open-weight modelu.
messages array Povinné. Správy vo formáte Anthropic Messages. Počítajú sa bloky text, image, tool_use a tool_result.
system string | array Systémový prompt: reťazec alebo pole textových blokov.
tools array Definície nástrojov s name, description a input_schema.

Prijaté kvôli kompatibilite, bez vplyvu na počet: tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking. Môžete odovzdať telo skutočného requestu bez zmeny.

Odpoveď je objekt JSON s týmito poľami:

Pole Typ Popis
input_tokens integer Tokeny celého vstupu: systémový prompt, správy, nástroje a obrázky.

Podporované modely

Oba endpointy počítajú pre hostované open-weight modely. GET /v1/models uvádza /v1/tokenize a /v1/messages/count_tokens v endpoints každého modelu, ktorý ich podporuje. Na každú inú hodnotu model, vrátane id Shannon, sa odpovie 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

Pri modeli Shannon čítajte počty tokenov z objektu usage v odpovedi.

Ako sa počet robí

Každý model sa počíta vlastným tokenizerom a vlastnou šablónou chatu. Nepoužíva sa žiadny odhad zo znakov ani slov.

Čo sa počíta Pravidlo
Text Tokeny reťazca tak, ako bol poslaný. Prázdny reťazec je 0.
Správy Správy a nástroje sa rozložia vlastnou šablónou chatu modelu, až po miesto, kde odpoveď začína, a počíta sa celý tento prompt.
Roly Počítajú sa správy system, user, assistant a tool. developer sa počíta ako system. Správa bez obsahu a bez volania nástroja nepridá nič.
Volania nástrojov a výsledky Volania nástrojov skorších krokov asistenta a ich výsledky sú súčasťou počtu, na oboch endpointoch.
Obrázky Obrázok poslaný vo vnútri tela (base64 alebo URL data:) pridá jeden token na plochu 28 × 28 pixelov: ceil(width / 28) × ceil(height / 28). Obrázok zadaný ako URL http(s) tieto endpointy nesťahujú a počítajú ho ako 1,024.

Príklad: obrázok 1,024 × 768 pixelov sa počíta ako ceil(1024 / 28) × ceil(768 / 28) = 37 × 28 = 1,036 tokenov.

Počet a čo sa requestu účtuje

Počet celého requestu sa robí rovnako ako počet vstupu skutočného requestu s rovnakým modelom, správami a nástrojmi. Odpoveď hlási toto číslo ako usage.prompt_tokens na Chat Completions, ako usage.input_tokens na Responses a ako usage.input_tokens plus usage.cache_read_input_tokens na Messages.

  • Počet je vstup pred zľavou za cachovaný vstup. Skutočný request môže časť tohto vstupu prečítať z cache a túto časť fakturovať za cachovanú sadzbu. Caching promptov
  • Obrázok zadaný ako URL http(s) sa tu počíta ako 1,024. Skutočný request obrázok stiahne a počíta ho z jeho veľkosti v pixeloch, takže sa tieto dve čísla môžu líšiť. Pošlite obrázok ako base64, aby ste dostali rovnaké číslo.
  • Výstup nie je súčasťou počtu. Odpoveď skutočného requestu sa navyše fakturuje ako výstupné tokeny, vrátane uvažovania.
  • Počet text nemá chatové formátovanie. Použite ho na meranie dokumentu alebo časti promptu a formu messages na meranie requestu.

Ak chcete premeniť počet na cenu, vynásobte ho vstupnou cenou modelu za 1M tokenov. Modely a ceny

Limity

Limit Hodnota Nad ním
Dĺžka text 4,000,000 bajtov (UTF-8) 413 so správou text too long
Telo requestu 32 MiB 413
Na request Jeden text alebo jedna konverzácia Na spočítanie viacerých textov pošlite jeden request na každý text.

Volania na počítanie sa nezapočítavajú do limitu 120 requestov za minútu. Limity a zostatok

Chyby

Status Typ Správa Kedy
400 invalid_request_error tokenize is available for the hosted open models; unknown model: <model> /v1/tokenize s model, ktorý nie je id hostovaného open-weight modelu.
400 invalid_request_error count_tokens is available for the hosted open models; unknown model: <model> /v1/messages/count_tokens s model, ktorý nie je id hostovaného open-weight modelu, alebo bez model.
400 invalid_request_error send `text` or `messages` /v1/tokenize bez text aj bez messages.
401 authentication_error Missing authentication / Invalid API key Nebol poslaný žiadny kľúč, alebo kľúč nie je platný.
413 invalid_request_error text too long text je dlhší než 4,000,000 bajtov. Telo nad 32 MiB dostane tiež odpoveď 413.
415 invalid_request_error Expected request with `Content-Type: application/json` Request nemá typ obsahu JSON.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … Chýba povinné pole (model na /v1/tokenize, messages na /v1/messages/count_tokens) alebo má pole nesprávny typ.
503 api_error token counting is temporarily unavailable for this model Počet sa pre tento model v tejto chvíli nedá urobiť. Skúste neskôr.

/v1/tokenize vracia chyby v tvare OpenAI. Na /v1/messages/count_tokens prichádzajú chyby samotného endpointu (400 pre model, 503) v tvare Anthropic a 401, 413, 415 a 422 v tvare OpenAI. Čítajte najprv stavový kód, potom error.type a error.message, ktoré sú prítomné v oboch tvaroch.

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"
  }
}