Siirry sisältöön
Tokenien laskenta

Tokenien laskenta

Laske tekstin tai koko pyynnön tokenit ennen kuin lähetät sen.

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

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

Molemmat päätepisteet laskevat nimeämäsi mallin tokenizerilla, eikä mitään mallia suoriteta. Ne kattavat hostatut avoimen painon mallit. /v1/tokenize ottaa pelkän tekstin tai Chat Completions -keskustelun. /v1/messages/count_tokens ottaa pyynnön Anthropic Messages -muodossa, mikä on kutsu, jonka Anthropic-SDK ja Claude Code tekevät.

Laskenta on ilmaista. Kutsu tarvitsee API-avaimesi, ei vie mitään saldostasi eikä näy käyttölokissasi.

Laske teksti

Lähetä model ja text. Teksti lasketaan sellaisenaan, ilman chat-muotoilua ympärillä.

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

Tämän sivun vastausten luvut ovat esimerkkejä. Sama teksti antaa eri määrän eri mallilla.

Laske chat-pyyntö

Lähetä model ja messages, ja tools, kun pyynnössä niitä on, täsmälleen kuten lähettäisit ne päätepisteeseen /v1/chat/completions. Vastaus on koko syötteen koko.

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

Päätepisteen /v1/tokenize kentät

Kenttä Tyyppi Kuvaus
model string Pakollinen. Hostatun avoimen painon mallin id. Isoja ja pieniä kirjaimia kohdellaan samoin.
text string Teksti, joka lasketaan sellaisenaan, ilman chat-muotoilua. Enintään 4,000,000 tavua. Lähetä text tai messages; kun molemmat ovat mukana, text lasketaan.
messages array Chat-viestit Chat Completions -muodossa. Ne lasketaan pyynnön täytenä syötteenä: jokainen viesti sillä muotoilulla, jonka mallin chat-mallipohja asettaa sen ympärille.
tools array Työkalumääritykset, jotka sisällytetään laskentaan. Käytetään yhdessä kentän messages kanssa.

Vastaus on JSON-objekti, jossa on nämä kentät:

Kenttä Tyyppi Kuvaus
model string Mallin id, jolle laskenta tehtiin, julkaistussa kirjoitusasussaan.
tokens integer Kentällä text: tekstin tokenit. Kentällä messages: koko syötteen tokenit, kuvat mukaan lukien.

Laske Messages-pyyntö

Lähetä runko, jonka lähettäisit päätepisteeseen /v1/messages: model, messages sekä system ja tools, jos käytät niitä. Viralliset Anthropic-SDK:t kutsuvat tätä päätepistettä funktiolla 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 Vastaus
{
  "input_tokens": 21
}

Päätepisteen /v1/messages/count_tokens kentät

Kenttä Tyyppi Kuvaus
model string Pakollinen. Hostatun avoimen painon mallin id.
messages array Pakollinen. Viestit Anthropic Messages -muodossa. text-, image-, tool_use- ja tool_result-lohkot lasketaan.
system string | array Järjestelmäprompt: merkkijono tai tekstilohkojen taulukko.
tools array Työkalumääritykset kentillä name, description ja input_schema.

Hyväksytään yhteensopivuuden vuoksi, ilman vaikutusta laskentaan: tool_choice, max_tokens, temperature, top_p, stop_sequences, stream, thinking. Voit välittää todellisen pyynnön rungon sellaisenaan.

Vastaus on JSON-objekti, jossa on nämä kentät:

Kenttä Tyyppi Kuvaus
input_tokens integer Koko syötteen tokenit: järjestelmäprompt, viestit, työkalut ja kuvat.

Tuetut mallit

Molemmat päätepisteet laskevat hostatuille avoimen painon malleille. GET /v1/models listaa /v1/tokenize ja /v1/messages/count_tokens jokaisen niitä tukevan mallin endpoints-kentässä. Mihin tahansa muuhun model-arvoon, Shannon-id:t mukaan lukien, vastataan 400:lla.

  • 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-mallilla lue tokenmäärät vastauksen usage-objektista.

Miten laskenta tehdään

Jokainen malli lasketaan omalla tokenizerillaan ja omalla chat-mallipohjallaan. Merkkeihin tai sanoihin perustuvaa arviota ei käytetä.

