منځپانګې ته ټوپ ووهئ
د ټوکنونو شمېرنه

د ټوکنونو شمېرنه

مخکې له لیږلو د متن یا بشپړې غوښتنې ټوکنونه وشمیرئ.

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

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

دواړه endpoints د هغه ماډل tokenizer سره شمیري چې تاسو یې نوموئ، او هیڅ ماډل نه چلیږي. دوی کوربه شوي open-weight ماډلونه پوښي. /v1/tokenize ساده متن یا د Chat Completions ګفتګه اخلي. /v1/messages/count_tokens د Anthropic Messages په بڼه غوښتنه اخلي، چې هغه call دی چې Anthropic SDK او Claude Code یې کوي.

شمېرنه وړیا ده. Call ستاسو API کیلي ته اړتیا لري، له بیلانس هیڅ نه اخلي او ستاسو په usage log کې نه ښکاري.

متن وشمیرئ

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 ته یې لیږئ. ځواب د ټول input اندازه ده.

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 اړین. د کوربه شوي open-weight ماډل id. لوی او کوچني توري یو شان ګڼل کیږي.
text string متن چې هماغسې شمیرل کیږي لکه چې دی، د چیټ بڼې پرته. تر 4,000,000 بایټونو پورې. text یا messages ولیږئ؛ کله چې دواړه وي، text شمیرل کیږي.
messages array د چیټ messages د Chat Completions په بڼه. دوی د غوښتنې د بشپړ input په توګه شمیرل کیږي: هر message د هغې بڼې سره چې د ماډل chat template یې شاوخوا ږدي.
tools array د tool تعریفونه چې په شمېرنه کې شامل شي. د messages سره یوځای کارول کیږي.

ځواب د JSON څیز دی چې دا ساحې لري:

ساحه ډول تشریح
model string د ماډل id چې شمېرنه یې لپاره شوې، په خپل خپور شوي املا کې.
tokens integer د text سره: د متن ټوکنونه. د messages سره: د ټول input ټوکنونه، انځورونه په ګډون.

د Messages غوښتنه وشمیرئ

هغه بدنه ولیږئ چې تاسو به /v1/messages ته لیږئ: model، messages، او system او tools کله چې یې کاروئ. رسمي Anthropic SDKs دا 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 کې

ساحه ډول تشریح
model string اړین. د کوربه شوي open-weight ماډل id.
messages array اړین. Messages د Anthropic Messages په بڼه. text، image، tool_use او tool_result blocks شمیرل کیږي.
system string | array System prompt: یو string یا د متن blocks لړۍ.
tools array د tool تعریفونه د name، description او input_schema سره.

د مطابقت لپاره منل شوي، په شمېرنه کې د اغېز پرته: tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking. تاسو کولی شئ د ریښتینې غوښتنې بدنه بې بدلون ورکړئ.

ځواب د JSON څیز دی چې دا ساحې لري:

ساحه ډول تشریح
input_tokens integer د ټول input ټوکنونه: system prompt، messages، tools او انځورونه.

ملاتړ شوي ماډلونه

دواړه endpoints د کوربه شوو 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 څیز ولولئ.

شمېرنه څنګه کیږي

هر ماډل د خپل tokenizer او خپل chat template سره شمیرل کیږي. د توریو یا کلمو څخه هیڅ اټکل نه کارول کیږي.

څه شمیرل کیږي قاعده
متن د string ټوکنونه لکه لیږل شوي. خالي string 0 شمیرل کیږي.
Messages Messages او tools د ماډل د خپل chat template سره ترتیب کیږي، تر هغه ځایه چې ځواب پیلیږي، او ټول هغه prompt شمیرل کیږي.
رولونه system، user، assistant او tool messages شمیرل کیږي. developer د system په توګه شمیرل کیږي. Message چې منځپانګه او tool call نه لري هیڅ نه زیاتوي.
Tool calls او پایلې د پخوانیو assistant turns tool calls او د هغوی پایلې په دواړو endpoints کې د شمېرنې برخه دي.
انځورونه انځور چې د بدنې دننه لیږل شوی (base64 یا data: URL) د هر 28 × 28 پکسل پیچ لپاره یو ټوکن زیاتوي: ceil(width / 28) × ceil(height / 28). انځور چې د http(s) URL په توګه ورکول شوی دا endpoints ډاونلوډ نه کوي او 1,024 شمیري.

بېلګه: 1,024 × 768 پکسل انځور ceil(1024 / 28) × ceil(768 / 28) = 37 × 28 = 1,036 ټوکنونه شمیرل کیږي.

شمېرنه او غوښتنه څه بیل کیږي

د بشپړې غوښتنې شمېرنه په همدې ډول کیږي لکه د ریښتینې غوښتنې د input شمېرنه د همدې ماډل، messages او tools سره. ځواب دا شمیره په Chat Completions کې د usage.prompt_tokens په توګه، په Responses کې د usage.input_tokens په توګه، او په Messages کې د usage.input_tokens جمع usage.cache_read_input_tokens په توګه راپور کوي.

  • شمېرنه د cached-input تخفیف مخکې input دی. ریښتینې غوښتنه کولی شي د هغه input یوه برخه له cache څخه ولولي او هغه برخه د cached نرخ سره بیل کړي. د پرامپټ کیشینگ
  • انځور چې د http(s) URL په توګه ورکول شوی دلته 1,024 شمیرل کیږي. ریښتینې غوښتنه انځور ډاونلوډ کوي او د پکسلونو له اندازې یې شمیري، نو دوه شمیرې توپیر کولی شي. انځور د base64 په توګه ولیږئ ترڅو همدا شمیره ترلاسه کړئ.
  • Output د شمېرنې برخه نه دی. د ریښتینې غوښتنې ځواب د output ټوکنونو په توګه پر سر بیل کیږي، reasoning په ګډون.
  • د text شمېرنه د چیټ بڼه نه لري. دا د سند یا د prompt برخې د اندازه کولو لپاره وکاروئ، او د messages بڼه د غوښتنې د اندازه کولو لپاره.

د شمېرنې لګښت ته د بدلولو لپاره، یې د ماډل د input نرخ په هر 1M ټوکنونو کې ضرب کړئ. ماډلونه او بیې

حدونه

حد ارزښت له هغې پورته
د text اوږدوالی 4,000,000 بایټونه (UTF-8) 413 د پیغام text too long سره
د غوښتنې بدنه 32 MiB 413
په هر غوښتنه یو متن یا یوه ګفتګه د څو متنونو د شمېرلو لپاره د هر متن لپاره یوه غوښتنه ولیږئ.

د شمېرنې calls د دقیقې په 120 غوښتنو حد کې نه شمیرل کیږي. حدونه او بیلانس

تېروتنې

حالت ډول پیغام کله
400 invalid_request_error tokenize is available for the hosted open models; unknown model: <model> /v1/tokenize د model سره چې کوربه شوی open-weight id نه وي.
400 invalid_request_error count_tokens is available for the hosted open models; unknown model: <model> /v1/messages/count_tokens د model سره چې کوربه شوی 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"
  }
}