Токен саноо
Текстти же бүтүн сурамды жөнөтөрдөн мурун анын токендерин санаңыз.
POST https://api.shannon-ai.com/v1/tokenize
POST https://api.shannon-ai.com/v1/messages/count_tokens
Эки endpoint тең сиз атаган модельдин токенизатору менен санайт, жана эч бир модель иштебейт. Алар хостингдеги ачык салмактуу моделдерди камтыйт. /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"]) 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 жөнөткөндөй. Жооп — бүт кириштин өлчөмү.
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 | Милдеттүү. Хостингдеги ачык салмактуу модель 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) 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 | Милдеттүү. Хостингдеги ачык салмактуу модель id. |
messages | array | Милдеттүү. Anthropic Messages форматындагы билдирүүлөр. text, image, tool_use жана tool_result блоктору саналат. |
system | string | array | Системалык промпт: сап же текст блокторунун массиви. |
tools | array | name, description жана input_schema бар курал аныктамалары. |
Шайкештик үчүн кабыл алынат, санга таасир этпейт: tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking. Чыныгы сурамдын денесин өзгөртпөй бере аласыз.
Жооп ушул талаалары бар JSON объекти:
| Талаа | Түрү | Сүрөттөмө |
|---|---|---|
input_tokens | integer | Бүт кириштин токендери: системалык промпт, билдирүүлөр, куралдар жана сүрөттөр. |
Колдоого алынган моделдер
Эки endpoint тең хостингдеги ачык салмактуу моделдер үчүн санайт. 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 объектинен окуңуз.
Саноо кантип жасалат
Ар бир модель өзүнүн токенизатору жана өзүнүн чат шаблону менен саналат. Белгилерден же сөздөрдөн болжол колдонулбайт.
| Эмне саналат | Эреже |
|---|---|
| Текст | Жөнөтүлгөн саптын токендери. Бош сап 0 деп саналат. |
| Билдирүүлөр | Билдирүүлөр жана куралдар модельдин өз чат шаблону менен, жооп башталган жерге чейин жайгаштырылат жана бүт ошол промпт саналат. |
| Ролдор | system, user, assistant жана tool билдирүүлөрү саналат. developer system катары саналат. Мазмуну да, курал чалуусу да жок билдирүү эч нерсе кошпойт. |
| Курал чалуулары жана натыйжалар | Мурунку ассистент кадамдарынын курал чалуулары жана алардын натыйжалары саноого кирет, эки 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 катары жөнөтүңүз.- Чыгыш санга кирбейт. Чыныгы сурамдын жообу кошумча чыгыш токендери катары эсептелет, reasoning кошулуп.
textсаноосунда чат форматтоосу жок. Аны документти же промпт бөлүгүн өлчөө үчүн, ал эми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> | Хостингдеги ачык салмактуу id эмес model менен /v1/tokenize. |
400 | invalid_request_error | count_tokens is available for the hosted open models; unknown model: <model> | Хостингдеги ачык салмактуу 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 | Ачкыч жөнөтүлгөн жок, же ачкыч жараксыз. |
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"
}
}