Mitä lasketaan Sääntö
Teksti Merkkijonon tokenit sellaisena kuin se lähetettiin. Tyhjä merkkijono lasketaan 0:ksi.
Viestit Viestit ja työkalut aseteltu mallin oman chat-mallipohjan mukaan siihen kohtaan asti, jossa vastaus alkaa, ja koko tuo prompt lasketaan.
Roolit system-, user-, assistant- ja tool-viestit lasketaan. developer lasketaan system-viestiksi. Viesti, jossa ei ole sisältöä eikä työkalukutsua, ei lisää mitään.
Työkalukutsut ja tulokset Aiempien avustajavuorojen työkalukutsut ja niiden tulokset kuuluvat laskentaan molemmissa päätepisteissä.
Kuvat Rungon sisällä lähetetty kuva (base64 tai data:-URL) lisää yhden tokenin jokaista 28 × 28 pikselin ruutua kohti: ceil(width / 28) × ceil(height / 28). Kuvaa, joka annetaan http(s)-URL:na, nämä päätepisteet eivät lataa, ja se lasketaan 1,024:ksi.

Esimerkki: 1,024 × 768 pikselin kuva lasketaan ceil(1024 / 28) × ceil(768 / 28) = 37 × 28 = 1,036 tokeniksi.

Laskenta ja se, mitä pyynnöstä veloitetaan

Koko pyynnön laskenta tehdään samalla tavalla kuin todellisen pyynnön syötteen laskenta samalla mallilla, viesteillä ja työkaluilla. Vastaus ilmoittaa tuon luvun muodossa usage.prompt_tokens Chat Completionsissa, usage.input_tokens Responsesissa ja usage.input_tokens plus usage.cache_read_input_tokens Messagesissa.

  • Määrä on syöte ennen välimuistisyötteen alennusta. Todellinen pyyntö voi lukea osan syötteestä välimuistista ja laskuttaa sen välimuistihinnalla. Prompt-välimuistitus
  • Kuva, joka annetaan http(s)-URL:na, lasketaan tässä 1,024:ksi. Todellinen pyyntö lataa kuvan ja laskee sen pikselikoosta, joten luvut voivat poiketa toisistaan. Lähetä kuva base64-koodattuna saadaksesi saman luvun.
  • Tuloste ei kuulu laskentaan. Todellisen pyynnön vastaus laskutetaan tulostetokeneina lisäksi, päättely mukaan lukien.
  • text-laskennassa ei ole chat-muotoilua. Käytä sitä dokumentin tai promptin osan mittaamiseen ja messages-muotoa pyynnön mittaamiseen.

Muuntaaksesi määrän kustannukseksi kerro se mallin syötehinnalla per 1M tokenia. Mallit ja hinnoittelu

Rajat

Raja Arvo Sen yli
Kentän text pituus 4,000,000 tavua (UTF-8) 413 viestillä text too long
Pyynnön runko 32 MiB 413
Pyyntöä kohti Yksi teksti tai yksi keskustelu Jos haluat laskea useita tekstejä, lähetä yksi pyyntö tekstiä kohti.

Laskentakutsuja ei lasketa mukaan 120 pyynnön minuuttirajaan. Rajat ja saldo

Virheet

Tila Tyyppi Viesti Milloin
400 invalid_request_error tokenize is available for the hosted open models; unknown model: <model> /v1/tokenize kentällä model, joka ei ole hostatun avoimen painon mallin id.
400 invalid_request_error count_tokens is available for the hosted open models; unknown model: <model> /v1/messages/count_tokens kentällä model, joka ei ole hostatun avoimen painon mallin id, tai ilman model-kenttää.
400 invalid_request_error send `text` or `messages` /v1/tokenize ilman text- tai messages-kenttää.
401 authentication_error Missing authentication / Invalid API key Avainta ei lähetetty, tai avain ei kelpaa.
413 invalid_request_error text too long text on pidempi kuin 4,000,000 tavua. Myös yli 32 MiB:n runkoon vastataan 413:lla.
415 invalid_request_error Expected request with `Content-Type: application/json` Pyynnössä ei ole JSON-sisältötyyppiä.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … Pakollinen kenttä puuttuu (model päätepisteessä /v1/tokenize, messages päätepisteessä /v1/messages/count_tokens) tai kentän tyyppi on väärä.
503 api_error token counting is temporarily unavailable for this model Laskentaa ei voida tehdä tälle mallille juuri nyt. Yritä myöhemmin uudelleen.

/v1/tokenize palauttaa virheet OpenAI-muodossa. Päätepisteessä /v1/messages/count_tokens päätepisteen omat virheet (400 mallille, 503) tulevat Anthropic-muodossa, ja 401, 413, 415 ja 422 tulevat OpenAI-muodossa. Lue ensin tilakoodi, sitten error.type ja error.message, jotka ovat mukana molemmissa muodoissa.

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