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

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

Opdateret: 2 days ago

Hvad er tokens?

Tokens er de tekstbyggesten, som OpenAI-modeller behandler. De kan være helt ned til ét tegn eller så lange som et helt ord, afhængigt af sproget og konteksten. Mellemrum, tegnsætning og dele af ord tæller alle med i antallet af tokens. Sådan opdeler API'en internt din tekst, før den genererer et svar.

Nyttige tommelfingerregler for engelsk:

  • 1 token ≈ 4 tegn

  • 1 token ≈ ¾ 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 nøjagtige antal for din valgte model.

Eksempler

Her er nogle virkelige teksteksempler med deres omtrentlige antal tokens:

  • 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 antallet af tokens

Når du sender tekst til API'en:

  1. Teksten opdeles i tokens.

  2. Modellen behandler disse tokens.

  3. Svaret genereres som en sekvens af tokens og konverteres derefter tilbage til tekst.

Tokenforbruget registreres i flere kategorier:

  • Inputtokens – tokens i din anmodning.

  • Outputtokens – tokens, der genereres i svaret.

  • Cachelagrede tokens – genbrugte tokens fra samtalehistorikken (afregnes ofte til en lavere pris).

  • Tokens til ræsonnering – i visse avancerede modeller medtages ekstra »tænketrin« internt, før det endelige output genereres.

Disse antal vises i metadataene for dit API-svar og bruges til fakturering og registrering af forbrug.

Hvis du vil udforske tokenisering yderligere, kan du bruge vores interaktive Tokenizer-værktøj, som beregner antallet af tokens og viser, hvordan tekst opdeles i tokens.

Hvis du i stedet vil tokenisere tekst via kode, kan du bruge Tiktoken, som er en hurtig BPE-tokenizer udviklet specifikt til OpenAI-modeller.

Tokengrænser

Hver model har en øvre grænse for det samlede antal tokens (input + output). De nuværende modeller med høj kapacitet understøtter op til hundredtusindvis af tokens i konteksten, men de praktiske grænser kan variere efter modelversion og dit brugsniveau.

Hvis du overskrider grænsen, kan du:

  • Forkorte eller omformulere prompts.

  • Opdele lange tekster i mindre dele.

  • Opsummere eller forbehandle input, før du sender dem.

Priser for tokens

Prisen for API-brug beregnes pr. token og varierer efter model, og om der er tale om inputtokens, outputtokens eller cachelagrede tokens. Se de aktuelle priser på OpenAI's prisside. Nogle modeller til ræsonnering kan bruge flere tokens internt, men søger at forbedre effektiviteten ved at reducere antallet af tokens, der kræves pr. fuldført opgave.

Tokens er ikke standardiseret på tværs af AI-modeller eller udbydere. Forskellige modeller kan behandle eller generere den samme tekst med forskellige antal tokens. Derfor betyder en lavere annonceret pris pr. million tokens ikke nødvendigvis lavere samlede omkostninger.

Længden af det synlige svar fortæller heller ikke hele historien. Nogle modeller bruger tokens til ræsonnering internt, før de genererer et svar. Derfor betyder et længere synligt svar ikke nødvendigvis, at en model samlet set har brugt flere tokens.

Når du sammenligner modeller, bør du både se på det samlede antal nødvendige tokens og prisen pr. vellykket resultat. Benchmarks kan være et nyttigt udgangspunkt, men du får det bedste billede af modellernes faktiske pris og ydeevne ved at teste dem på dine egne brugsscenarier.

Udforsk tokens

API'en 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.

To ord, der ser ens ud for os, kan blive genereret som forskellige tokens, afhængigt af hvordan de indgår i teksten. Se, hvordan API'en 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 efterfølgende mellemrum (Bemærk, at disse token-id'er kun er eksempler 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 stort begyndelsesbogstav) er forskelligt fra tokenet »2266« for ‘ red’ med lille begyndelsesbogstav.

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’ står i begyndelsen af en sætning, indeholder det genererede token ikke et indledende mellemrum. Tokenet »7738« er forskelligt fra de to foregående eksempler på ordet.

Observationer:

Jo mere sandsynligt eller hyppigt et token er, desto lavere er det tildelte tokennummer:

  • Det token, der genereres for punktummet, er det samme (»13«) i alle tre sætninger. Det skyldes, at punktummet kontekstuelt bruges stort set ens i alle korpusdataene.

  • Det token, der genereres for ‘red’, varierer alt efter ordets placering i sætningen:

    • Lille begyndelsesbogstav midt i en sætning: ‘ red’ – (token: »2266«)

    • Stort begyndelsesbogstav midt i en sætning: ‘ Red’ – (token: »2297«)

    • Stort begyndelsesbogstav først i en sætning: ‘Red’ – (token: »7738«)

Var denne artikel nyttig?