Article original : What is TOON? How Token-Oriented Object Notation Could Change How AI Sees Data

JSON, ou JavaScript Object Notation, a été popularisé par Douglas Crockford au début des années 2000. Depuis, il n'y a pas eu de retour en arrière. Le JSON est devenu le format d'échange de données standardisé entre les technologies client et serveur.

Le JSON a été conçu pour les humains. Il est lisible, accessible et universel pour que les API consomment des données ou renvoient des réponses. Mais à l'ère moderne de l'IA, un inconvénient du JSON est apparu au grand jour : il est assez verbeux.

Chaque accolade, chaque guillemet et chaque clé répétée consomme des tokens. Si vous passez du temps à créer des applications qui communiquent avec des grands modèles de langage (LLMs), vous savez probablement que les tokens sont la monnaie d'échange des interactions avec les LLM. Plus il y a de tokens, plus votre solution d'IA sera coûteuse.

Désormais, il y a un nouveau venu appelé TOON (Token-Oriented Object Notation). Il promet de permettre aux LLMs de communiquer avec des données structurées de manière plus efficace, intelligente et rentable.

Cet article est le résultat de ma curiosité lors de l'exploration de TOON. Je voulais comprendre pourquoi il est tendance, comment il fonctionne et comment vous pouvez l'utiliser aujourd'hui dans vos projets JavaScript/TypeScript et Python. J'espère que vous trouverez cela aussi passionnant que moi.

Vous pouvez trouver tout le code source utilisé dans cet article dans ce dépôt GitHub.

Table des matières

  1. Qu'est-ce que Toon ?

  2. Pourquoi TOON est-il important maintenant ?

  3. JSON vs TOON - Apprendre par l'exemple

  4. Comment utiliser TOON avec JavaScript / TypeScript

  5. Comment utiliser Toon avec Python ?

  6. Attendez, JSON pourrait encore être préférable (dans de nombreux cas)

  7. L'avenir de TOON

  8. Avant de terminer…

Qu'est-ce que Toon ?

TOON est un nouveau format de sérialisation de données conçu avec un objectif de code :

Réduire le nombre de tokens lors de l'échange de données structurées avec des modèles de langage.

Alors que le JSON utilise une syntaxe verbeuse avec des accolades, des guillemets et des virgules, TOON s'appuie sur un style tabulaire efficace en tokens, qui est beaucoup plus proche de la façon dont les LLMs comprennent naturellement les données structurées.

Faisons une comparaison rapide entre JSON et TOON :

Voici du JSON avec un tableau users qui contient des informations sur deux utilisateurs (deux objets) :

{
  "users": [
    { "id": 1, "name": "Alice", "role": "admin" },
    { "id": 2, "name": "Bob", "role": "user" }
  ]
}

Si vous vouliez représenter les mêmes données en TOON, cela ressemblerait à ceci :

users[2]{id,name,role}:
  1,Alice,admin
  2,Bob,user

Avez-vous remarqué les différences ?

  • Pas de guillemets, d'accolades ou de deux-points dans TOON.

  • Le users[2]{id,name,role}: déclare un tableau de deux objets avec les champs id, name et role.

  • Les lignes ci-dessous sont simplement les lignes de données.

Vous pouvez voir que TOON a visiblement réduit l'utilisation des tokens de 30 à 50 %, selon la forme des données.

Pourquoi TOON est-il important maintenant ?

Les LLMs comme GPT, Gemini et Claude sont des systèmes basés sur les tokens. Chaque mot, symbole ou bloc coûte des tokens en entrée et en sortie. Ainsi, si vous préparez un LLM avec une entrée/sortie de données structurées comme ceci :

{ "products": [ ... 300, "items" ... ] }

Vous pourriez gaspiller des milliers de tokens en guillemets, accolades, deux-points et clés répétées. TOON résout cela en se concentrant sur une représentation compacte mais structurée.

Certains des principaux avantages de TOON sont :

  • 30 à 50 % de tokens en moins pour les ensembles de données uniformes.

  • Il présente moins d'encombrement syntaxique, ce qui facilite le raisonnement des LLMs.

  • Il peut être imbriqué comme nous le faisons avec JSON.

  • Fonctionne bien avec des langages comme Python, Go, Rust et JavaScript.

TOON est un excellent complément au JSON, en particulier pour les projets d'IA, les LLMs et les prompts riches en données. Il ne remplacera peut-être pas entièrement le JSON, mais il convient aux cas d'utilisation où le JSON est considéré comme trop lourd pour l'échange de données.

JSON vs TOON – Apprendre par l'exemple

Maintenant que vous avez une idée de base de ce que fait TOON et pourquoi il est utile, examinons certaines des structures JSON les plus utilisées et leur représentation équivalente en TOON.

1. Un objet simple

Voici comment vous représenteriez un objet avec JSON :

{ "name": "Alice", "age": 30, "city": "Bengaluru" }

Et voici comment cela fonctionne avec TOON :

name: Alice
age: 30
city: Bengaluru

2. Tableau de valeurs

Avec JSON :

{ "colors": ["red", "green", "blue"] }

Avec TOON :

colors[3]: red,green,blue

3. Tableau d'objets

Avec JSON :

{
  "users": [
    { "id": 1, "name": "Alice" },
    { "id": 2, "name": "Bob" }
  ]
}

Avec TOON :

users[2]{id,name}:
  1,Alice
  2,Bob

Ici, users[2]{id,name} représente le schéma, et les lignes qui le suivent contiennent les lignes de données réelles.

Schéma TOON

4. Objets imbriqués

Avec JSON :

{
  "user": {
    "id": 1,
    "name": "Alice",
    "profile": { "age": 30, "city": "Bengaluru" }
  }
}

