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:
Teksten opdeles i tokens.
Modellen behandler disse tokens.
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:
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).
Tokenet »2296« for ‘ Red’ (med et indledende mellemrum og stort begyndelsesbogstav) er forskelligt fra tokenet »2266« for ‘ red’ med lille begyndelsesbogstav.
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«)
