Ruka hadi kwenye maudhui
Kuhesabu tokens

Kuhesabu tokens

Hesabu tokens za maandishi au za ombi zima kabla ya kulituma.

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

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

Endpoint zote mbili huhesabu kwa tokenizer ya model unayotaja, na hakuna model inayoendeshwa. Zinashughulikia model za open-weight zinazopangishwa. /v1/tokenize inakubali maandishi matupu au mazungumzo ya Chat Completions. /v1/messages/count_tokens inakubali ombi kwa umbizo la Anthropic Messages, ambalo ni wito ambao SDK ya Anthropic na Claude Code hufanya.

Kuhesabu ni bure. Wito unahitaji API key yako, hauchukui chochote kutoka kwenye salio lako na hauonekani kwenye usage log yako.

Hesabu maandishi

Tuma model na text. Maandishi huhesabiwa kama yalivyo, bila uumbizaji wa chat kuyazunguka.

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

Namba kwenye majibu ya ukurasa huu ni mifano. Maandishi yale yale hutoa hesabu tofauti kwenye model tofauti.

Hesabu ombi la chat

Tuma model na messages, pamoja na tools ombi likiwa nazo, kama ungezituma kwa /v1/chat/completions. Jibu ni ukubwa wa input nzima.

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

Fields za /v1/tokenize

Field Aina Maelezo
model string Inahitajika. Model id ya open-weight inayopangishwa. Herufi kubwa na ndogo huchukuliwa sawa.
text string Maandishi ya kuhesabu kama yalivyo, bila uumbizaji wa chat. Hadi bytes 4,000,000. Tuma text au messages; zote zikiwepo, text ndiyo inayohesabiwa.
messages array Ujumbe wa chat kwa umbizo la Chat Completions. Huhesabiwa kama input kamili ya ombi: kila ujumbe pamoja na uumbizaji ambao chat template ya model huuweka kuuzunguka.
tools array Ufafanuzi wa tools wa kujumuisha kwenye hesabu. Hutumika pamoja na messages.

Jibu ni kitu cha JSON chenye fields hizi:

Field Aina Maelezo
model string Model id ambayo hesabu ilifanywa kwa ajili yake, kwa tahajia yake iliyochapishwa.
tokens integer Kwa text: tokens za maandishi. Kwa messages: tokens za input nzima, picha zikijumuishwa.

Hesabu ombi la Messages

Tuma mwili ambao ungetuma kwa /v1/messages: model, messages, na system na tools ukizitumia. SDK rasmi za Anthropic huita endpoint hii kupitia 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 Jibu
{
  "input_tokens": 21
}

Fields za /v1/messages/count_tokens

Field Aina Maelezo
model string Inahitajika. Model id ya open-weight inayopangishwa.
messages array Inahitajika. Ujumbe kwa umbizo la Anthropic Messages. Blocks za text, image, tool_use na tool_result huhesabiwa.
system string | array System prompt: string au array ya blocks za maandishi.
tools array Ufafanuzi wa tools wenye name, description na input_schema.

Zinakubaliwa kwa ulinganifu, bila athari kwenye hesabu: tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking. Unaweza kupitisha mwili wa ombi halisi bila mabadiliko.

Jibu ni kitu cha JSON chenye fields hizi:

Field Aina Maelezo
input_tokens integer Tokens za input nzima: system prompt, messages, tools na picha.

Model zinazoungwa mkono

Endpoint zote mbili huhesabu kwa model za open-weight zinazopangishwa. GET /v1/models inaorodhesha /v1/tokenize na /v1/messages/count_tokens kwenye endpoints za kila model inayozikubali. Thamani nyingine yoyote ya model, pamoja na id za Shannon, hujibiwa kwa 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

Kwa model ya Shannon, soma hesabu za tokens kutoka kwenye kitu cha usage cha jibu.

Jinsi hesabu inavyofanywa

Kila model huhesabiwa kwa tokenizer yake na chat template yake. Hakuna makadirio kutoka kwa herufi au maneno yanayotumika.

