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:
Texten delas upp i token.
Modellen bearbetar dessa token.
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:
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).
Token ”2296” för ” Red” (med ett inledande blanksteg och stor begynnelsebokstav) skiljer sig från token ”2266” för ” red” med liten bokstav.
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”)
