Pourquoi TOON surpasse les autres formats
Si vous créez des applications LLM, en particulier des systèmes ou des agents de génération augmentée par récupération (RAG) qui consomment de grands ensembles de données, vous menez probablement une guerre constante sur deux fronts : le coût des jetons et les limites des fenêtres contextuelles.
Pendant des années, JSON a été la lingua franca par défaut pour l’échange de données. C’est lisible par l’homme (pour la plupart) et omniprésent. Mais lorsque vous collez un tableau JSON de 500 lignes dans une invite, vous gravez des milliers de jetons sur des noms de champs répétés (""id":, "name":, "email":`) qui n'ont aucune valeur sémantique pour la ligne spécifique.
Entrez TOON. Il s'agit d'un format spécialement conçu pour résoudre le problème du rapport signal/bruit dans les entrées LLM. J'ai plongé dans les derniers benchmarks et les résultats sont surprenants : TOON ne se contente pas d'économiser de l'espace ; cela aide en fait des modèles comme GPT-5-nano et Gemini-2.5-flash à mieux comprendre les données.
Voyons pourquoi TOON bat les poids lourds (JSON, CSV, YAML, XML) et regardons les chiffres bruts.
Le piège de la verbosité : JSON contre TOON
Le plus grand ennemi de l’efficacité des jetons est la répétition de la structure. Examinons un ensemble de données Time-Series Analytics standard. En JSON, chaque point de données transporte le bagage de son schéma.
JSON (standard) Jetons utilisés dans le benchmark : 22 250
C'est beaucoup d'espace perdu. Maintenant, regardez l'équivalent TOON. TOON définit le schéma une fois dans l'en-tête, puis passe à une présentation dense de style CSV pour les valeurs.
TOON Jetons utilisés dans le benchmark : 9 120
Le résultat : Une réduction massive de 59,0 % de l'utilisation des jetons.
En supprimant les clés répétées, TOON vous permet d'insérer plus d'historique dans la fenêtre contextuelle du modèle. Mais surtout, contrairement au CSV, il maintient la connaissance du type et la structure explicite via la définition d'en-tête « metrics[5]{...} ».
Pourquoi ne pas simplement utiliser CSV ?
C’est le contre-argument le plus courant. "Si vous voulez des données plates, utilisez simplement CSV."
Le problème est que les données réelles sont rarement parfaitement plates. CSV se décompose complètement dès que vous avez des structures imbriquées, des listes dans des objets ou des descriptions complexes contenant des virgules et des guillemets.
Dans les tests de référence, en particulier le Mixed-Structure Track (qui inclut les commandes de commerce électronique et les journaux d'événements), le CSV a été entièrement exclu car il ne pouvait pas représenter les données sans aplatissement avec perte.
TOON gère cela avec grâce. Il permet d'imbriquer des objets tout en optimisant les tableaux. Lors d’un test de 100 référentiels GitHub (qui contiennent des descriptions textuelles et des métadonnées mixtes), l’écart d’efficacité était évident :
- JSON : 15 145 jetons
- TOON : 8 745 jetons (42,3 % d'économie)
Même contre JSON Compact (minifié), TOON a quand même réalisé près de 24 % d'économies supplémentaires. Lorsque vous payez par million de jetons, vous obtenez un retour sur investissement immédiat.
Précision : le gagnant surprise
Voici la partie qui m'a surpris. Habituellement, lorsque vous compressez des données, vous perdez en clarté. On pourrait s’attendre à ce que le LLM ait du mal à analyser un format plus dense. Les benchmarks montrent le contraire.
Sur 209 questions de récupération de données testées sur des modèles tels que Claude Haiku, Gemini Flash et GPT-5-nano, TOON a atteint une précision de récupération de 73,9 %, par rapport aux 69,7 % du JSON standard.
Pourquoi? Cela se résume probablement à la Charge Cognitive (ou l'équivalent LLM).
- Moins de bruit : Le modèle n'a pas besoin de s'occuper de milliers de jetons « clés » répétitifs. Les valeurs pertinentes sont plus rapprochées dans le mécanisme d’attention.
- Métadonnées explicites : Les en-têtes TOON incluent explicitement le nombre (
[N]) et les noms de champs.
- Conscience de la structure : Dans les tests portant sur la structure de l'ensemble de données (par exemple, "Combien de lignes y a-t-il ?"), TOON a atteint 88 % de précision, tandis que JSON et XML étaient à la traîne. Le décompte explicite dans l'en-tête TOON (« repositories[100] ») agit comme un indice qui empêche le modèle d'avoir à « compter » les jetons manuellement, ce pour quoi les LLM sont notoirement mauvais.
La fatigue XML et YAML
Il convient de mentionner brièvement les autres prétendants.
XML est le grand perdant ici. Il est verbeux, difficile à lire et coûteux à traiter. Dans les tests de référence, XML utilisait systématiquement le plus grand nombre de jetons (plus de 5 000 pour un ensemble uniforme d'enregistrements d'employés que TOON représentait en ~ 2 700) et avait la précision la plus faible (67,1 %).
YAML fonctionne mieux que XML mais souffre toujours d'une surcharge de jetons par rapport à TOON. Bien que YAML soit idéal pour les fichiers de configuration humaine, sa nature sensible aux espaces et la répétition des touches le rendent sous-optimal pour un contexte de données à volume élevé. Dans le test « Commandes e-commerce », YAML a utilisé environ 14 % de jetons en plus que TOON.
Quand changer ?
Les données sont assez concluantes. Si vous avez affaire à :
- Listes d'objets : Journaux, historiques de transactions, résultats de recherche ou catalogues de produits.
- RAG Pipelines : où vous récupérez des morceaux de données d'une base de données pour les alimenter dans une invite.
- API à volume élevé : Là où la bande passante et la latence sont importantes.
TOON propose un scénario « le meilleur des deux mondes ». Vous obtenez la densité du CSV avec l'intégrité structurelle du JSON.
Dans les tests de référence, GPT-5-nano a atteint une précision stupéfiante de 90,9 % sur les données au format TOON. Cela suggère que les modèles plus récents et plus intelligents sont de plus en plus aptes à analyser ces formats optimisés, ce qui signifie que la « pénalité de lisibilité » liée à l'abandon de JSON est effectivement nulle pour la machine.
Si vous formatez toujours votre contexte RAG en tant que « JSON.stringify(data, null, 2) », vous payez effectivement une « taxe de lisibilité » sur chaque appel d'API. Il est peut-être temps de changer de format.