Forthcome A document company, retour à l’accueil

Laboratoire · Annexe technique

Annexe : mesure du coût en tokens

Méthode et fichiers de la mesure citée dans l’essai « De la balise au token ». Ce sont des ordres de grandeur sur quelques échantillons, non une propriété générale des formats.

Cette annexe accompagne l’essai De la balise au token, partie 3.

Méthode

  • Tokenizer : o200k_base, celui des modèles GPT-4o d’OpenAI, via la bibliothèque JavaScript gpt-tokenizer, version 2.9. Le script donne aussi, pour comparaison, cl100k_base (GPT-4 et GPT-3.5). D’autres modèles découpent le texte autrement : les chiffres ne s’y transposent pas tels quels.
  • Date : 28 octobre 2026.
  • Échantillons textuels : le résumé et la partie 1 de l’essai, en Markdown, en HTML et dans le XML d’un fichier Word (word/document.xml, produit avec la bibliothèque python-docx, sans mise en forme riche). Le XML Word est mesuré avec et sans son en-tête de déclarations d’espaces de noms, qui pèse à lui seul environ 350 tokens.
  • Échantillons de facture : une même facture fictive de trois lignes, construite pour l’occasion. La version UBL est un sous-ensemble simplifié de l’EN 16931, sans ventilation de TVA ni adresses. Elle est déclinée en JSON reprenant les mêmes noms d’éléments, puis réduite à ses seules données métier, en JSON et en XML à attributs courts. Les versions métier ne portent pas toute l’information de la version UBL : c’est l’objet de la comparaison. Chaque fichier existe en version indentée et compacte. La syntaxe CII n’a pas été mesurée.

Résultats

Fichier Octets o200k_base cl100k_base
texte.md 3 441 781 878
texte.html 3 600 893 984
texte-document.xml 5 543 1 555 1 650
texte-document-sans-entete.xml 4 305 1 204 1 299
facture-ubl-indentee.xml 3 325 1 089 1 101
facture-ubl-compacte.xml 2 811 917 929
facture-json-memes-noms-indente.json 2 620 771 783
facture-json-memes-noms-compact.json 1 571 444 449
facture-json-metier-indente.json 717 284 292
facture-json-metier-compact.json 499 185 190
facture-xml-metier-indente.xml 513 192 201
facture-xml-metier-compact.xml 494 184 188

Lecture

  • À mise en forme égale (versions compactes), la facture UBL coûte environ deux fois plus de tokens que le même contenu en JSON aux mêmes noms : la répétition des noms dans les balises fermantes en est la cause principale.
  • Réduite à ses données métier, la facture coûte autant en JSON qu’en XML.
  • L’indentation seule ajoute de 20 % (UBL) à 75 % (JSON aux noms UBL).
  • Le nombre d’octets et le nombre de tokens ne varient pas dans les mêmes proportions : la compacité en octets n’est pas une mesure du coût pour un modèle, et ni l’une ni l’autre ne mesure la qualité du traitement.

Reproduire

Avec Node.js (testé avec la version 22), dans un dossier contenant les fichiers ci-dessus et le script mesure.cjs :

npm install gpt-tokenizer@2.9.0
node mesure.cjs texte.md facture-ubl-compacte.xml

Le script affiche, pour chaque fichier, sa taille en octets et son nombre de tokens selon o200k_base et cl100k_base. L’échantillon HTML est publié sous le nom texte.html.txt pour être affiché comme du texte ; son contenu est celui qui a été mesuré.