Un token est la plus petite unité avec laquelle un grand modèle de langage lit et écrit du texte, et c'est aussi l'unité de facturation à l'usage des API. Un modèle ne lit pas directement les caractères chinois ou les mots : il ne connaît que des suites d'identifiants numériques. Le texte saisi est d'abord découpé en tokens par un tokeniseur, converti en identifiants puis envoyé au modèle, et les identifiants de sortie sont reconvertis en texte. Selon OpenAI, en anglais, un token vaut environ quatre caractères, soit à peu près trois quarts de mot, et 100 tokens correspondent à environ 75 mots anglais. Une fois cette unité comprise, les discussions sur la longueur du contexte et sur les factures partagent enfin une mesure commune.
Comment les tokens sont produits
Les tokeniseurs utilisent des méthodes statistiques comme l'encodage par paires d'octets : les mots courants occupent un seul token, les mots rares ou longs sont découpés en plusieurs, et la ponctuation, les espaces et les chiffres peuvent chacun former un token. OpenAI a publié son propre tokeniseur, tiktoken, en open source, ce qui permet de compter soi-même les tokens d'un passage. À noter : les modèles utilisent des tokeniseurs différents, donc une même phrase peut compter un nombre de tokens différent selon le modèle. En chinois, un caractère courant occupe généralement un à deux tokens, tandis que le code, les adresses web et les longues suites de chiffres se découpent plus finement : un texte chinois et un texte anglais de même longueur ne coûtent donc pas pareil.
Un token n'est ni un caractère ni un mot
Les factures distinguent généralement trois catégories. Les tokens d'entrée sont tout ce que vous envoyez : votre question, les documents collés, l'historique de la conversation et les instructions système. Les tokens de sortie sont le texte que le modèle renvoie, et ils coûtent généralement plus cher que ceux d'entrée. Les tokens de raisonnement sont utilisés en interne par les modèles de raisonnement pendant qu'ils réfléchissent ; ils n'apparaissent jamais dans la réponse, mais ils sont facturés au tarif de sortie. Les prix sont généralement indiqués par million de tokens, entrée et sortie séparément. La fenêtre de contexte se mesure aussi en tokens : une fenêtre d'un million de tokens ne signifie pas de la place pour un million de mots. L'historique, les résultats d'outils et les autres contenus occupent de la place, et une fois la fenêtre pleine, il faut couper ou compresser.
Quelques malentendus fréquents
Premièrement, moins de mots ne veut pas dire moins cher : le code et les chiffres sont denses en tokens, et un journal d'erreurs peut contenir bien plus de tokens qu'un texte en prose de même longueur. Deuxièmement, un prix unitaire bas ne garantit pas un total bas : un modèle de raisonnement peut facturer moins par token, mais il réfléchit longuement avant de répondre, et ces tokens de raisonnement peuvent faire dépasser le total d'un modèle plus cher. Troisièmement, beaucoup traitent la fenêtre de contexte comme un entrepôt et y entassent tout, mais plus la fenêtre est grande, plus chaque requête embarque de tokens d'entrée et plus la facture grimpe vite ; élaguer régulièrement les longues conversations est la vraie façon d'économiser.
Les moyens d'économiser sont simples : formuler clairement ses exigences avant de poser la question, pour éviter que le modèle rédige un long brouillon à faire refaire ; résumer les longs documents avant de les coller au lieu de jeter tout le texte ; mettre en cache les instructions répétées ; et passer à un modèle plus petit pour les tâches simples. Les produits de chat par abonnement mensuel ne demandent pas de compter les tokens, puisque la facture est mensuelle. Ce n'est que lorsqu'on paie à l'usage via une API qu'un token se traduit directement en argent. Comprenez d'abord, et ne parlez d'économies qu'ensuite, pour qu'un prix unitaire bas ne puisse pas vous tromper.