Avec TOON :

user:
  id: 1
  name: Alice
  profile:
    age: 30
    city: Bengaluru

L'indentation représente l'imbrication. C'est presque comme du YAML, mais c'est toujours structuré.

5. Tableau d'objets avec champs imbriqués

Avec JSON :

{
  "teams": [
    {
      "name": "Team Alpha",
      "members": [
        { "id": 1, "name": "Alice" },
        { "id": 2, "name": "Bob" }
      ]
    }
  ]
}

Avec TOON :

teams[1]:
  - name: Team Alpha
    members[2]{id,name}:
      1,Alice
      2,Bob

C'est toujours parfaitement compréhensible et beaucoup plus petit que le format JSON.

Maintenant que vous en savez un peu plus sur la syntaxe TOON, voyons comment l'utiliser avec différents langages de programmation.

Comment utiliser TOON avec JavaScript / TypeScript

Dans la plupart des cas, TOON n'est pas destiné à être écrit à la main. La plupart des données TOON seront générées automatiquement par un logiciel, ou vous devrez encoder des données existantes (par exemple, des données JSON) au format TOON.

Et il y a une bonne nouvelle – TOON possède déjà un package NPM officiel que vous pouvez utiliser dans votre projet JavaScript/TypeScript pour convertir vos données JSON en TOON et vice versa.

Installez-le à l'aide de la commande suivante :

npm install @toon-format/toon # Ou yarn add, pnpm install, etc

Le moyen le plus simple de créer du code TOON est de convertir du JSON en TOON. Vous pouvez utiliser la méthode encode() du package NPM mentionné ci-dessus :

import { encode } from "@toon-format/toon";

const data = {
  users: [
    { id: 1, name: "Alice", role: "admin" },
    { id: 2, name: "Bob", role: "user" },
  ],
};

const toonString = encode(data);
console.log(toonString);

Sortie :

users[2]{id,name,role}:
  1,Alice,admin
  2,Bob,user

Pour faire l'inverse (TOON => JSON), vous devez utiliser la méthode decode() :

import { decode } from "@toon-format/toon";

const toonString = `
users[2]{id,name,role}:
  1,Alice,admin
  2,Bob,user
`;

const jsonObject = decode(toonString);
console.log(jsonObject);

Sortie :

{
  "users": [
    { "id": 1, "name": "Alice", "role": "admin" },
    { "id": 2, "name": "Bob", "role": "user" }
  ]
}

Vous pouvez consulter ce bac à sable et essayer quelques exemples d'encodage et de décodage.

Comment utiliser Toon avec Python ?

L'utilisation de TOON dans les projets Python est aussi simple qu'avec JavaScript/TypeScript. Il existe des packages Python qui peuvent encoder des données JSON en TOON et les décoder en JSON. Le package python-toon est le plus célèbre ces derniers temps.

Tout d'abord, ouvrez votre terminal et installez le package python-toon :

pip install python-toon

Notez que si vous êtes dans un environnement virtuel, vous devrez d'abord l'activer :

python -m venv venv
source venv/bin/activate
pip install python-toon

C'est tout ! Vous êtes maintenant prêt à utiliser les méthodes pour encoder et décoder vos données vers et depuis TOON. Tout d'abord, encodons des données JSON en TOON en utilisant Python :

from toon import encode

# Un objet channel
channel = {"name": "tapaScript", "age": 2, "type": "education"}
toon_output = encode(channel)
print(toon_output)

Sortie :

name: tapaScript
age: 2
type: education

De même, nous pouvons décoder TOON en JSON :

from toon import decode

toon_string = """
name: tapaScript
age: 2
type: education
"""

python_struct = decode(toon_string)
print(python_struct)

Sortie :

{"name": "tapaScript", "age": 2, "type": "education"}

Attendez, JSON pourrait encore être préférable (dans de nombreux cas)

Soyons clairs : TOON n'est PAS un remplacement universel du JSON. En fait, vous devriez toujours préférer le JSON dans de nombreux cas, par exemple lorsque :

  • Vos données sont profondément imbriquées.

  • Vos données sont irrégulières (par exemple, des formes d'objets variables).

  • Votre application nécessite des validations de schéma strictes ou l'application de types.

  • Cas d'utilisation non liés à l'IA où le JSON se démarque toujours et fait parfaitement son travail.

Une approche hybride peut même mieux fonctionner. Conservez le JSON pour le format d'échange de données de votre application avec les API, mais convertissez-le en TOON lorsqu'il s'agit d'envoyer des données aux LLMs.

L'avenir de TOON

TOON, bien qu'à ses débuts, attire beaucoup l'attention de la communauté des développeurs. Sa traction précoce rend impossible de ne pas en parler.

TOON a déjà été exploré pour :

  • Moins de surcharge de tokens pour les données d'entraînement structurées afin de fine-tuner les LLMs.

  • Échange de données compact dans les Frameworks d'agents.

  • Sérialisation et désérialisation plus rapides des données entre le MCP et les moteurs de workflow d'IA.

  • Avec les API d'IA Serverless, où le coût et la vitesse comptent beaucoup.

Tout comme le JSON a été un standard pour l'échange de données sur le Web, TOON pourrait bientôt être standardisé pour l'échange de données d'IA. Alors la prochaine fois que vous rédigerez un prompt ou que vous transmettrez des données structurées à un modèle d'IA, essayez le format TOON. Vous remarquerez peut-être que le modèle devient plus rapide et moins cher.

Avant de terminer…

C'est tout ! J'espère que vous avez trouvé cet article instructif.

Restons connectés :

À bientôt pour mon prochain article. D'ici là, prenez soin de vous et continuez à apprendre.