Salti al la enhavo
Kalkulado de tokenoj

Kalkulado de tokenoj

Kalkulu la tokenojn de teksto aŭ de tuta peto antaŭ ol sendi ĝin.

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

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

Ambaŭ endpoints kalkulas per la tokenizilo de la modelo, kiun vi nomas, kaj neniu modelo funkcias. Ili kovras la gastigitajn malfermpezajn modelojn. /v1/tokenize akceptas simplan tekston aŭ konversacion de Chat Completions. /v1/messages/count_tokens akceptas peton en la formato Anthropic Messages, tio estas la voko, kiun la SDK de Anthropic kaj Claude Code faras.

Kalkulado estas senpaga. Voko bezonas vian API-ŝlosilon, prenas nenion el via saldo kaj ne aperas en via protokolo de uzado.

Kalkuli tekston

Sendu model kaj text. La teksto estas kalkulata tia, kia ĝi estas, sen babila formatado ĉirkaŭ ĝi.

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

La nombroj en la respondoj en ĉi tiu paĝo estas ekzemploj. La sama teksto donas alian kalkulon ĉe alia modelo.

Kalkuli babilan peton

Sendu model kaj messages, kun tools kiam la peto havas ilin, ĝuste kiel vi sendus ilin al /v1/chat/completions. La respondo estas la grando de la tuta enigo.

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

Kampoj de /v1/tokenize

Kampo Tipo Priskribo
model string Deviga. Id de gastigita malfermpeza modelo. Majuskloj kaj minuskloj estas traktataj same.
text string Teksto kalkulenda tia, kia ĝi estas, sen babila formatado. Ĝis 4,000,000 bajtoj. Sendu text aŭ messages; kiam ambaŭ ĉeestas, text estas kalkulata.
messages array Babilaj mesaĝoj en la formato Chat Completions. Ili estas kalkulataj kiel la plena enigo de peto: ĉiu mesaĝo kun la formatado, kiun la babila ŝablono de la modelo metas ĉirkaŭ ĝi.
tools array Difinoj de iloj inkluzivendaj en la kalkulo. Uzataj kune kun messages.

La respondo estas JSON-objekto kun ĉi tiuj kampoj:

Kampo Tipo Priskribo
model string La model-id, por kiu la kalkulo estis farita, en sia publikigita literumo.
tokens integer Kun text: la tokenoj de la teksto. Kun messages: la tokenoj de la tuta enigo, bildoj inkluzive.

Kalkuli peton Messages

Sendu la korpon, kiun vi sendus al /v1/messages: model, messages, kaj system kaj tools kiam vi uzas ilin. La oficialaj SDK de Anthropic vokas ĉi tiun endpoint per 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 Respondo
{
  "input_tokens": 21
}

Kampoj de /v1/messages/count_tokens

Kampo Tipo Priskribo
model string Deviga. Id de gastigita malfermpeza modelo.
messages array Deviga. Mesaĝoj en la formato Anthropic Messages. Blokoj text, image, tool_use kaj tool_result estas kalkulataj.
system string | array La sistema prompt: ĉeno aŭ tabelo de tekstblokoj.
tools array Difinoj de iloj kun name, description kaj input_schema.

Akceptitaj pro kongrueco, sen efiko sur la kalkulo: tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking. Vi povas transdoni la korpon de vera peto senŝanĝe.

La respondo estas JSON-objekto kun ĉi tiuj kampoj:

Kampo Tipo Priskribo
input_tokens integer La tokenoj de la tuta enigo: sistema prompt, mesaĝoj, iloj kaj bildoj.

Subtenataj modeloj

Ambaŭ endpoints kalkulas por la gastigitaj malfermpezaj modeloj. GET /v1/models listigas /v1/tokenize kaj /v1/messages/count_tokens en la endpoints de ĉiu modelo, kiu subtenas ilin. Ĉiu alia valoro de model, Shannon-id inkluzive, ricevas respondon 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

Por Shannon-modelo, legu la nombrojn de tokenoj el la objekto usage de respondo.

Kiel la kalkulo estas farata

Ĉiu modelo estas kalkulata per sia propra tokenizilo kaj sia propra babila ŝablono. Neniu takso laŭ signoj aŭ vortoj estas uzata.

