د ټوکنونو شمېرنه
مخکې له لیږلو د متن یا بشپړې غوښتنې ټوکنونه وشمیرئ.
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"]) const response = await fetch("https://api.shannon-ai.com/v1/tokenize", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
text: "Hello, world",
}),
});
const { tokens } = await response.json();
console.log(tokens); curl https://api.shannon-ai.com/v1/tokenize \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"text": "Hello, world"
}' {
"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"]) const 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"],
},
},
},
],
};
const response = await fetch("https://api.shannon-ai.com/v1/tokenize", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify(request),
});
const { tokens } = await response.json();
console.log(tokens); curl https://api.shannon-ai.com/v1/tokenize \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"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"]
}
}
}
]
}' {
"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) import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({
apiKey: "YOUR_API_KEY",
baseURL: "https://api.shannon-ai.com",
});
const count = await client.messages.countTokens({
model: "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
system: "You are a concise assistant.",
messages: [
{ role: "user", content: "Summarise the attached report." },
],
});
console.log(count.input_tokens); curl https://api.shannon-ai.com/v1/messages/count_tokens \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
"system": "You are a concise assistant.",
"messages": [
{"role": "user", "content": "Summarise the attached report."}
]
}' {
"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-REAPGLM-5.2-3BIT-REAPKimi-K3-3BIT-REAPNemotron3Ultra-3BIT-REAPMiniMax-M3-3BIT-REAPDeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAPKimi-K2.6-W4A16-AUTOROUND-REAPLaguna-S-2.1-W4A16-AUTOROUND-REAPinkling-W4A16-AUTOROUND-REAPMiMo-V2.5-Pro-W8A16MiMo-V2.5-W8A16Hy3-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، چې په دواړو بڼو کې شتون لري.
{
"error": {
"type": "invalid_request_error",
"message": "tokenize is available for the hosted open models; unknown model: shannon-3"
}
} {
"type": "error",
"error": {
"type": "invalid_request_error",
"message": "count_tokens is available for the hosted open models; unknown model: shannon-3"
}
}