TOON : Du JSON deux fois plus léger pour les prompts de LLM
Présentation de TOON : La notation d'objets orientée jeton (Token-Oriented Object Notation) pour les LLM
Dans le paysage en évolution rapide des grands modèles linguistiques (LLM), l'efficacité est primordiale. À mesure que les fenêtres contextuelles s'agrandissent et que les données d'entrée deviennent plus volumineuses, le coût associé à l'utilisation des jetons peut augmenter. C'est là qu'intervient la Notation d'Objets Orientée Jeton (TOON), offrant une solution intelligente et open-source pour réduire considérablement la consommation de jetons lors de la transmission de données structurées aux LLM.
Développé par Johann Schopplich, TOON est un format de données innovant, spécifiquement conçu pour les entrées de LLM, et non comme un remplacement JSON à usage général pour les API ou le stockage. Sa force principale réside dans sa capacité à transmettre la même information que JSON avec une réduction de 30 à 60 % des jetons, ce qui permet des interactions LLM plus économiques et plus rapides.
Pourquoi TOON est important pour les invites LLM
Le format JSON traditionnel, bien qu'omniprésent pour l'échange de données, peut être verbeux et gourmand en jetons, en particulier pour les structures de données répétitives. TOON résout ce problème en tirant parti d'une syntaxe minimale qui supprime la ponctuation redondante (accolades, crochets, la plupart des guillemets) et adopte une structure basée sur l'indentation similaire à YAML. Son « point fort » concerne les tableaux uniformes d'objets – des données avec plusieurs champs par ligne et des structures cohérentes entre les éléments. Pour ces scénarios, TOON utilise un format tabulaire, optimisé pour l'efficacité des jetons.
Considérons un exemple simple :
JSON :
{
"users": [
{ "id": 1, "name": "Alice", "role": "admin" },
{ "id": 2, "name": "Bob", "role": "user" }
]
}
TOON :
tsers[2]{id,name,role}:
1,Alice,admin
2,Bob,user
La différence de nombre de jetons, en particulier pour les grands ensembles de données, est substantielle.
Caractéristiques clés et avantages
- Efficace en jetons : Réalisez jusqu'à 60 % d'économies de jetons par rapport à JSON, optimisant les coûts et la longueur des invites.
- Garde-fous adaptés aux LLM : Les longueurs explicites et les déclarations de champs simplifient l'analyse et la validation des données pour les LLM.
- Syntaxe minimale : Réduit la ponctuation répétitive, ce qui améliore la lisibilité pour les humains et l'efficacité du tokenizer.
- Structure basée sur l'indentation : Familier aux utilisateurs de YAML, utilisant les espaces pour les objekts imbriqués.
- Tableaux tabulaires : Déclare les clés une seule fois et diffuse les données sous forme de lignes, idéal pour les ensembles de données uniformes.
- Critères de performance : TOON démontre constamment une efficacité de jetons supérieure sur divers ensembles de données réels tels que les dépôts GitHub, l'analyse quotidienne et les commandes de commerce électronique, souvent avec une précision de récupération comparable ou même meilleure sur différents modèles LLM (gpt-5-nano, claude-haiku, gemini-2.5-flash, grok-4-fast).
Comment TOON fonctionne et comment l'utiliser
TOON est conçu comme une couche de traduction : vous pouvez utiliser JSON de manière programmatique et le convertir en TOON pour l'entrée LLM. Il est disponible en tant que package npm (@byjohann/toon) et comprend une interface de ligne de commande (CLI) pour une conversion facile entre les formats JSON et TOON.
L'installation est simple :
npm install @byjohann/toon
# ou avec pnpm/yarn
Encodage des données :
import { encode } from '@byjohann/toon'
const data = {
users: [
{ id: 1, name: 'Alice', role: 'admin' },
{ id: 2, name: 'Bob', role: 'user' }
]
}
console.log(encode(data))
// Produit la sortie TOON affichée ci-dessus
Vous pouvez également personnaliser la sortie avec des options telles que delimiter (virgule, tabulation ou pipe) et lengthMarker pour des économies de jetons et une clarté accrues, en particulier lors de la communication d'un formatage spécifique au LLM.
TOON dans les invites LLM
Lorsque vous envoyez du TOON aux LLM, la meilleure pratique consiste à montrer le format plutôt que de simplement le décrire. Enveloppez vos données encodées dans un bloc de code (par exemple, ```toon). Les longueurs de tableau explicites et les en-têtes de champs dans TOON aident les modèles à suivre la structure, réduisant considérablement les erreurs d'analyse.
Pour générer du TOON à l'aide de LLM, soyez explicite dans vos instructions d'invite. Définissez le format d'en-tête et les règles attendus (par exemple, indentation de 2 espaces, pas d'espaces de fin de ligne). Cela guide le LLM à générer une sortie TOON conforme et efficace.
Considérations et limitations
Bien que TOON excelle avec les tableaux uniformes d'objets, son efficacité peut diminuer pour les données profondément imbriquées ou très non uniformes, où JSON pourrait encore être plus approprié. Il est crucial de comprendre que les économies de jetons peuvent varier selon le LLM et le tokenizer spécifiques utilisés (les benchmarks sont basés sur un tokenizer de type GPT).
Cependant, pour un grand nombre de tâches d'ingénierie d'invites LLM – en particulier celles impliquant de grands ensembles de données cohérents – TOON fournit un outil puissant et open-source pour améliorer l'efficacité et optimiser les interactions LLM. Avec le soutien croissant de la communauté et des implémentations dans diverses langues, TOON devient rapidement un atout précieux pour les développeurs d'IA.
Explorez le dépôt GitHub de TOON pour approfondir ses spécifications, ses benchmarks et son développement continu.