Kio estas kalkulata Regulo
Teksto La tokenoj de la ĉeno tia, kia ĝi estas sendita. Malplena ĉeno kalkuliĝas kiel 0.
Mesaĝoj La mesaĝoj kaj iloj estas aranĝataj per la propra babila ŝablono de la modelo, ĝis la punkto, kie la respondo komenciĝas, kaj tiu tuta prompt estas kalkulata.
Roloj Mesaĝoj system, user, assistant kaj tool estas kalkulataj. developer estas kalkulata kiel system. Mesaĝo sen enhavo kaj sen voko de ilo aldonas nenion.
Vokoj de iloj kaj rezultoj Vokoj de iloj de pli fruaj vicoj de la asistanto kaj iliaj rezultoj estas parto de la kalkulo, ĉe ambaŭ endpoints.
Bildoj Bildo sendita ene de la korpo (base64 aŭ URL data:) aldonas unu tokenon por peceto de 28 × 28 pikseloj: ceil(width / 28) × ceil(height / 28). Bildo donita kiel URL http(s) ne estas elŝutata de ĉi tiuj endpoints kaj kalkuliĝas kiel 1,024.

Ekzemplo: bildo de 1,024 × 768 pikseloj kalkuliĝas kiel ceil(1024 / 28) × ceil(768 / 28) = 37 × 28 = 1,036 tokenoj.

La kalkulo kaj kio estas kalkulata por peto

La kalkulo de tuta peto estas farata same kiel la enig-kalkulo de vera peto kun la sama modelo, mesaĝoj kaj iloj. Respondo raportas tiun nombron kiel usage.prompt_tokens ĉe Chat Completions, kiel usage.input_tokens ĉe Responses, kaj kiel usage.input_tokens plus usage.cache_read_input_tokens ĉe Messages.

  • La kalkulo estas la enigo antaŭ la rabato por kaŝmemorita enigo. Vera peto povas legi parton de tiu enigo el la kaŝmemoro kaj kalkuli tiun parton laŭ la kaŝmemorita prezo. Prompt-kaŝado
  • Bildo donita kiel URL http(s) kalkuliĝas ĉi tie kiel 1,024. Vera peto elŝutas la bildon kaj kalkulas ĝin laŭ ĝia grando en pikseloj, do la du nombroj povas malsami. Sendu la bildon kiel base64 por ricevi la saman nombron.
  • Eligo ne estas parto de la kalkulo. La respondo de vera peto estas kalkulata krome kiel eligaj tokenoj, rezonado inkluzive.
  • Kalkulo de text ne havas babilan formatadon. Uzu ĝin por mezuri dokumenton aŭ parton de prompt, kaj la formon messages por mezuri peton.

Por ŝanĝi kalkulon en koston, multipliku ĝin per la enig-prezo de la modelo por 1M tokenoj. Modeloj kaj prezoj

Limoj

Limo Valoro Super ĝi
Longeco de text 4,000,000 bajtoj (UTF-8) 413 kun la mesaĝo text too long
Korpo de peto 32 MiB 413
Por peto Unu teksto aŭ unu konversacio Por kalkuli plurajn tekstojn, sendu unu peton por teksto.

Kalkulaj vokoj ne kalkuliĝas en la limon de 120 petoj por minuto. Limoj kaj saldo

Eraroj

Stato Tipo Mesaĝo Kiam
400 invalid_request_error tokenize is available for the hosted open models; unknown model: <model> /v1/tokenize kun model, kiu ne estas id de gastigita malfermpeza modelo.
400 invalid_request_error count_tokens is available for the hosted open models; unknown model: <model> /v1/messages/count_tokens kun model, kiu ne estas id de gastigita malfermpeza modelo, aŭ sen model.
400 invalid_request_error send `text` or `messages` /v1/tokenize sen text kaj sen messages.
401 authentication_error Missing authentication / Invalid API key Neniu ŝlosilo estis sendita, aŭ la ŝlosilo ne validas.
413 invalid_request_error text too long text estas pli longa ol 4,000,000 bajtoj. Korpo super 32 MiB ricevas ankaŭ respondon 413.
415 invalid_request_error Expected request with `Content-Type: application/json` La peto ne havas JSON-enhavtipon.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … Deviga kampo mankas (model ĉe /v1/tokenize, messages ĉe /v1/messages/count_tokens) aŭ kampo havas malĝustan tipon.
503 api_error token counting is temporarily unavailable for this model La kalkulo ne povas esti farata por ĉi tiu modelo en la momento. Reprovu poste.

/v1/tokenize redonas erarojn en la formo de OpenAI. Ĉe /v1/messages/count_tokens la eraroj de la endpoint mem (400 pro la modelo, 503) venas en la formo de Anthropic, kaj 401, 413, 415 kaj 422 venas en la formo de OpenAI. Legu unue la statokodon, poste error.type kaj error.message, kiuj ĉeestas en ambaŭ formoj.

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