Агуулга руу алгасах
Токен тоолох

Токен тоолох

Текст эсвэл бүтэн хүсэлтийн токеныг илгээхээсээ өмнө тоолох.

POST https://api.shannon-ai.com/v1/tokenize

POST https://api.shannon-ai.com/v1/messages/count_tokens

Хоёр endpoint хоёулаа таны нэрлэсэн загварын tokenizer-ээр тоолох бөгөөд ямар ч загвар ажиллахгүй. Тэд hosted open-weight загваруудыг хамарна. /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
}

Энэ хуудасны хариунуудын тоо бол жишээ. Ижил текст өөр загвар дээр өөр тоо өгнө.

Чат хүсэлтийг тоолох

/v1/chat/completions руу илгээдэг шигээ model ба messages-ийг, хүсэлт tools-тэй бол түүнийг хамт илгээнэ. Хариу нь бүх оролтын хэмжээ.

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 Заавал. Hosted open-weight загварын id. Том, жижиг үсгийг адилхан үзнэ.
text string Чат форматгүйгээр, байгаагаар нь тоолох текст. 4,000,000 байт хүртэл. text эсвэл messages-ийг илгээнэ; хоёулаа байвал text-ийг тоолно.
messages array Chat Completions форматын чат мессеж. Хүсэлтийн бүтэн оролт мэтээр тоологдоно: мессеж бүр загварын чат template-ийн тойруулдаг форматтай хамт.
tools array Тоонд оруулах tool тодорхойлолт. messages-тэй хамт ашиглана.

Хариу нь эдгээр талбартай JSON объект:

Талбар Төрөл Тайлбар
model string Тоог хийсэн загварын id, нийтэлсэн бичлэгээр нь.
tokens integer text-тэй үед: текстийн токен. messages-тэй үед: зургийг оруулаад бүх оролтын токен.

Messages хүсэлтийг тоолох

/v1/messages руу илгээх body-г илгээнэ үү: 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 Заавал. Hosted open-weight загварын id.
messages array Заавал. Anthropic Messages форматын мессежүүд. text, image, tool_use ба tool_result block-уудыг тоолно.
system string | array System prompt: string эсвэл text block-уудын массив.
tools array name, description ба input_schema-тай tool тодорхойлолт.

Нийцлийн үүднээс хүлээн авна, тоонд нөлөөлөхгүй: tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking. Жинхэнэ хүсэлтийн body-г өөрчлөлтгүй дамжуулж болно.

Хариу нь эдгээр талбартай JSON объект:

Талбар Төрөл Тайлбар
input_tokens integer Бүх оролтын токен: system prompt, мессеж, tool ба зураг.

Дэмжигддэг загварууд

Хоёр endpoint хоёулаа hosted open-weight загваруудад тоолно. GET /v1/models /v1/tokenize ба /v1/messages/count_tokens-ийг дэмждэг загвар бүрийн endpoints дотор жагсаана. Бусад 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 объектоос уншина уу.

Тоог хэрхэн гаргадаг

Загвар бүрийг өөрийн tokenizer ба өөрийн чат template-ээр тоолно. Тэмдэгт эсвэл үгээс гаргасан тооцоог ашигладаггүй.

Юу тоологдох Дүрэм
Текст Илгээсэн string-ийн токен. Хоосон string 0 гэж тоологдоно.
Мессеж Мессеж ба tool-уудыг загварын өөрийн чат template-ээр, хариу эхлэх цэг хүртэл байрлуулж, тэр бүхэл prompt-ийг тоолно.
Үүргүүд system, user, assistant ба tool мессежийг тоолно. developer-ийг system гэж тоолно. Агуулга ч, tool дуудлага ч байхгүй мессеж юу ч нэмэхгүй.
Tool дуудлага ба үр дүн Өмнөх assistant ээлжүүдийн tool дуудлага ба тэдний үр дүн хоёр endpoint-д тоонд багтана.
Зураг Body дотор илгээсэн зураг (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 токен гэж тоологдоно.

Тоо ба хүсэлтийн тооцоо

Бүтэн хүсэлтийн тоог ижил загвар, мессеж, tool-тэй жинхэнэ хүсэлтийн оролтын тоотой яг адилаар гаргана. Хариу энэ тоог Chat Completions дээр usage.prompt_tokens, Responses дээр usage.input_tokens, Messages дээр usage.input_tokens дээр usage.cache_read_input_tokens-ийг нэмж мэдээлнэ.

  • Тоо нь кэшлэгдсэн оролтын хөнгөлөлтийн өмнөх оролт. Жинхэнэ хүсэлт тэр оролтын тодорхой хэсгийг кэшээс уншиж, тэр хэсгийг кэшийн үнээр тооцож болно. Prompt кэшлэл
  • http(s) URL-ээр өгсөн зургийг энд 1,024 гэж тоолно. Жинхэнэ хүсэлт зургийг татаж аваад пикселийн хэмжээгээр нь тоолдог тул хоёр тоо ялгаатай байж болно. Ижил тоо авахын тулд зургийг base64 хэлбэрээр илгээнэ үү.
  • Гаралт тоонд ордоггүй. Жинхэнэ хүсэлтийн хариуг гаралтын токен гэж нэмж тооцох бөгөөд reasoning-ийг оруулан.
  • text-ийн тоо чатын форматгүй. Үүнийг баримт эсвэл prompt-ийн хэсгийг хэмжихэд, messages хэлбэрийг хүсэлт хэмжихэд ашиглана уу.

Тоог зардал болгохын тулд загварын 1M токены оролтын үнээр үржүүлнэ. Загвар ба үнэ

Хязгаар

Хязгаар Утга Түүнээс дээш
text-ийн урт 4,000,000 байт (UTF-8) 413 ба text too long мессеж
Хүсэлтийн body 32 MiB 413
Хүсэлт тутамд Нэг текст эсвэл нэг харилцан яриа Хэд хэдэн текст тоолохын тулд текст бүрт нэг хүсэлт илгээнэ.

Тоолох дуудлага минутад 120 хүсэлтийн хязгаарт тоологдохгүй. Хязгаар ба үлдэгдэл

Алдаа

Статус Төрөл Мессеж Хэзээ
400 invalid_request_error tokenize is available for the hosted open models; unknown model: <model> /v1/tokenize дуудлагад hosted open-weight id биш model өгсөн.
400 invalid_request_error count_tokens is available for the hosted open models; unknown model: <model> Hosted 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 Түлхүүр илгээгээгүй, эсвэл түлхүүр хүчинтэй биш.
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 хэлбэрээр ирнэ. Эхлээд статус кодыг, дараа нь хоёр хэлбэрт аль алинд нь байдаг 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"
  }
}