TOON - Token-Oriented Object Notation
TOON (Token-Oriented Object Notation) est un format de sérialisation compact, lisible par l'homme et conscient du schéma, conçu spécifiquement pour les prompts LLM. Il permet de réduire significativement le nombre de tokens utilisés tout en restant lisible.
Qu'est-ce que TOON ?
TOON est une alternative compacte à JSON qui :
- Réduit les tokens : Jusqu'à 70% de tokens en moins par rapport à JSON
- Reste lisible : Format lisible par l'homme
- Conscient du schéma : Le schéma est intégré dans le format
- Optimisé pour les LLM : Conçu spécifiquement pour les prompts d'IA
Format de base
TOON utilise une syntaxe compacte où le schéma est défini dans l'en-tête :
users[2]{id,name,role}:
1,Alice,admin
2,Bob,user
Au lieu de JSON :
{
"users": [
{ "id": 1, "name": "Alice", "role": "admin" },
{ "id": 2, "name": "Bob", "role": "user" }
]
}
Exemple interactif
Essayez de convertir du JSON en TOON :
Convertisseur JSON vers TOON
Avantages de TOON
Réduction des tokens
TOON peut réduire jusqu'à 70% le nombre de tokens par rapport à JSON, ce qui est crucial pour les prompts LLM où chaque token compte.
Lisibilité
Même s'il est compact, TOON reste lisible par l'homme, ce qui facilite le débogage et la maintenance.
Optimisé pour les LLM
TOON est conçu spécifiquement pour être utilisé avec les LLM. Le format est auto-documenté et les modèles comprennent naturellement la structure.
Utilisation avec les LLM
Pour utiliser TOON avec les LLM, il est recommandé de :
- Montrer le format plutôt que de le décrire
- Utiliser des blocs de code avec la syntaxe
```toon - Montrer le template d'en-tête quand on demande aux modèles de générer du TOON
Exemple de prompt
Voici un exemple de données au format TOON :
users[2]{id,name,role}:
1,Alice,admin
2,Bob,user
Génère maintenant une liste de 3 produits au format TOON avec les champs : id, name, price, category
Utilisation avec des agents
TOON est particulièrement adapté pour les systèmes d'agents qui communiquent avec des LLM. Le diagramme suivant illustre le flux d'utilisation :
Avantages pour les agents
- Réduction des coûts : Moins de tokens = coûts d'API réduits
- Latence améliorée : Moins de données à transmettre = réponses plus rapides
- Meilleure compréhension : Le format auto-documenté aide le LLM à mieux comprendre la structure
- Parsing simplifié : Les bibliothèques TOON facilitent la conversion bidirectionnelle
Exemple de workflow agent
import { encode, decode } from '@toon-format/toon';
// Agent collecte des données
const userData = {
users: [
{ id: 1, name: 'Alice', role: 'admin' },
{ id: 2, name: 'Bob', role: 'user' }
]
};
// Conversion en TOON pour le prompt
const toonData = encode(userData);
const prompt = `Voici les utilisateurs au format TOON:\n\`\`\`toon\n${toonData}\n\`\`\`\nAnalyse-les et génère un rapport.`;
// LLM répond en TOON
const llmResponse = `products[2]{id,name,price}:
1,Laptop,999
2,Mouse,29`;
// Agent parse la réponse
const products = decode(llmResponse);
console.log(products); // { products: [{ id: 1, name: 'Laptop', price: 999 }, ...] }
Installation et utilisation
CLI (sans installation)
# Convertir JSON en TOON
npx @toon-format/cli input.json -o output.toon
# Depuis stdin
echo '{"name": "Ada", "role": "dev"}' | npx @toon-format/cli
Bibliothèque TypeScript
npm install @toon-format/toon
import { encode } from '@toon-format/toon'
const data = {
users: [
{ id: 1, name: 'Alice', role: 'admin' },
{ id: 2, name: 'Bob', role: 'user' }
]
}
console.log(encode(data))
// users[2]{id,name,role}:
// 1,Alice,admin
// 2,Bob,user
Cas d'usage
TOON est particulièrement utile pour :
- Prompts LLM : Réduire les coûts de tokens
- Données structurées : Transmettre des données complexes de manière compacte
- APIs : Réponses plus légères
- Stockage : Format compact pour les données
Ressources
Conclusion
TOON est un format innovant qui combine compacité et lisibilité, parfait pour les interactions avec les LLM. Il permet de réduire significativement les coûts de tokens tout en gardant un format lisible et maintenable.