OpenAI
Den här sidan har maskinöversatts. Visa den ursprungliga engelska artikeln.

Vad är token och hur räknar man dem?

Uppdaterades: 2 days ago

Vad är token?

Token är de byggstenar i text som OpenAI-modeller bearbetar. De kan vara allt från ett enda tecken till ett helt ord, beroende på språk och sammanhang. Blanksteg, skiljetecken och delar av ord räknas alla in i antalet token. Så här delar API:et internt upp din text innan ett svar genereras.

Praktiska tumregler för engelska:

  • 1 token ≈ 4 tecken

  • 1 token ≈ ¾ ord

  • 100 token ≈ 75 ord

  • 1–2 meningar ≈ 30 token

  • 1 stycke ≈ 100 token

  • ~1 500 ord ≈ 2 048 token

Tokenisering varierar beroende på modell och kodning. Använd verktyget Tokenizer eller tiktoken.encoding_for_model(model) för att få det exakta antalet för målmodellen.

Exempel

Här är några verkliga textexempel med ungefärligt antal token:

  • Wayne Gretzkys citat ”Du missar 100 % av skotten du inte tar” = 11 token

  • OpenAI-stadgan = 476 token

  • USA:s självständighetsförklaring = 1 695 token

Så beräknas antalet token

När du skickar text till API:et:

  1. Texten delas upp i token.

  2. Modellen bearbetar dessa token.

  3. Svaret genereras som en sekvens av token och omvandlas sedan tillbaka till text.

Tokenanvändningen registreras i flera kategorier:

  • Indatatoken – token i din begäran.

  • Utdatatoken – token som genereras i svaret.

  • Cachelagrade token – återanvända token från konversationshistoriken (debiteras ofta till ett lägre pris).

  • Resonemangstoken – i vissa avancerade modeller ingår extra ”tankesteg” internt innan det slutliga resultatet skapas.

Dessa antal visas i metadata för API-svaret och används för debitering och användningsspårning.

Om du vill utforska tokenisering närmare kan du använda vårt interaktiva Tokenizer-verktyg, där du kan beräkna antalet token och se hur text delas upp i token.

Alternativt kan du använda Tiktoken om du vill tokenisera text programmatiskt. Det är en snabb BPE-tokeniserare som används specifikt för OpenAI-modeller.

Tokengränser

Varje modell har en maximal sammanlagd tokengräns (indata + utdata). Dagens modeller med hög kapacitet stöder kontexter på upp till hundratusentals token, men de praktiska gränserna kan variera beroende på modellversion och användningsnivå.

Om du överskrider gränsen kan du:

  • Korta ned eller formulera om prompter.

  • Dela upp stora texter i mindre delar.

  • Sammanfatta eller förbehandla indata innan du skickar dem.

Tokenpriser

API-användning prissätts per token och varierar beroende på modell och om det gäller indata-, utdata- eller cachelagrade token. Aktuella priser finns på OpenAI:s prissida. Vissa resonemangsmodeller kan använda fler token internt men strävar efter att öka effektiviteten genom att minska antalet token som krävs per slutförd uppgift.

Token är inte standardiserade mellan olika AI-modeller eller leverantörer. Olika modeller kan bearbeta eller generera samma text med olika antal token. Ett lägre annonserat pris per miljon token innebär därför inte nödvändigtvis en lägre totalkostnad.

Det synliga svarets längd ger inte heller hela bilden. Vissa modeller använder resonemangstoken internt innan de skapar ett svar. Ett längre synligt svar betyder därför inte nödvändigtvis att modellen använde fler token totalt.

När du jämför modeller bör du ta hänsyn till det totala antalet token som krävs och kostnaden per lyckat resultat. Riktmärken kan vara en användbar utgångspunkt, men det bästa sättet att förstå modellernas faktiska kostnad och prestanda är att testa dem med dina egna användningsfall.

Utforska token

API:et behandlar ord utifrån deras sammanhang i korpusdata. Modeller tar emot prompten, omvandlar indata till en lista med token, bearbetar prompten och omvandlar sedan förutsagda token tillbaka till de ord som visas i svaret.

Två ord som ser identiska ut för oss kan genereras som olika token beroende på hur de är strukturerade i texten. Se hur API:et genererar tokenvärden för ordet ”red” utifrån dess sammanhang i texten:

Sentence split into color-coded tokens with Text selected over Token IDs
Token ID output as a list of integers with the Token IDs tab selected

I det första exemplet ovan innehåller token ”2266” för ” red” ett efterföljande blanksteg (observera att dessa token-ID:n endast är exempel i demonstrationssyfte).

Sentence split into color-coded token blocks: My favorite color is Red.
Tokenizer output with Token IDs selected and a list of numeric token IDs

Token ”2296” för ” Red” (med ett inledande blanksteg och stor begynnelsebokstav) skiljer sig från token ”2266” för ” red” med liten bokstav.

Tokenizer example splitting “Red is my favorite color.” into color-coded tokens
Tokenizer output with Token IDs selected and a list of token ID numbers

När ”Red” används i början av en mening innehåller det genererade tokenet inget inledande blanksteg. Token ”7738” skiljer sig från de två föregående exemplen på ordet.

Observationer:

Ju mer sannolikt eller vanligt ett token är, desto lägre tokennummer tilldelas det:

  • Det token som genereras för punkten är detsamma (”13”) i alla tre meningarna. Det beror på att punkten används på ungefär samma sätt i hela korpusen, sett till sammanhanget.

  • Det token som genereras för ”red” varierar beroende på ordets placering i meningen:

    • Liten bokstav mitt i en mening: ” red” – (token: ”2266”)

    • Stor bokstav mitt i en mening: ” Red” – (token: ”2297”)

    • Stor bokstav i början av en mening: ”Red” – (token: ”7738”)

Var den här artikeln till hjälp?