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

Tokens begrijpen en tellen

Lees hoe invoer-, uitvoer-, gecachte en redeneringstokens van invloed zijn op API-gebruik, modellimieten en kosten.

Bijgewerkt: 2 days ago

Overzicht

Tokens zijn de eenheden waarmee OpenAI-modellen tekst verwerken. Een token kan een teken, een deel van een woord, een heel woord of een leesteken vertegenwoordigen. Ook spaties beïnvloeden hoe tekst in tokens wordt opgedeeld.

Het aantal tokens is niet hetzelfde als het aantal woorden. Dezelfde tekst kan afhankelijk van het model, de codering en de taal een ander aantal tokens opleveren.

Begrijp hoe tekst wordt omgezet in tokens

Wanneer je tekst naar een model stuurt:

  1. De tekst wordt opgedeeld in tokens.

  2. Het model verwerkt deze tokens.

  3. Het model genereert uitvoertokens. Deze kunnen bestaan uit de tekst die je ontvangt en, bij redenerende modellen, interne redeneringstokens die niet als antwoordtekst worden weergegeven.

Gebruik ruwe schattingen voor Engelse tekst

Met deze schattingen kun je de omvang van Engelse tekst beoordelen:

  • 1 token is ongeveer 4 tekens.

  • 1 token is ongeveer driekwart woord.

  • 100 tokens zijn ongeveer 75 woorden.

Dit zijn schattingen, geen exacte aantallen. De lengte van zinnen en alinea's varieert, en in andere talen kunnen tekens, woorden en tokens zich anders tot elkaar verhouden.

Houd rekening met spaties en hoofdletters

Een woord kan afhankelijk van de spelling, hoofdletters en omringende tekst in verschillende tokens worden opgedeeld.

Zo bevatten rood, Rood en rood niet exact dezelfde tekst: het laatste voorbeeld begint met een spatie. Een codering kan deze verschillend weergeven.

Token-ID's zijn ook afhankelijk van de codering. Ga er niet van uit dat een voorbeeld van een token-ID voor elk model geldt.

Maak onderscheid tussen invoer- en uitvoertokens

CategorieBeschrijving
InvoertokensTokens die in een aanvraag aan het model worden verstrekt. Deze worden ook wel prompttokens genoemd.
UitvoertokensTokens die door het model worden gegenereerd. Chat Completions noemt deze voltooiingstokens.
Gecachte invoertokensInvoertokens die via promptcaching opnieuw worden gebruikt. De prijs hiervan kan verschillen van die van niet-gecachete invoertokens.
RedeneringstokensTokens die een redenerend model intern gebruikt voordat het zichtbare antwoord wordt geproduceerd.

Redeneringstokens zijn niet zichtbaar als antwoordtekst, maar tellen mee voor het uitvoergebruik en worden als uitvoertokens in rekening gebracht.

Een kort zichtbaar antwoord kan daardoor meer tokens gebruiken dan de weergegeven tekst doet vermoeden.

Tel tokens voordat je een aanvraag verstuurt

Tel tokens in platte tekst

Gebruik de Tokenizer om te zien hoe tekst in tokens wordt opgedeeld.

Gebruik tiktoken om tokens in platte tekst programmatisch te bepalen. Selecteer de codering voor je doelmodel, bijvoorbeeld met tiktoken.encoding_for_model(model).

Een tokentelling van platte tekst omvat niet noodzakelijk alle tokens in een API-aanvraag. De berichtstructuur, tools, schema's, afbeeldingen en bestanden kunnen van invloed zijn op het totale aantal invoertokens.

Tel de volledige invoer voor Responses

Gebruik voor volledige invoer voor de Responses API de API voor het tellen van invoertokens.

Deze accepteert invoerindelingen van Responses, waaronder berichten, afbeeldingen, bestanden, tools en gesprekken. De telling omvat opmaaktokens voor de aanvraagstructuur, zoals berichtrollen en -grenzen.

Een telling van de invoertokens voorspelt niet hoeveel uitvoertokens het model zal genereren.

Controleer het werkelijke tokengebruik

Bekijk na een aanvraag de gebruiksgegevens. Veldnamen verschillen per endpoint:

  • Chat Completions vermeldt prompt_tokens, completion_tokens en total_tokens.

  • Responses vermeldt input_tokens, output_tokens en total_tokens.

Je kunt de activiteit door de tijd heen ook bekijken in het gebruiksdashboard. Zie voor instructies, waaronder informatie over streaminggebruik: API-gebruik en -kosten bekijken.

Blijf binnen de modellimieten

Raadpleeg de documentatie van je model voor het contextvenster en de maximale uitvoer. Deze limieten kunnen per model verschillen.

Het contextvenster beperkt het aantal tokens dat een model in een aanvraag kan verwerken. Modellen hebben ook een uitvoerlimiet. Houd bij redenerende modellen ruimte vrij voor redeneringstokens en het zichtbare antwoord.

Als je invoer te groot is, kun je:

  • De prompt inkorten of anders formuleren.

  • Onnodige of herhaalde context verwijderen.

  • Grote invoer in kleinere delen opsplitsen.

  • Tekst samenvatten of voorbewerken voordat je deze verstuurt.

Gebruik de instelling voor uitvoertokens die je endpoint en model ondersteunen. Chat Completions gebruikt max_completion_tokens; Responses gebruikt max_output_tokens.

Deze limieten voor de aanvraaggrootte staan los van API-snelheidslimieten en maandelijkse gebruiks- of bestedingslimieten. Raadpleeg de modeldocumentatie voor het model dat je gebruikt.

Begrijp de prijzen van tokens

Bij API-prijzen op basis van tokens hangt het tarief af van het model en de tokencategorie. Invoertokens, gecachte invoertokens en uitvoertokens kunnen verschillende prijzen hebben. Voor andere API-mogelijkheden kunnen andere factureringseenheden gelden.

Bekijk de pagina met API-prijzen voor de huidige tarieven.

Houd bij het vergelijken van modellen rekening met het totale aantal tokens en de kosten om je taak uit te voeren. Een lagere prijs per miljoen tokens leidt niet noodzakelijk tot lagere totale kosten: modellen kunnen dezelfde tekst anders tokeniseren en verschillende hoeveelheden uitvoer of redenering genereren.

Test representatieve taken in plaats van alleen de zichtbare antwoordlengte te vergelijken.

Houd rekening met meerdere voltooiingen

Als een endpoint en model het genereren van meerdere voltooiingen ondersteunen, gebruiken die extra voltooiingen ook tokens.

Als je n bij Chat Completions hoger dan 1 instelt, worden meerdere keuzemogelijkheden gegenereerd. De gegenereerde tokens voor al die keuzemogelijkheden worden in rekening gebracht.

Bij de verouderde Completions API kan best_of kandidaten genereren die niet allemaal worden geretourneerd. best_of = 3 kan bijvoorbeeld voor alle kandidaten samen maximaal 3 × max_tokens voltooiingstokens genereren.

Deze parameters zijn specifiek voor het endpoint. Ga er niet van uit dat een andere API of een ander model n of best_of ondersteunt.

Was dit artikel nuttig?