Le principe

Un modèle de langage ne lit ni des lettres ni des mots. Avant de lui parvenir, le texte passe par un tokenizer qui le découpe en unités : les tokens. Ce découpage n'a rien d'arbitraire, il est appris sur un corpus par un algorithme comme le BPE (byte pair encoding), qui fusionne les suites de caractères les plus fréquentes jusqu'à en faire des tokens à part entière. Résultat : un mot courant comme « chat » tient dans un seul token, un mot rare ou technique se retrouve coupé en plusieurs morceaux.

En français, compter un token pour trois ou quatre caractères donne un bon ordre de grandeur. Une page de texte tourne autour de 600 tokens, un roman en fait plusieurs centaines de milliers.

Pourquoi ça compte

Le prix des API se calcule au million de tokens, avec un tarif différent entre ce qu'on envoie (le prompt) et ce que le modèle génère (la réponse), les seconds coûtant plusieurs fois plus cher. La fenêtre de contexte, c'est-à-dire la quantité de texte qu'un modèle peut prendre en compte d'un coup, se mesure aussi en tokens. La vitesse de génération, elle, s'exprime en tokens par seconde.

Compter les tokens d'un texte

La bibliothèque tiktoken d'OpenAI permet de voir le découpage sur ses propres textes :

import tiktoken

encodeur = tiktoken.encoding_for_model("gpt-4o")
texte = "Les modèles de langage découpent le texte en tokens."
tokens = encodeur.encode(texte)

print(len(tokens))                    # le nombre de tokens de la phrase
print(encodeur.decode([tokens[0]]))   # le premier token : « Les »

Chaque famille de modèles a son propre tokenizer : le même texte ne donne pas le même nombre de tokens chez OpenAI, Anthropic ou Mistral.