Мазмұнға өту
Токендерді санау

Токендерді санау

Мәтіннің немесе бүкіл сұраудың токендерін жіберместен бұрын санаңыз.

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

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

Екі endpoint те өзіңіз атаған модельдің токенизаторымен санайды, ешқандай модель іске қосылмайды. Олар hosted open-weight модельдерді қамтиды. /v1/tokenize жай мәтінді немесе Chat Completions сөйлесуін қабылдайды. /v1/messages/count_tokens Anthropic Messages форматындағы сұрауды қабылдайды, Anthropic SDK мен Claude Code дәл осыны шақырады.

Санау тегін. Шақыру үшін API кілтіңіз қажет, балансыңыздан ештеңе алынбайды және қолдану журналында көрінбейді.

Мәтінді санау

model және text жіберіңіз. Мәтін айналасында чат пішімдеуінсіз, сол күйінде саналады.

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

Осы беттегі жауаптардағы сандар — мысалдар. Бірдей мәтін басқа модельде басқа санды береді.

Чат сұрауын санау

model және messages жіберіңіз, сұрауда болса tools да, дәл /v1/chat/completions үшін жібергендей. Жауап — бүкіл кірістің көлемі.

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

/v1/tokenize өрістері

Өріс Түрі Сипаттама
model string Міндетті. Hosted open-weight модельдің идентификаторы (id). Бас және кіші әріптер бірдей қаралады.
text string Чат пішімдеуінсіз, сол күйінде санайтын мәтін. 4,000,000 байтқа дейін. text немесе messages жіберіңіз; екеуі де болса, text саналады.
messages array Chat Completions форматындағы чат хабарламалары. Олар сұраудың толық кірісі ретінде саналады: әр хабарлама модельдің чат үлгісі оның айналасына қоятын пішімдеумен.
tools array Санауға қосылатын құрал анықтамалары. messages мәнімен бірге қолданылады.

Жауап осы өрістері бар JSON нысаны:

Өріс Түрі Сипаттама
model string Санау жасалған модель id-і, жарияланған жазылуымен.
tokens integer text болса: мәтіннің токендері. messages болса: бүкіл кірістің токендері, суреттерді қоса.

Messages сұрауын санау

/v1/messages үшін жіберетін денені жіберіңіз: model, messages, ал қолдансаңыз system және tools. Ресми Anthropic SDK-лары бұл endpoint-ті 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 Жауап
{
  "input_tokens": 21
}

/v1/messages/count_tokens endpoint-інің өрістері

Өріс Түрі Сипаттама
model string Міндетті. Hosted open-weight модельдің идентификаторы (id).
messages array Міндетті. Anthropic Messages форматындағы хабарламалар. text, image, tool_use және tool_result блоктары саналады.
system string | array System prompt: жол немесе мәтін блоктарының массиві.
tools array name, description және input_schema бар құрал анықтамалары.

Үйлесімділік үшін қабылданады, санауға әсер етпейді: tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking. Нақты сұрау денесін өзгеріссіз бере аласыз.

Жауап осы өрістері бар JSON нысаны:

Өріс Түрі Сипаттама
input_tokens integer Бүкіл кірістің токендері: system prompt, хабарламалар, құралдар және суреттер.

Қолдау көрсетілетін модельдер

Екі endpoint те hosted open-weight модельдер үшін санайды. GET /v1/models оларды қолдайтын әр модельдің endpoints ішінде /v1/tokenize және /v1/messages/count_tokens тізеді. Кез келген басқа model мәніне, Shannon id-лерін қоса, 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 моделі үшін токен сандарын жауаптың usage нысанынан оқыңыз.

Санау қалай жасалады

Әр модель өз токенизаторымен және өз чат үлгісімен саналады. Таңбалар немесе сөздер бойынша бағалау қолданылмайды.

