Անցնել բովանդակությանը
Թոքենների հաշվարկ

Թոքենների հաշվարկ

Հաշվեք տեքստի կամ ամբողջ հարցման թոքենները՝ նախքան այն ուղարկելը։

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
}

Այս էջի պատասխանների թվերը օրինակներ են։ Նույն տեքստը այլ մոդելի վրա տարբեր հաշվարկ է տալիս։

Չաթի հարցման հաշվարկ

Ուղարկեք 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 Պարտադիր է։ Hosted open-weight մոդելի 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 Պարտադիր է։ Hosted open-weight մոդելի id (նույնացուցիչ)։
messages array Պարտադիր է։ Հաղորդագրություններ Anthropic Messages ձևաչափով։ Հաշվվում են text, image, tool_use և tool_result բլոկները։
system string | array System prompt-ը՝ տող կամ տեքստային բլոկների զանգված։
tools array Գործիքների սահմանումներ՝ name-ով, description-ով և input_schema-ով։

Ընդունվում են համատեղելիության համար, առանց հաշվարկի վրա ազդեցության՝ tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking։ Կարող եք փոխանցել իրական հարցման մարմինն առանց փոփոխության։

Պատասխանը JSON օբյեկտ է հետևյալ դաշտերով.

Դաշտ Տեսակ Նկարագրություն
input_tokens integer Ամբողջ մուտքի թոքենները՝ system prompt, հաղորդագրություններ, գործիքներ և պատկերներ։

Աջակցվող մոդելներ

Երկու 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-ով և իր սեփական չաթի ձևանմուշով (chat template)։ Նիշերից կամ բառերից կատարված գնահատական չի օգտագործվում։

Ինչ է հաշվվում Կանոն
Տեքստ Տողի թոքենները՝ ինչպես ուղարկվել է։ Դատարկ տողը հաշվվում է 0։
Հաղորդագրություններ Հաղորդագրություններն ու գործիքները դասավորվում են մոդելի սեփական չաթի ձևանմուշով՝ մինչև այն կետը, որտեղ սկսվում է պատասխանը, և այդ ամբողջ prompt-ը հաշվվում է։
Դերեր Հաշվվում են system, user, assistant և tool հաղորդագրությունները։ developer-ը հաշվվում է որպես system։ Առանց բովանդակության և առանց գործիքի կանչի հաղորդագրությունը ոչինչ չի ավելացնում։
Գործիքի կանչեր և արդյունքներ Նախորդ assistant փուլերի գործիքի կանչերը և դրանց արդյունքները հաշվարկի մաս են երկու 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 թոքեն։

Հաշվարկը և այն, ինչ գանձվում է հարցումից

Ամբողջ հարցման հաշվարկը կատարվում է նույն ձևով, ինչ նույն մոդելով, հաղորդագրություններով և գործիքներով իրական հարցման մուտքի հաշվարկը։ Պատասխանը այդ թիվը հայտնում է որպես usage.prompt_tokens Chat Completions-ում, որպես usage.input_tokens Responses-ում և որպես usage.input_tokens գումարած usage.cache_read_input_tokens Messages-ում։

  • Հաշվարկը մուտքն է՝ cached-input զեղչից առաջ։ Իրական հարցումը կարող է այդ մուտքի մի մասը կարդալ cache-ից և այդ մասը գանձել cached գնով։ Հարցման քեշավորում
  • http(s) URL-ով տրված պատկերն այստեղ հաշվվում է 1,024։ Իրական հարցումը ներբեռնում է պատկերը և հաշվում է այն պիքսելներով իր չափից, ուստի երկու թվերը կարող են տարբերվել։ Պատկերն ուղարկեք base64-ով՝ նույն թիվը ստանալու համար։
  • Ելքը հաշվարկի մաս չէ։ Իրական հարցման պատասխանը գանձվում է որպես ելքի թոքեններ՝ դրան գումարած, ներառյալ reasoning-ը։
  • text հաշվարկը չաթի ֆորմատավորում չունի։ Օգտագործեք այն փաստաթուղթը կամ prompt-ի մասը չափելու համար, իսկ messages ձևը՝ հարցումը չափելու համար։

Հաշվարկը ծախսի վերածելու համար բազմապատկեք այն մոդելի մուտքի գնով՝ 1M թոքենի համար։ Մոդելներ և գներ

Սահմաններ

Սահման Արժեք Դրանից բարձր
text-ի երկարությունը 4,000,000 բայթ (UTF-8) 413 text too long հաղորդագրությամբ
Հարցման մարմին 32 MiB 413
Մեկ հարցման համար Մեկ տեքստ կամ մեկ զրույց Մի քանի տեքստ հաշվելու համար ուղարկեք մեկ հարցում յուրաքանչյուր տեքստի համար։

Հաշվարկի կանչերը չեն հաշվվում րոպեում 120 հարցման սահմանի մեջ։ Սահմանաչափեր և մնացորդ

Սխալներ

Կարգավիճակ Տեսակ Հաղորդագրություն Երբ
400 invalid_request_error tokenize is available for the hosted open models; unknown model: <model> /v1/tokenize այնպիսի model-ով, որը hosted open-weight id չէ։
400 invalid_request_error count_tokens is available for the hosted open models; unknown model: <model> /v1/messages/count_tokens այնպիսի model-ով, որը hosted open-weight id չէ, կամ առանց 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-ից մեծ մարմինը նույնպես պատասխանվում է 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: … Պարտադիր դաշտը բացակայում է (model /v1/tokenize-ում, messages /v1/messages/count_tokens-ում) կամ դաշտն ունի սխալ տեսակ։
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"
  }
}