Token ගණන් කිරීම
පෙළක හෝ සම්පූර්ණ ඉල්ලීමක tokens ඔබ එය යැවීමට පෙර ගණන් කරන්න.
POST https://api.shannon-ai.com/v1/tokenize
POST https://api.shannon-ai.com/v1/messages/count_tokens
Endpoints දෙකම ගණන් කරන්නේ ඔබ නම් කරන model එකේ tokenizer එකෙනි, සහ කිසිදු model එකක් ධාවනය නොවේ. ඒවා අපගේ සේවාදායකවල ධාවනය වන open-weight models ආවරණය කරයි. /v1/tokenize සරල පෙළක් හෝ Chat Completions සංවාදයක් ගනී. /v1/messages/count_tokens Anthropic Messages format එකේ ඉල්ලීමක් ගනී, එය Anthropic SDK එක සහ Claude Code කරන call එකයි.
ගණන් කිරීම නොමිලේ. Call එකකට ඔබේ API key එක අවශ්ය වන අතර, ඔබේ ශේෂයෙන් කිසිවක් ගන්නේ නැත සහ ඔබේ usage log එකේ දිස් නොවේ.
පෙළක් ගණන් කරන්න
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
} මෙම පිටුවේ පිළිතුරුවල ඇති අංක උදාහරණ වේ. එකම පෙළ වෙනස් model එකක වෙනස් ගණනක් දෙයි.
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 හි fields
| Field | වර්ගය | විස්තරය |
|---|---|---|
model | string | අවශ්යයි. අපගේ සේවාදායකවල ධාවනය වන open-weight model id එකක්. ලොකු සහ කුඩා අකුරු එකම ලෙස සලකයි. |
text | string | Chat හැඩතල ගැන්වීමක් නොමැතිව, එලෙසම ගණන් කළ යුතු පෙළක්. බයිට් 4,000,000 දක්වා. text හෝ messages යවන්න; දෙකම තිබේ නම් text ගණන් ගැනේ. |
messages | array | Chat Completions format එකේ chat පණිවිඩ. ඒවා ඉල්ලීමක සම්පූර්ණ input එක ලෙස ගණන් ගැනේ: model එකේ chat template එක ඒ වටා තබන හැඩතල ගැන්වීම සමඟ සෑම පණිවිඩයක්ම. |
tools | array | ගණනට ඇතුළත් කළ යුතු tool අර්ථ දැක්වීම්. messages සමඟ එකට භාවිතා කෙරේ. |
පිළිතුර මෙම fields සහිත JSON object එකකි:
| Field | වර්ගය | විස්තරය |
|---|---|---|
model | string | ගණන සාදන ලද model id එක, එහි ප්රකාශිත අකුරු වින්යාසයෙන්. |
tokens | integer | text සමඟ: පෙළේ tokens. messages සමඟ: රූප ඇතුළුව සම්පූර්ණ input එකේ tokens. |
Messages ඉල්ලීමක් ගණන් කරන්න
ඔබ /v1/messages වෙත යවන body එකම යවන්න: model, messages, සහ ඔබ භාවිතා කරන විට system සහ tools. නිල Anthropic SDKs මෙම endpoint එක messages.count_tokens හරහා call කරයි.
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 වෙත යවන ක්ෂේත්ර මොනවාද
| Field | වර්ගය | විස්තරය |
|---|---|---|
model | string | අවශ්යයි. අපගේ සේවාදායකවල ධාවනය වන open-weight model id එකක්. |
messages | array | අවශ්යයි. Anthropic Messages format එකේ පණිවිඩ. text, image, tool_use සහ tool_result blocks ගණන් ගැනේ. |
system | string | array | System prompt එක: string එකක් හෝ පෙළ කොටස් (text blocks) සහිත array එකක්. |
tools | array | name, description සහ input_schema සහිත tool අර්ථ දැක්වීම්. |
අනුකූලතාව සඳහා පිළිගනී, ගණනට බලපෑමක් නොමැතිව: tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking. ඔබට සැබෑ ඉල්ලීමක body එක වෙනස් නොකර යැවිය හැක.
පිළිතුර මෙම fields සහිත JSON object එකකි:
| Field | වර්ගය | විස්තරය |
|---|---|---|
input_tokens | integer | සම්පූර්ණ input එකේ tokens: system prompt, පණිවිඩ, tools සහ රූප. |
සහාය දක්වන models
Endpoints දෙකම ගණන් කරන්නේ අපගේ සේවාදායකවල ධාවනය වන open-weight models සඳහාය. GET /v1/models ඒවාට සහාය දක්වන සෑම model එකකම endpoints හි /v1/tokenize සහ /v1/messages/count_tokens ලැයිස්තුගත කරයි. Shannon ids ඇතුළුව වෙනත් ඕනෑම model අගයකට 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 model එකක් සඳහා, token ගණන් පිළිතුරේ usage object එකෙන් කියවන්න.
ගණන සාදන ආකාරය
සෑම model එකක්ම ගණන් කරන්නේ එහිම tokenizer එකෙන් සහ එහිම chat template එකෙනි. අක්ෂර හෝ වචන වලින් කරන ඇස්තමේන්තුවක් භාවිතා නොකෙරේ.
| ගණන් ගන්නේ කුමක්ද | නීතිය |
|---|---|
| පෙළක් | යැවූ ආකාරයටම string එකේ tokens. හිස් string එකක් 0 ලෙස ගණන් ගැනේ. |
| පණිවිඩ | පණිවිඩ සහ tools model එකේම chat template එකෙන් පිළිතුර ආරම්භ වන තැන දක්වා සකස් කෙරෙන අතර, ඒ සම්පූර්ණ prompt එක ගණන් ගැනේ. |
| Roles | system, user, assistant සහ tool පණිවිඩ ගණන් ගැනේ. developer system ලෙස ගණන් ගැනේ. අන්තර්ගතයක් සහ tool call එකක් නැති පණිවිඩයක් කිසිවක් එකතු නොකරයි. |
| Tool calls සහ ප්රතිඵල | පෙර assistant turns වල tool calls සහ ඒවායේ ප්රතිඵල endpoints දෙකේම ගණනේ කොටසකි. |
| රූප | Body එක තුළ යවන රූපයක් (base64 හෝ data: URL) 28 × 28 pixel patch එකකට එක token බැගින් එකතු කරයි: ceil(width / 28) × ceil(height / 28). http(s) URL එකක් ලෙස දෙන රූපයක් මෙම endpoints මගින් බාගත නොකරන අතර 1,024ක් ලෙස ගණන් ගැනේ. |
උදාහරණය: pixel 1,024 × 768 රූපයක් ceil(1024 / 28) × ceil(768 / 28) = 37 × 28 = tokens 1,036ක් ලෙස ගණන් ගැනේ.
ගණන සහ ඉල්ලීමකට අය කරන දේ
සම්පූර්ණ ඉල්ලීමක ගණන එම model එක, පණිවිඩ සහ 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 rate එකෙන් බිල් කළ හැක. Prompt caching
http(s)URL එකක් ලෙස දෙන රූපයක් මෙහි 1,024ක් ලෙස ගණන් ගනී. සැබෑ ඉල්ලීමක් රූපය බාගෙන එය pixels වල ප්රමාණයෙන් ගණන් කරයි, එබැවින් අංක දෙක වෙනස් විය හැක. එම අංකයම ලබා ගැනීමට රූපය base64 ලෙස යවන්න.- Output ගණනේ කොටසක් නොවේ. සැබෑ ඉල්ලීමක පිළිතුර, තර්කනය ඇතුළුව, ඊට අමතරව output tokens ලෙස බිල් කෙරේ.
textගණනට chat හැඩතල ගැන්වීමක් නැත. ලේඛනයක් හෝ prompt කොටසක් මැනීමට එය භාවිතා කරන්න, සහ ඉල්ලීමක් මැනීමටmessagesආකාරය භාවිතා කරන්න.
ගණනක් පිරිවැයකට හැරවීමට, එය model එකේ tokens 1Mකට input මිලෙන් ගුණ කරන්න. Models සහ මිල ගණන්
සීමා
| සීමාව | අගය | එයට ඉහළින් |
|---|---|---|
text හි දිග | බයිට් 4,000,000 (UTF-8) | text too long පණිවිඩය සහිත 413 |
| ඉල්ලීමේ body එක | 32 MiB | 413 |
| ඉල්ලීමකට | එක පෙළක් හෝ එක සංවාදයක් | පෙළ කිහිපයක් ගණන් කිරීමට පෙළකට එක ඉල්ලීම බැගින් යවන්න. |
ගණන් කිරීමේ calls විනාඩියකට ඉල්ලීම් 120 සීමාවට ගණන් නොගනී. සීමා සහ ශේෂය
දෝෂ
| Status | Type | පණිවිඩය | කවදාද |
|---|---|---|---|
400 | invalid_request_error | tokenize is available for the hosted open models; unknown model: <model> | අපගේ සේවාදායකවල ධාවනය වන open-weight id එකක් නොවන model එකක් සමඟ /v1/tokenize. |
400 | invalid_request_error | count_tokens is available for the hosted open models; unknown model: <model> | අපගේ සේවාදායකවල ධාවනය වන open-weight id එකක් නොවන model එකක් සමඟ, හෝ model නොමැතිව /v1/messages/count_tokens. |
400 | invalid_request_error | send `text` or `messages` | text හෝ messages දෙකම නොමැතිව /v1/tokenize. |
401 | authentication_error | Missing authentication / Invalid API key | Key එකක් යවා නැත, නැතහොත් 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: … | අවශ්ය field එකක් නැත (/v1/tokenize හි model, /v1/messages/count_tokens හි messages) නැතහොත් field එකක type එක වැරදිය. |
503 | api_error | token counting is temporarily unavailable for this model | මෙම මොහොතේ මෙම model එක සඳහා ගණන් කිරීම කළ නොහැක. පසුව නැවත උත්සාහ කරන්න. |
/v1/tokenize දෝෂ OpenAI හැඩයෙන් ආපසු දෙයි. /v1/messages/count_tokens හි endpoint එකේම දෝෂ (model සඳහා 400, 503) Anthropic හැඩයෙන් පැමිණෙන අතර, 401, 413, 415 සහ 422 OpenAI හැඩයෙන් පැමිණේ. මුලින් status code එක කියවා, ඉන්පසු හැඩ දෙකේම ඇති 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"
}
}