Не саналады Ереже
Мәтін Жолдың жіберілген күйіндегі токендері. Бос жол 0 болып саналады.
Хабарламалар Хабарламалар мен құралдар модельдің өз чат үлгісімен, жауап басталатын жерге дейін орналастырылады, және сол бүкіл prompt саналады.
Рөлдер system, user, assistant және tool хабарламалары саналады. developer system ретінде саналады. Мазмұны да, құрал шақыруы да жоқ хабарлама ештеңе қоспайды.
Құрал шақырулары мен нәтижелері Алдыңғы assistant кезеңдерінің құрал шақырулары мен олардың нәтижелері екі endpoint-те де санаудың бөлігі болады.
Суреттер Дене ішінде жіберілген сурет (base64 немесе data: URL) әр 28 × 28 пиксельдік патчқа бір токен қосады: ceil(width / 28) × ceil(height / 28). http(s) URL ретінде берілген суретті бұл endpoint-тер жүктемейді және 1,024 деп санайды.

Мысал: 1,024 × 768 пиксельдік сурет ceil(1024 / 28) × ceil(768 / 28) = 37 × 28 = 1,036 токен болып саналады.

Санау және сұраудан не алынады

Бүкіл сұрауды санау дәл сол модельмен, хабарламалармен және құралдармен нақты сұраудың кіріс санауы сияқты жасалады. Жауап бұл санды Chat Completions бойынша usage.prompt_tokens, Responses бойынша usage.input_tokens, ал Messages бойынша usage.input_tokens плюс usage.cache_read_input_tokens ретінде көрсетеді.

  • Сан — кэштелген кіріс жеңілдігіне дейінгі кіріс. Нақты сұрау сол кірістің бір бөлігін кэштен оқып, ол бөлікті кэштелген бағамен есептеуі мүмкін. Промпт кэштеу
  • http(s) URL ретінде берілген сурет мұнда 1,024 деп есептеледі. Нақты сұрау суретті жүктеп алады және оны пиксельдегі көлемінен санайды, сондықтан екі сан әртүрлі болуы мүмкін. Бірдей сан алу үшін суретті base64 ретінде жіберіңіз.
  • Шығыс санға кірмейді. Нақты сұраудың жауабына үстіне шығыс токендері ретінде, пайымдауды қоса, төленеді.
  • text санауында чат пішімдеуі жоқ. Оны құжатты немесе prompt бөлігін өлшеу үшін, ал messages түрін сұрауды өлшеу үшін қолданыңыз.

Санды құнға айналдыру үшін оны модельдің 1M токен үшін кіріс бағасына көбейтіңіз. Модельдер және бағалар

Лимиттер

Лимит Мән Одан асқанда
text ұзындығы 4,000,000 байт (UTF-8) text too long хабарламасымен 413
Сұрау денесі 32 MiB 413
Бір сұрауға Бір мәтін немесе бір сөйлесу Бірнеше мәтінді санау үшін әр мәтінге бір сұрау жіберіңіз.

Санау шақырулары минутына 120 сұрау лимитіне есептелмейді. Шектеулер және баланс

Қателер

Мәртебе Түрі Хабарлама Қашан
400 invalid_request_error tokenize is available for the hosted open models; unknown model: <model> /v1/tokenize, model мәні hosted open-weight id емес.
400 invalid_request_error count_tokens is available for the hosted open models; unknown model: <model> /v1/messages/count_tokens, model мәні hosted open-weight id емес, немесе model жоқ.
400 invalid_request_error send `text` or `messages` /v1/tokenize, text та, messages те жоқ.
401 authentication_error Missing authentication / Invalid API key Кілт жіберілмеді, немесе кілт жарамсыз.
413 invalid_request_error text too long text 4,000,000 байттан ұзын. 32 MiB-тан үлкен денеге де 413 жауап беріледі.
415 invalid_request_error Expected request with `Content-Type: application/json` Сұрауда JSON мазмұн түрі жоқ.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … Міндетті өріс жоқ (/v1/tokenize бойынша model, /v1/messages/count_tokens бойынша messages) немесе өрістің түрі қате.
503 api_error token counting is temporarily unavailable for this model Санауды бұл модель үшін қазір жасау мүмкін емес. Кейінірек қайталап көріңіз.

/v1/tokenize қателерді OpenAI пішімінде қайтарады. /v1/messages/count_tokens бойынша endpoint-тің өз қателері (модель үшін 400, 503) Anthropic пішімінде, ал 401, 413, 415 және 422 OpenAI пішімінде келеді. Алдымен мәртебе кодын, содан кейін екі пішімде де бар error.type және error.message мәндерін оқыңыз.

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