Nini kinahesabiwa Kanuni
Maandishi Tokens za string kama ilivyotumwa. String tupu huhesabiwa 0.
Ujumbe Messages na tools hupangwa kwa chat template ya model yenyewe, hadi mahali jibu linapoanzia, na prompt hiyo yote huhesabiwa.
Roles Ujumbe wa system, user, assistant na tool huhesabiwa. developer huhesabiwa kama system. Ujumbe usio na maudhui na usio na wito wa tool haongezi chochote.
Wito wa tools na matokeo Wito wa tools wa zamu za awali za assistant na matokeo yake ni sehemu ya hesabu, kwenye endpoint zote mbili.
Picha Picha iliyotumwa ndani ya mwili (base64 au URL ya data:) huongeza token moja kwa kila kipande cha pikseli 28 × 28: ceil(width / 28) × ceil(height / 28). Picha iliyotolewa kama URL ya http(s) haipakuliwi na endpoint hizi na huhesabiwa 1,024.

Mfano: picha ya pikseli 1,024 × 768 inahesabiwa ceil(1024 / 28) × ceil(768 / 28) = 37 × 28 = tokens 1,036.

Hesabu na kinachotozwa kwa ombi

Hesabu ya ombi zima hufanywa kwa njia ile ile kama hesabu ya input ya ombi halisi lenye model, messages na tools zile zile. Jibu huripoti namba hiyo kama usage.prompt_tokens kwenye Chat Completions, kama usage.input_tokens kwenye Responses, na kama usage.input_tokens pamoja na usage.cache_read_input_tokens kwenye Messages.

  • Hesabu ni input kabla ya punguzo la input iliyokeshwa. Ombi halisi linaweza kusoma sehemu ya input hiyo kutoka cache na kutoza sehemu hiyo kwa bei ya cached. Kukesha kwa prompt
  • Picha iliyotolewa kama URL ya http(s) huhesabiwa 1,024 hapa. Ombi halisi hupakua picha na kuihesabu kutoka ukubwa wake kwa pikseli, kwa hiyo namba hizo mbili zinaweza kutofautiana. Tuma picha kama base64 ili kupata namba ile ile.
  • Output si sehemu ya hesabu. Jibu la ombi halisi hutozwa kama tokens za output juu yake, reasoning ikijumuishwa.
  • Hesabu ya text haina uumbizaji wa chat. Itumie kupima hati au sehemu ya prompt, na umbo la messages kupima ombi.

Ili kubadilisha hesabu kuwa gharama, izidishe kwa bei ya input ya model kwa tokens 1M. Model na bei

Mipaka

Kikomo Thamani Juu yake
Urefu wa text Bytes 4,000,000 (UTF-8) 413 na ujumbe text too long
Mwili wa ombi 32 MiB 413
Kwa kila ombi Maandishi moja au mazungumzo moja Tuma ombi moja kwa kila maandishi ili kuhesabu maandishi kadhaa.

Wito wa kuhesabu hauhesabiwi kwenye kikomo cha maombi 120 kwa dakika. Mipaka na salio

Makosa

Hali Aina Ujumbe Lini
400 invalid_request_error tokenize is available for the hosted open models; unknown model: <model> /v1/tokenize na model ambayo si id ya open-weight inayopangishwa.
400 invalid_request_error count_tokens is available for the hosted open models; unknown model: <model> /v1/messages/count_tokens na model ambayo si id ya open-weight inayopangishwa, au bila model.
400 invalid_request_error send `text` or `messages` /v1/tokenize bila text wala messages.
401 authentication_error Missing authentication / Invalid API key Hakuna key iliyotumwa, au key si halali.
413 invalid_request_error text too long text ni ndefu kuliko bytes 4,000,000. Mwili unaozidi 32 MiB pia hujibiwa kwa 413.
415 invalid_request_error Expected request with `Content-Type: application/json` Ombi halina content type ya JSON.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … Field inayohitajika haipo (model kwenye /v1/tokenize, messages kwenye /v1/messages/count_tokens) au field ina aina isiyo sahihi.
503 api_error token counting is temporarily unavailable for this model Hesabu haiwezi kufanywa kwa model hii kwa sasa. Jaribu tena baadaye.

/v1/tokenize hurudisha makosa kwa umbo la OpenAI. Kwenye /v1/messages/count_tokens makosa ya endpoint yenyewe (400 kwa model, 503) huja kwa umbo la Anthropic, na 401, 413, 415 na 422 huja kwa umbo la OpenAI. Soma status code kwanza, kisha error.type na error.message, ambazo zipo katika maumbo yote mawili.

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