Hvad er tokens?
Tokens er tekstens byggesten, som OpenAI-modeller behandler. De kan være så korte som et enkelt tegn eller så lange som et helt ord, afhængigt af sprog og kontekst. Mellemrum, tegnsætning og dele af ord bidrager alle til tokenantallet. Sådan opdeler API'et internt din tekst, før der genereres et svar.
Nyttige tommelfingerregler for engelsk:
1 token ≈ 4 tegn
1 token ≈ ¾ af et ord
100 tokens ≈ 75 ord
1-2 sætninger ≈ 30 tokens
1 afsnit ≈ 100 tokens
~1.500 ord ≈ 2.048 tokens
Tokenisering varierer efter model og kodning. Brug Tokenizer-værktøjet eller tiktoken.encoding_for_model(model) for at få det præcise antal for din målmodel.
Eksempler
Her er nogle teksteksempler fra den virkelige verden med deres omtrentlige tokenantal:
Wayne Gretzkys citat „Du misser 100 % af de skud, du ikke tager“ = 11 tokens
OpenAI-charteret = 476 tokens
USA's uafhængighedserklæring = 1.695 tokens
Sådan beregnes tokenantal
Når du sender tekst til API'et:
Teksten opdeles i tokens.
Modellen behandler disse tokens.
Svaret genereres som en sekvens af tokens og konverteres derefter tilbage til tekst.
Tokenforbrug spores i flere kategorier:
Inputtokens – tokens i din anmodning.
Outputtokens – tokens, der genereres i svaret.
Cachede tokens – genbrugte tokens i samtalehistorikken (ofte faktureret til en reduceret pris).
Ræsonneringstokens – i nogle avancerede modeller medtages ekstra „tænketrin“ internt, før det endelige output produceres.
Disse antal vises i metadataene for dit API-svar og bruges til fakturering og forbrugssporing.
Hvis du vil udforske tokenisering yderligere, kan du bruge vores interaktive Tokenizer-værktøj, som giver dig mulighed for at beregne antallet af tokens og se, hvordan tekst opdeles i tokens.
Alternativt kan du, hvis du vil tokenisere tekst programmatisk, bruge Tiktoken som en hurtig BPE-tokenizer, der specifikt bruges til OpenAI-modeller.
Tokengrænser
Hver model har en maksimal samlet tokengrænse (input + output). Nuværende modeller med høj kapacitet understøtter op til hundredtusindvis af tokens i kontekst, selvom praktiske grænser kan variere afhængigt af modelversionen og dit forbrugsniveau.
Hvis du overskrider grænsen, kan du:
Forkorte eller omformulere prompts.
Opdele stor tekst i mindre bidder.
Opsummere eller forbehandle input, før du sender dem.
Tokenpriser
API-forbrug prissættes pr. token og varierer efter model, og efter om tokens er input, output eller cachede. Se OpenAI's prisside for aktuelle priser. Nogle ræsonneringsmodeller kan bruge flere tokens internt, men sigter mod at forbedre effektiviteten ved at reducere antallet af tokens, der kræves pr. fuldført opgave.
Udforskning af tokens
API'et behandler ord ud fra deres kontekst i korpusdataene. Modeller tager prompten, konverterer inputtet til en liste over tokens, behandler prompten og konverterer de forudsagte tokens tilbage til de ord, vi ser i svaret.
Det, der for os kan se ud som to identiske ord, kan genereres som forskellige tokens afhængigt af, hvordan de er struktureret i teksten. Overvej, hvordan API'et genererer tokenværdier for ordet ‘red’ ud fra dets kontekst i teksten:
I det første eksempel ovenfor indeholder tokenet „2266“ for ‘ red’ et efterstillet mellemrum (bemærk, at dette er eksempel-token-id'er til demonstrationsformål).
Tokenet „2296“ for ‘ Red’ (med et indledende mellemrum og begyndende med et stort bogstav) er forskelligt fra tokenet „2266“ for ‘ red’ med et lille bogstav.
Når ‘Red’ bruges i begyndelsen af en sætning, indeholder det genererede token ikke et indledende mellemrum. Tokenet „7738“ er forskelligt fra de to tidligere eksempler på ordet.
Observationer:
Jo mere sandsynlig/hyppig en token er, desto lavere er det tokennummer, den tildeles:
Tokenet, der genereres for punktummet, er det samme („13“) i alle 3 sætninger. Det skyldes, at punktummet kontekstuelt bruges stort set på samme måde i hele korpusdataene.
Tokenet, der genereres for ‘red’, varierer afhængigt af dets placering i sætningen:
Lille bogstav midt i en sætning: ‘ red’ - (token: „2266“)
Stort bogstav midt i en sætning: ‘ Red’ - (token: „2297“)
Stort bogstav i begyndelsen af en sætning: ‘Red’ - (token: „7738“)
