- Token-Oriented Object Notation
- Ein Serialisierungsformat, das entwickelt wurde, um den Token-Verbrauch bei Eingaben an LLMs zu reduzieren
- Stellt JSON-Daten verlustfrei dar und erreicht zugleich Token-Effizienz und Lesbarkeit
- Eine für homogene Objekt-Arrays optimierte Struktur, die wiederholte Schlüssel entfernt und so 30–60 % Token-Einsparung bietet
- Ein Hybridformat, das die einrückungsbasierte Struktur von YAML mit dem Tabellenformat von CSV kombiniert
- Für tief verschachtelte Strukturen oder inhomogene Daten ist JSON effizienter
- Enthält explizite Strukturinformationen, sodass LLMs Daten stabil parsen und validieren können
- Verbessert die Strukturerkennung durch explizite Angabe von Array-Längen (
[N]) und Felddefinitionen ({id,name,role})
- Kompakte Syntax mit einem minimalen Syntaxdesign, das unnötige Klammern, Anführungszeichen und Satzzeichen entfernt
- Unterstützt hierarchische Darstellung auf Basis von Einrückungen sowie CSV-ähnliche zeilenbasierte Datenströme
- Unterstützt über ein CLI-Tool die bidirektionale Konvertierung zwischen JSON und TOON
- Bietet Optionen wie automatische Formaterkennung, Festlegung von Trennzeichen (
,, \t, |) und Ausgabe von Token-Einsparungsstatistiken
- API-Aufbau
- Führt mit
encode() die JSON-Serialisierung und mit decode() die Deserialisierung aus
- Optional können Einrückung, Trennzeichen und Längenmarker (
#) festgelegt werden
- Benchmark-Ergebnisse: gegenüber JSON durchschnittlich 21–60 % Token-Einsparung, 73,9 % Genauigkeit bei LLM-Abfragen erreicht
- Etwas größer als CSV, verbessert aber durch strukturelle Validierungsfunktionen die Zuverlässigkeit von LLMs
- Formatregeln
- Strings werden nur bei Bedarf in Anführungszeichen gesetzt; bei enthaltenen Trennzeichen erfolgt dies automatisch
- Zahlen, Boolesche Werte, Datumsangaben usw. werden in LLM-freundliche Formen umgewandelt
- Implementierungen für verschiedene Sprachen verfügbar
- Offiziell: Python, Rust (in Entwicklung)
- Community: Go, Java, Swift, C++, .NET, Ruby usw.
3 Kommentare
Ich verwende Function Calling und sollte es einmal testen.
Bei einigen Beispielen heißt es, dass das JSON-Format, wenn man Leerzeichen entfernt, die Tokenzahl deutlich stärker reduziert … Ich bin mir da noch nicht sicher. Ob das wirklich ein Format ist, das sich sinnvoll einsetzen lässt.
Vergleich der Genauigkeit nach Modell
Wenn man nur den Benchmark-Ergebnissen glaubt, scheint es keinen Grund zu geben, es nicht zu verwenden, da der Token-Verbrauch sinkt, ohne dass die Genauigkeit abnimmt.