የToken ቆጠራ
ጽሑፍን ወይም ሙሉ ጥያቄን ከመላክዎ በፊት tokens ዎቹን ይቁጠሩ።
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 ፎርማት ጥያቄ ይቀበላል፣ ይህም የAnthropic SDK እና Claude Code የሚያደርጉት ጥሪ ነው።
መቁጠር ነፃ ነው። ጥሪ የAPI ቁልፍዎን ይፈልጋል፣ ከቀሪ ሂሳብዎ ምንም አይወስድም እና በአጠቃቀም መዝገብዎ ውስጥ አይታይም።
ጽሑፍን መቁጠር
model እና text ይላኩ። ጽሑፉ ዙሪያው ያለ chat ቅርጸት እንዳለ ይቆጠራል።
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
} በዚህ ገጽ ላይ በምላሾቹ ውስጥ ያሉት ቁጥሮች ምሳሌዎች ናቸው። ተመሳሳይ ጽሑፍ በተለየ ሞዴል ላይ የተለየ ቆጠራ ይሰጣል።
የchat ጥያቄን መቁጠር
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 | ያለ chat ቅርጸት እንዳለ የሚቆጠር ጽሑፍ። እስከ 4,000,000 ባይቶች። text ወይም messages ይላኩ፤ ሁለቱም ሲኖሩ text ይቆጠራል። |
messages | array | በChat Completions ፎርማት የchat መልእክቶች። እንደ ጥያቄው ሙሉ input ይቆጠራሉ፦ እያንዳንዱ መልእክት የሞዴሉ chat template በዙሪያው ከሚያደርገው ቅርጸት ጋር። |
tools | array | በቆጠራው ውስጥ የሚካተቱ የtool ትርጓሜዎች። ከmessages ጋር አብረው ይጠቅማሉ። |
ምላሹ እነዚህ መስኮች ያሉት JSON object ነው፦
| መስክ | ዓይነት | መግለጫ |
|---|---|---|
model | string | ቆጠራው የተደረገለት የሞዴል id፣ በታተመው አጻጻፉ። |
tokens | integer | ከtext ጋር፦ የጽሑፉ tokens። ከmessages ጋር፦ ምስሎችን ጨምሮ የሙሉው input tokens። |
የMessages ጥያቄን መቁጠር
ወደ /v1/messages የሚልኩትን body ይላኩ፦ 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 | ግዴታ። በAnthropic Messages ፎርማት መልእክቶች። text፣ image፣ tool_use እና tool_result blocks ይቆጠራሉ። |
system | string | array | የsystem prompt፦ string ወይም የጽሑፍ blocks array ሊሆን ይችላል። |
tools | array | name፣ description እና input_schema ያላቸው የtool ትርጓሜዎች። |
ለተኳሃኝነት ተቀባይነት አላቸው፣ በቆጠራው ላይ ምንም ተጽዕኖ የላቸውም፦ tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking። የእውነተኛ ጥያቄን body ሳይቀይሩ ማስተላለፍ ይችላሉ።
ምላሹ እነዚህ መስኮች ያሉት JSON object ነው፦
| መስክ | ዓይነት | መግለጫ |
|---|---|---|
input_tokens | integer | የሙሉው input tokens፦ system prompt፣ መልእክቶች፣ tools እና ምስሎች። |
የሚደገፉ ሞዴሎች
ሁለቱም endpoints ለተስተናገዱ open-weight ሞዴሎች ይቆጥራሉ። GET /v1/models /v1/tokenize እና /v1/messages/count_tokens ን በሚደግፍ እያንዳንዱ ሞዴል endpoints ውስጥ ይዘረዝራል። ማንኛውም ሌላ የ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 ሞዴል የtoken ቆጠራዎቹን ከምላሽ usage object ያንብቡ።
ቆጠራው እንዴት ይደረጋል
እያንዳንዱ ሞዴል በራሱ tokenizer እና በራሱ chat template ይቆጠራል። ከቁምፊዎች ወይም ከቃላት የተገመተ ግምት አይጠቀምም።
| የሚቆጠረው | ሕግ |
|---|---|
| ጽሑፍ | እንደተላከ የstring tokens። ባዶ string 0 ይቆጠራል። |
| መልእክቶች | መልእክቶቹ እና tools በሞዴሉ የራሱ chat template ምላሹ እስከሚጀምርበት ነጥብ ድረስ ይደረደራሉ፣ እና ያ ሙሉ prompt ይቆጠራል። |
| ሚናዎች | system፣ user፣ assistant እና tool መልእክቶች ይቆጠራሉ። developer እንደ system ይቆጠራል። ይዘት እና የtool ጥሪ የሌለው መልእክት ምንም አይጨምርም። |
| የtool ጥሪዎች እና ውጤቶች | የቀደሙ የassistant ዙሮች የtool ጥሪዎች እና ውጤቶቻቸው በሁለቱም endpoints ላይ የቆጠራው አካል ናቸው። |
| ምስሎች | በbody ውስጥ የተላከ ምስል (base64 ወይም data: URL) ለእያንዳንዱ 28 × 28 ፒክሰል ቁራጭ አንድ token ይጨምራል፦ 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 tokens ይቆጠራል።
ቆጠራው እና ጥያቄ የሚከፈለው
የሙሉ ጥያቄ ቆጠራ ተመሳሳይ ሞዴል፣ መልእክቶች እና tools ካለው እውነተኛ ጥያቄ input ቆጠራ ጋር በተመሳሳይ መንገድ ይደረጋል። ምላሽ ያንን ቁጥር በ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 የቆጠራው አካል አይደለም። የእውነተኛ ጥያቄ ምላሽ reasoning ን ጨምሮ በተጨማሪ እንደ output tokens ይከፈላል።
- የ
textቆጠራ የchat ቅርጸት የለውም። ሰነድን ወይም የprompt ክፍልን ለመለካት ይጠቀሙበት፣ ጥያቄን ለመለካት ደግሞ የmessagesቅርጽን።
ቆጠራን ወደ ወጪ ለመቀየር በሞዴሉ በ1M tokens የinput ዋጋ ያባዙት። ሞዴሎችና ዋጋ
ገደቦች
| ገደብ | እሴት | ከዚያ በላይ |
|---|---|---|
የtext ርዝመት | 4,000,000 ባይቶች (UTF-8) | 413 ከtext too long መልእክት ጋር |
| የጥያቄ body | 32 MiB | 413 |
| በአንድ ጥያቄ | አንድ ጽሑፍ ወይም አንድ ውይይት | ብዙ ጽሑፎችን ለመቁጠር ለእያንዳንዱ ጽሑፍ አንድ ጥያቄ ይላኩ። |
የመቁጠሪያ ጥሪዎች በደቂቃ 120 ጥያቄዎች ገደብ ውስጥ አይቆጠሩም። ገደቦች እና ቀሪ ሂሳብ
ስህተቶች
| Status | አይነት | መልእክት | መቼ |
|---|---|---|---|
400 | invalid_request_error | tokenize is available for the hosted open models; unknown model: <model> | /v1/tokenize የተስተናገደ open-weight id ባልሆነ model። |
400 | invalid_request_error | count_tokens is available for the hosted open models; unknown model: <model> | /v1/messages/count_tokens የተስተናገደ open-weight id ባልሆነ model፣ ወይም ያለ 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 በላይ የሆነ body እንዲሁ በ413 ይመለሳል። |
415 | invalid_request_error | Expected request with `Content-Type: application/json` | ጥያቄው የJSON content type የለውም። |
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 ቅርጽ። መጀመሪያ የstatus ኮዱን ያንብቡ፣ ከዚያ በሁለቱም ቅርጾች ውስጥ ያሉትን 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"
}
}