Zum Inhalt sprangen
Tokenzielung

Tokenzielung

Zielt d'Tokens vun engem Text oder vun enger ganzer Ufro, ier Dir se schéckt.

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

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

Béid Endpoints zielen mam Tokenizer vum Modell, dat Dir nennt, a kee Modell leeft. Si decken d'Hosted Open-Weight-Modeller of. /v1/tokenize hëlt e blannen Text oder eng Chat-Completions-Konversatioun. /v1/messages/count_tokens hëlt eng Ufro am Anthropic-Messages-Format, dat ass de Ruff, deen d'Anthropic-SDK a Claude Code maachen.

D'Zielen ass gratis. E Ruff brauch Äre API-Schlëssel, hëlt näischt aus Ärem Solde a erschéngt net an Ärem Notzungs-Log.

En Text zielen

Schéckt model an text. Den Text gëtt gezielt, wéi e ass, ouni Chat-Formatéierung drëms.

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 Äntwert
{
  "model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
  "tokens": 3
}

D'Zuelen an den Äntwerten op dëser Säit sinn Beispiller. Deeselwechten Text gëtt bei engem anere Modell eng aner Zuel.

Eng Chat-Ufro zielen

Schéckt model an messages, mat tools, wann d'Ufro se huet, genau esou, wéi Dir se un /v1/chat/completions géift schécken. D'Äntwert ass d'Gréisst vum ganzen 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"])
200 Äntwert
{
  "model": "DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
  "tokens": 164
}

Felder vun /v1/tokenize

Feld Typ Beschreiwung
model string Erfuerderlech. Eng Hosted-Open-Weight-Modell-ID. Grouss- a Klengschreiwung gëtt gläich behandelt.
text string En Text, deen esou gezielt gëtt, wéi en ass, ouni Chat-Formatéierung. Bis zu 4,000,000 Bytes. Schéckt text oder messages; wann déi zwee do sinn, gëtt text gezielt.
messages array Chat-Messagen am Chat-Completions-Format. Si ginn als kompletten Input vun enger Ufro gezielt: all Message mat der Formatéierung, déi d'Chat-Template vum Modell drëms setzt.
tools array Tool-Definitiounen, déi an d'Zielung abegraff solle ginn. Gëtt zesumme mat messages benotzt.

D'Äntwert ass e JSON-Objet mat dëse Felder:

Feld Typ Beschreiwung
model string D'Modell-ID, fir déi gezielt gouf, a senger publizéierter Schreifweis.
tokens integer Mat text: d'Tokens vum Text. Mat messages: d'Tokens vum ganzen Input, Biller abegraff.

Eng Messages-Ufro zielen

Schéckt de Body, deen Dir un /v1/messages schécke géift: model, messages, an system an tools, wann Dir se benotzt. D'offiziell Anthropic-SDKs ruffen dësen Endpoint iwwer 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 Äntwert
{
  "input_tokens": 21
}

Felder vun /v1/messages/count_tokens

Feld Typ Beschreiwung
model string Erfuerderlech. Eng Hosted-Open-Weight-Modell-ID.
messages array Erfuerderlech. Messagen am Anthropic-Messages-Format. text-, image-, tool_use- an tool_result-Blöck ginn gezielt.
system string | array De System-Prompt: e String oder en Array vun Text-Blöck.
tools array Tool-Definitiounen mat name, description an input_schema.

Fir d'Kompatibilitéit akzeptéiert, ouni Effekt op d'Zielung: tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking. Dir kënnt de Body vun enger richteger Ufro onverännert iwwerginn.

D'Äntwert ass e JSON-Objet mat dëse Felder:

Feld Typ Beschreiwung
input_tokens integer D'Tokens vum ganzen Input: System-Prompt, Messagen, Tools a Biller.

Ënnerstëtzt Modeller

Béid Endpoints zielen fir d'Hosted Open-Weight-Modeller. GET /v1/models lëscht /v1/tokenize an /v1/messages/count_tokens an den endpoints vun all Modell op, dee se ënnerstëtzt. All aneren model-Wäert, d'Shannon-IDen abegraff, gëtt mat 400 beäntwert.

  • 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

Bei engem Shannon-Modell liest d'Tokenzuelen aus dem usage-Objet vun enger Äntwert of.

Wéi gezielt gëtt

All Modell gëtt mat sengem eegenen Tokenizer a mat sengem eegene Chat-Template gezielt. Et gëtt keng Schätzung no Zeechen oder Wierder benotzt.

