Un comptage exact de tokens exige un encodage et un périmètre

Deux compteurs peuvent diverger sans être défectueux. Avant de comparer leurs chiffres, vérifiez l’encodage utilisé et ce qui est réellement compté.

Identifier d’abord l’unité

Les mots servent à lire ; les octets UTF-8 mesurent une représentation du texte. Les tokens dépendent d’un encodage : aucun rapport fixe ne convient à tous les mots ou caractères.

ToolRoof compte le texte littéral avec cl100k_base et indique tokens et octets. L’exactitude concerne cet encodage, pas tous les modèles. Changer de modèle dans votre application ne modifie pas ce compteur.

Le texte visible n’est pas toute la requête

Une requête API peut ajouter rôles des messages, définitions d’outils, fichiers et structure. Compter correctement un paragraphe ne mesure donc pas l’ensemble.

Près d’une limite, utilisez le comptage de requête ou le relevé d’usage approprié du fournisseur. Une marge fixe ne garantit pas de couvrir les éléments manquants.

Références: OpenAI — Plain-text counts versus complete request token counts

Conserver exactement le texte mesuré

Espaces, fins de ligne et représentation des caractères appartiennent à l’entrée. Gardez la version mesurée pour reproduire la comparaison.

Le compteur ne normalise pas Unicode et ne remplace pas les chiffres. Sa limite est de 20000 unités UTF-16, pas nécessairement autant de caractères visibles ou de tokens. Un texte mal formé est rejeté plutôt que modifié en silence.

Exemple : une apparence proche, une représentation différente

Avec cl100k_base, hello world occupe 11 octets UTF-8 et 2 tokens. Taille en octets et nombre de tokens sont des mesures différentes.

é sous la forme U+00E9 donne 1 token et 2 octets ; e suivi de U+0301 lui ressemble, mais donne 2 tokens et 3 octets. Ce n’est pas un classement des langues : cela montre pourquoi texte exact et encodage doivent accompagner la mesure.

Références