OpenAI
Deze pagina is automatisch vertaald. Bekijk het oorspronkelijke Engelstalige artikel.

Wat zijn tokens en hoe tel je ze?

Bijgewerkt: 4 days ago

Wat zijn tokens?

Tokens zijn de bouwstenen van tekst die OpenAI-modellen verwerken. Ze kunnen zo kort zijn als één teken of zo lang als een heel woord, afhankelijk van de taal en context. Spaties, leestekens en delen van woorden tellen allemaal mee voor het aantal tokens. Zo segmenteert de API intern je tekst voordat er een antwoord wordt gegenereerd.

Handige vuistregels voor het Engels:

  • 1 token ≈ 4 tekens

  • 1 token ≈ ¾ van een woord

  • 100 tokens ≈ 75 woorden

  • 1–2 zinnen ≈ 30 tokens

  • 1 alinea ≈ 100 tokens

  • ~1.500 woorden ≈ 2.048 tokens

Tokenisatie verschilt per model en codering. Gebruik de Tokenizer-tool of tiktoken.encoding_for_model(model) om het exacte aantal voor je doelmodel te krijgen.

Voorbeelden

Hier zijn enkele praktijkvoorbeelden van tekst met hun geschatte aantal tokens:

  • Wayne Gretzky’s citaat “Je mist 100% van de schoten die je niet neemt” = 11 tokens

  • Het OpenAI-handvest = 476 tokens

  • De Amerikaanse Onafhankelijkheidsverklaring = 1.695 tokens

Hoe aantallen tokens worden berekend

Wanneer je tekst naar de API stuurt:

  1. De tekst wordt opgesplitst in tokens.

  2. Het model verwerkt deze tokens.

  3. Het antwoord wordt gegenereerd als een reeks tokens en daarna weer omgezet naar tekst.

Tokengebruik wordt bijgehouden in verschillende categorieën:

  • Invoertokens – tokens in je aanvraag.

  • Uitvoertokens – tokens die in het antwoord worden gegenereerd.

  • Gecachte tokens – hergebruikte tokens in de gespreksgeschiedenis (vaak tegen een lager tarief gefactureerd).

  • Redeneringstokens – in sommige geavanceerde modellen worden intern extra “denk-stappen” opgenomen voordat de uiteindelijke uitvoer wordt geproduceerd.

Deze aantallen verschijnen in de metadata van je API-antwoord en worden gebruikt voor facturering en gebruiksregistratie.

Om tokenisatie verder te verkennen, kun je onze interactieve Tokenizer-tool gebruiken, waarmee je het aantal tokens kunt berekenen en kunt zien hoe tekst in tokens wordt opgesplitst.

Als alternatief kun je, als je tekst programmatisch wilt tokeniseren, Tiktoken gebruiken als een snelle BPE-tokenizer die specifiek voor OpenAI-modellen wordt gebruikt.

Tokenlimieten

Elk model heeft een maximale gecombineerde tokenlimiet (invoer + uitvoer). Huidige modellen met hoge capaciteit ondersteunen tot honderdduizenden tokens in de context, al kunnen praktische limieten verschillen per modelversie en gebruiksniveau.

Als je de limiet overschrijdt, kun je:

  • Prompts inkorten of anders formuleren.

  • Grote tekst opsplitsen in kleinere stukken.

  • Invoer samenvatten of vooraf verwerken voordat je die verstuurt.

Tokenprijzen

API-gebruik wordt per token geprijsd en varieert per model en naargelang tokens invoer, uitvoer of gecacht zijn. Bekijk de prijspagina van OpenAI voor de huidige tarieven. Sommige redenerende modellen gebruiken intern mogelijk meer tokens, maar zijn bedoeld om de efficiëntie te verbeteren door het aantal tokens te verminderen dat per voltooide taak nodig is.

Tokens verkennen

De API behandelt woorden volgens hun context in de corpusgegevens. Modellen nemen de prompt, zetten de invoer om in een lijst met tokens, verwerken de prompt en zetten de voorspelde tokens weer om naar de woorden die we in het antwoord zien.

Wat voor ons twee identieke woorden lijken, kan worden gegenereerd als verschillende tokens, afhankelijk van hoe ze in de tekst zijn gestructureerd. Bekijk hoe de API tokenwaarden genereert voor het woord ‘red’ op basis van de context ervan in de tekst:

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

In het eerste voorbeeld hierboven bevat het token “2266” voor ‘ red’ een voorafgaande spatie (Let op: dit zijn voorbeeldtoken-ID’s ter demonstratie).

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

Het token “2296” voor ‘ Red’ (met een voorafgaande spatie en beginnend met een hoofdletter) verschilt van het token “2266” voor ‘ red’ met een kleine letter.

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

Wanneer ‘Red’ aan het begin van een zin wordt gebruikt, bevat het gegenereerde token geen voorafgaande spatie. Het token “7738” verschilt van de vorige twee voorbeelden van het woord.

Observaties:

Hoe waarschijnlijker/frequenter een token is, hoe lager het tokennummer dat eraan wordt toegewezen:

  • Het token dat voor de punt wordt gegenereerd, is hetzelfde (“13”) in alle 3 zinnen. Dit komt doordat de punt contextueel op vrijwel dezelfde manier wordt gebruikt in de corpusgegevens.

  • Het token dat voor ‘red’ wordt gegenereerd, varieert afhankelijk van de positie ervan in de zin:

    • Kleine letter midden in een zin: ‘ red’ - (token: “2266”)

    • Hoofdletter midden in een zin: ‘ Red’ - (token: “2297”)

    • Hoofdletter aan het begin van een zin: ‘Red’ - (token: “7738”)

Was dit artikel nuttig?