Wat gezielt gëtt Regel
En Text D'Tokens vum String, wéi e geschéckt gëtt. E leere String zielt 0.
Messagen D'Messagen an d'Tools ginn mam eegene Chat-Template vum Modell opgebaut, bis dohin, wou d'Äntwert ufänkt, an dee ganze Prompt gëtt gezielt.
Rollen system-, user-, assistant- an tool-Messagen ginn gezielt. developer gëtt als system gezielt. Eng Message ouni Inhalt an ouni Tool-Ruff füügt näischt derbäi.
Tool-Ruffer a Resultater Tool-Ruffer vu fréieren Assistent-Tourë a hir Resultater sinn en Deel vun der Zielung, op béiden Endpoints.
Biller E Bild, dat am Body geschéckt gëtt (base64 oder eng data:-URL), füügt een Token pro 28 × 28 Pixel grousse Patch derbäi: ceil(width / 28) × ceil(height / 28). E Bild, dat als http(s)-URL ginn ass, gëtt vun dësen Endpoints net erofgelueden a zielt 1,024.

Beispill: e Bild vun 1,024 × 768 Pixel zielt ceil(1024 / 28) × ceil(768 / 28) = 37 × 28 = 1,036 Tokens.

D'Zielung a wat eng Ufro berechent gëtt

D'Zielung vun enger ganzer Ufro gëtt op déiselwecht Manéier gemaach wéi d'Input-Zielung vun enger richteger Ufro mam selwechte Modell, de selwechte Messagen an de selwechten Tools. Eng Äntwert mellt dës Zuel als usage.prompt_tokens bei Chat Completions, als usage.input_tokens bei Responses, an als usage.input_tokens plus usage.cache_read_input_tokens bei Messages.

  • D'Zuel ass den Input virum Rabatt fir gecachten Input. Eng richteg Ufro ka en Deel vun deem Input aus dem Cache liesen an deen Deel zum Cache-Tarif berechnen. Prompt Caching
  • E Bild, dat als http(s)-URL ginn ass, zielt hei 1,024. Eng richteg Ufro luet d'Bild erof a zielt et no senger Gréisst a Pixel, sou datt déi zwou Zuele sech ënnerscheede kënnen. Schéckt d'Bild als base64, fir déiselwecht Zuel ze kréien.
  • Den Output ass kee Bestanddeel vun der Zielung. D'Äntwert vun enger richteger Ufro gëtt zousätzlech als Output-Tokens berechent, Reasoning abegraff.
  • Eng text-Zielung huet keng Chat-Formatéierung. Benotzt se, fir en Dokument oder en Deel vun engem Prompt ze moossen, an d'messages-Form, fir eng Ufro ze moossen.

Fir eng Zuel an Käschte ëmzewandelen, multiplizéiert se mam Input-Präis vum Modell pro 1M Tokens. Modeller a Präisser

Limiten

Limit Wäert Doriwwer
Längt vun text 4,000,000 Bytes (UTF-8) 413 mat der Message text too long
Body vun der Ufro 32 MiB 413
Pro Ufro Ee Text oder eng Konversatioun Schéckt eng Ufro pro Text, fir méi Texter ze zielen.

Zielruffer zielen net bei der Limit vun 120 Ufroen pro Minutt mat. Limiten a Solde

Feeler

Status Typ Message Wéini
400 invalid_request_error tokenize is available for the hosted open models; unknown model: <model> /v1/tokenize mat engem model, deen keng Hosted-Open-Weight-ID ass.
400 invalid_request_error count_tokens is available for the hosted open models; unknown model: <model> /v1/messages/count_tokens mat engem model, deen keng Hosted-Open-Weight-ID ass, oder ouni model.
400 invalid_request_error send `text` or `messages` /v1/tokenize mat weder text nach messages.
401 authentication_error Missing authentication / Invalid API key Et gouf kee Schlëssel geschéckt, oder de Schlëssel ass net gülteg.
413 invalid_request_error text too long text ass méi laang wéi 4,000,000 Bytes. E Body iwwer 32 MiB gëtt och mat 413 beäntwert.
415 invalid_request_error Expected request with `Content-Type: application/json` D'Ufro huet keen JSON-Content-Type.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … E erfuerderlecht Feld feelt (model op /v1/tokenize, messages op /v1/messages/count_tokens) oder e Feld huet de falsche Typ.
503 api_error token counting is temporarily unavailable for this model D'Zielung kann fir dëse Modell momentan net gemaach ginn. Probéiert et méi spéit nach eng Kéier.

/v1/tokenize gëtt Feeler an der OpenAI-Form zréck. Op /v1/messages/count_tokens kommen d'Feeler vum Endpoint selwer (400 fir de Modell, 503) an der Anthropic-Form, an 401, 413, 415 an 422 kommen an der OpenAI-Form. Liest fir d'éischt de Status-Code, dann error.type an error.message, déi a béiden Forme präsent sinn.

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