Мазмунга өтүү
Токен саноо

Токен саноо

Текстти же бүтүн сурамды жөнөтөрдөн мурун анын токендерин санаңыз.

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"])
200 Жооп
{
  "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"])
200 Жооп
{
  "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)
200 Жооп
{
  "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-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 объектинен окуңуз.

Саноо кантип жасалат

Ар бир модель өзүнүн токенизатору жана өзүнүн чат шаблону менен саналат. Белгилерден же сөздөрдөн болжол колдонулбайт.

Эмне саналат Эреже
Текст Жөнөтүлгөн саптын токендери. Бош сап 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 окуңуз.

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"
  }
}