OpenAI
Denne siden ble maskinoversatt. Se den opprinnelige engelske artikkelen.

Hva er token, og hvordan teller man dem?

Oppdatert: 10 days ago

Hva er tokener?

Tokener er byggesteinene i teksten som OpenAI-modeller behandler. De kan være så korte som ett enkelt tegn eller så lange som et helt ord, avhengig av språk og kontekst. Mellomrom, tegnsetting og deler av ord bidrar alle til antall tokener. Slik segmenterer API-et teksten din internt før det genererer et svar.

Nyttige tommelfingerregler for engelsk:

  • 1 token ≈ 4 tegn

  • 1 token ≈ ¾ av et ord

  • 100 tokener ≈ 75 ord

  • 1–2 setninger ≈ 30 tokener

  • 1 avsnitt ≈ 100 tokener

  • ~1500 ord ≈ 2048 tokener

Tokenisering varierer etter modell og koding. Bruk Tokenizer-verktøyet eller tiktoken.encoding_for_model(model) for å få nøyaktig antall for målmodellen din.

Eksempler

Her er noen teksteksempler fra virkeligheten med omtrentlige tokentall:

  • Wayne Gretzkys sitat «Du bommer på 100 % av skuddene du ikke tar» = 11 tokener

  • OpenAI Charter = 476 tokener

  • USAs uavhengighetserklæring = 1695 tokener

Hvordan antall tokener beregnes

Når du sender tekst til API-et:

  1. Teksten deles opp i tokener.

  2. Modellen behandler disse tokenene.

  3. Svaret genereres som en sekvens av tokener og konverteres deretter tilbake til tekst.

Tokenbruk spores i flere kategorier:

  • Inndatatokener – tokener i forespørselen din.

  • Utdatatokener – tokener som genereres i svaret.

  • Bufrede tokener – gjenbrukte tokener i samtalehistorikken (faktureres ofte til redusert pris).

  • Resonneringstokener – i enkelte avanserte modeller inkluderes ekstra «tenketrinn» internt før det endelige resultatet produseres.

Disse tallene vises i metadataene for API-svaret ditt og brukes til fakturering og bruksregistrering.

For å utforske tokenisering videre kan du bruke vårt interaktive Tokenizer-verktøy, som lar deg beregne antall tokener og se hvordan tekst deles opp i tokener.

Alternativt, hvis du vil tokenisere tekst programmatisk, kan du bruke Tiktoken som en rask BPE-tokenizer som er spesielt brukt for OpenAI-modeller.

Tokengrenser

Hver modell har en maksimal kombinert tokengrense (inndata + utdata). Nåværende modeller med høy kapasitet støtter opptil hundretusener av tokener i konteksten, selv om praktiske grenser kan variere avhengig av modellversjon og bruksnivå.

Hvis du overskrider grensen, kan du:

  • Forkorte eller omformulere prompter.

  • Dele opp store tekster i mindre deler.

  • Oppsummere eller forhåndsbehandle inndata før du sender dem.

Tokenpriser

API-bruk prises per token og varierer etter modell og om tokenene er inndata, utdata eller bufret. Se OpenAIs prisside for gjeldende priser. Noen resonneringsmodeller kan bruke flere tokener internt, men har som mål å forbedre effektiviteten ved å redusere antallet tokener som trengs per fullførte oppgave.

Utforske tokener

API-et behandler ord i henhold til konteksten deres i korpusdataene. Modeller tar prompten, konverterer inndataene til en liste over tokener, behandler prompten og konverterer de predikerte tokenene tilbake til ordene vi ser i svaret.

Det som for oss kan se ut som to identiske ord, kan genereres som ulike tokener avhengig av hvordan de er strukturert i teksten. Se hvordan API-et genererer tokenverdier for ordet ‘red’ basert på konteksten 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 eksemplet ovenfor inkluderer tokenet «2266» for ‘ red’ et etterfølgende mellomrom (merk at dette er eksempel-token-ID-er for demonstrasjonsformå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 innledende mellomrom og stor forbokstav) er forskjellig fra tokenet «2266» for ‘ 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’ brukes i begynnelsen av en setning, inkluderer ikke det genererte tokenet et innledende mellomrom. Tokenet «7738» er forskjellig fra de to tidligere eksemplene på ordet.

Observasjoner:

Jo mer sannsynlig/vanlig et token er, desto lavere tokennummer får det:

  • Tokenet som genereres for punktumet, er det samme («13») i alle de 3 setningene. Dette er fordi punktumet kontekstuelt brukes ganske likt i hele korpusdataene.

  • Tokenet som genereres for ‘red’, varierer avhengig av plasseringen i setningen:

    • Liten bokstav midt i en setning: ‘ red’ – (token: «2266»)

    • Stor bokstav midt i en setning: ‘ Red’ – (token: «2297»)

    • Stor bokstav i begynnelsen av en setning: ‘Red’ – (token: «7738»)

Var denne artikkelen nyttig?