OpenAI
Denne side er maskinoversat. Se den originale engelske artikel.

Hvad er tokens, og hvordan tæller man dem?

Opdateret: 21 days ago

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:

  1. Teksten opdeles i tokens.

  2. Modellen behandler disse tokens.

  3. 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:

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ørste eksempel ovenfor indeholder tokenet „2266“ for ‘ red’ et efterstillet mellemrum (bemærk, at dette er eksempel-token-id'er til demonstrationsformål).

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

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.

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’ 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“)

Var denne artikel nyttig?