Was ist TOON?

TOON
JSON
Optimierung

Wir waren alle dort. Sie entwickeln eine Eingabeaufforderung für ein Large Language Model (LLM) und müssen strukturierte Daten übergeben. Sie greifen nach JSON. Es ist schließlich der Industriestandard. Aber während Sie zusehen, wie sich Ihr Kontextfenster mit endlosen geschweiften Klammern, wiederholten Tasten und Anführungszeichen um einfache Ganzzahlen füllt, beginnen Sie sich zu fragen: Gibt es einen besseren Weg?

YAML bietet Lesbarkeit, leidet jedoch unter Mehrdeutigkeit. CSV ist dicht, weist jedoch keine Hierarchie auf.

Geben Sie TOON ein.

TOON ist ein Datenserialisierungsformat, das für Entwickler wie ein Hauch frischer Luft und für KI-Modelle wie eine Muttersprache wirkt. Es schließt die Lücke zwischen menschlicher Lesbarkeit und maschineller Effizienz. Lassen Sie uns heute tief in die Syntax und Mechanik von TOON eintauchen, um zu verstehen, warum es sich schnell zu einem Favoriten für den hocheffizienten Datenaustausch entwickelt.

Die Philosophie: JSON-Semantik, YAML-Ästhetik

Im Kern nutzt TOON das exakt gleiche Datenmodell wie JSON. Wenn Sie es in JSON darstellen können – Grundelemente (Strings, Zahlen, Boolesche Werte, Null), Objekte und Arrays –, können Sie es in TOON darstellen. Allerdings ist die Darstellung radikal anders.

TOON verzichtet auf die Zahnspange. Es verwendet Einrückungen zur Darstellung der Hierarchie, ähnlich wie YAML. Ein einfaches Objekt sieht sauber und zugänglich aus:

Im Gegensatz zu YAML ist TOON jedoch streng hinsichtlich der Typen. Es gibt keine Vermutung, ob „no“ „false“ oder die Zeichenfolge „no“ bedeutet. In TOON erfordern Zeichenfolgen nur dann Anführungszeichen, wenn dies unbedingt erforderlich ist – etwa wenn sie Sonderzeichen enthalten, Zahlen ähneln oder leer sind. Wenn Sie „Nachricht: Hallo Welt“ eingeben, erhalten Sie eine Zeichenfolge. Wenn Sie „count: 42“ eingeben, erhalten Sie eine Zahl.

„yaml ID: 123 Name: Ada aktiv: wahr „

Die Macht von Arrays: Länge und Tabellen

Was TOON wirklich von der Masse abhebt, ist die Handhabung von Arrays. Dies ist das „Killer-Feature“ für die Token-Optimierung.

Jedes Array in TOON gibt seine Länge explizit in Klammern an, wie „items[3]“. Für einen Menschen mag das überflüssig erscheinen, aber für einen LLM ist es eine Supermacht. Dadurch kann das Modell die Struktur sofort validieren und Kürzungen erkennen. Wenn der Stream nach zwei Elementen unterbrochen wird, der Header aber drei verspricht, weiß der Parser, dass etwas schief gelaufen ist.

TOON bietet effektiv drei Möglichkeiten zur Handhabung von Arrays und wählt automatisch die effizienteste aus:

  1. Inline-Primitive: Bei einfachen Listen mit Zahlen oder Zeichenfolgen hält TOON sie kompakt. tags[3]: admin,ops,dev
  1. Standardlisten: Für gemischte Typen wird eine Listensyntax mit Bindestrich verwendet, die YAML ähnelt.
  1. Tabellarische Objekte: Das ist der Game-Changer.

Wenn Sie ein Array von Objekten haben, die dieselben Schlüssel haben – ein sehr häufiges Muster in Datenbankeinträgen – wechselt TOON zu einem Tabellenformat. Anstatt die Schlüssel für jede einzelne Zeile zu wiederholen, werden die Schlüssel einmal im Header deklariert.

Im obigen Beispiel teilt uns „users[2]{id,name,role}:“ mit, dass wir zwei Zeilen haben, und definiert das Schema. Die Daten folgen in einer CSV-ähnlichen Struktur. Dadurch entfällt der massive Token-Aufwand, der durch die Wiederholung von „id“:“, „name“: und „role“: für jeden Benutzer entsteht.

„yaml Benutzer[2]{id,name,role}: 1, Alice Admin, Admin 2,Bob Smith,Benutzer „

Trennzeichen und Token-Effizienz

Möglicherweise fällt Ihnen in den obigen Beispielen die Verwendung von Kommas auf. TOON unterstützt tatsächlich drei Trennzeichen: Kommas (Standard), Tabulatoren und Pipes (|).

Warum ist das wichtig? Tokenisierung.

In vielen LLM-Tokenizern kann ein Komma gefolgt von einem Anführungszeichen in mehrere Token aufgeteilt werden. Ein Tabulatorzeichen lässt sich jedoch oft sehr sauber tokenisieren. Mit TOON können Sie Trennzeichen auf der Array-Header-Ebene wechseln. Wenn Sie ein Tabulatortrennzeichen verwenden, müssen Sie Zeichenfolgen, die Leerzeichen enthalten, häufig nicht einmal in Anführungszeichen setzen, wodurch Ihre Daten weiter komprimiert werden.

Das Format ist intelligent genug, um mit „Kollisionen“ umzugehen. Wenn Ihre Daten das aktive Trennzeichen enthalten, zitiert TOON einfach diesen spezifischen Wert.

„yaml Artikel[2]{SKU,Name,Menge}: A1,Widget-Name,2 B2,Gadget-Name,1 „

Schlüsselfaltung: Die Kurve abflachen

Ein weiteres Merkmal, das den Fokus von TOON auf Effizienz unterstreicht, ist Key Folding. Tief verschachtelte Objekte führen normalerweise zu einer „Treppe“ von Einrückungen, die horizontalen Platz und Token verschlingt.

Wenn Sie eine tiefe Hierarchie haben, in der Zwischenobjekte keine Geschwister haben, kann TOON sie in einem Punktnotationspfad zusammenfassen.

Anstatt zu schreiben:

Sie können schreiben:

„yaml Daten: Metadaten: Elemente[2]: a,b „

Diese seit Spezifikation v1.5 verfügbare Funktion reduziert die Zeilenanzahl und Einrückungstokens erheblich. Wichtig ist, dass dies vollständig reversibel ist. Wenn Sie die Daten bei aktivierter Pfaderweiterung dekodieren, wird die tiefe Objekthierarchie perfekt rekonstruiert.

„yaml data.metadata.items[2]: a,b „

Strenge und Sicherheit

Trotz seines prägnanten Aussehens geht TOON nicht locker mit Daten um. Für das Zitieren und Escapen gelten strenge Regeln.

Zeichenfolgen bleiben im Allgemeinen ohne Anführungszeichen, was sich positiv auf die Lesbarkeit auswirkt. Allerdings erzwingt TOON die Angabe von Angeboten für Randfälle, um die Datenintegrität sicherzustellen. Wenn eine Zeichenfolge wie eine Zahl aussieht (z. B. „05“ oder „1e-6“), wird sie in Anführungszeichen gesetzt, um zu verhindern, dass sie als Zahl geparst wird. Wenn eine Zeichenfolge ein reserviertes Wort wie „true“ oder „null“ ist, wird sie in Anführungszeichen gesetzt.

Darüber hinaus normalisiert TOON Zahlen. Es gibt kanonische Dezimalformen aus – keine wissenschaftliche Notation oder nachgestellte Nullen in der Ausgabe – und sorgt so für Konsistenz. Es verarbeitet sogar „BigInt“ sicher; Wenn eine Zahl den sicheren Ganzzahlbereich überschreitet, wird sie als Zeichenfolge serialisiert, um Präzisionsverluste während des Transports zu verhindern.

Stammformen

Während die meisten von uns mit Root-Objekten arbeiten, ist TOON flexibel. Ein Dokument muss nicht mit einem Schlüssel-Wert-Paar beginnen. Es unterstützt Root-Arrays (beginnend sofort mit „[N]:“) oder sogar ein einzelnes Root-Primitive. Diese Parität mit JSON bedeutet, dass Sie TOON in fast jede Pipeline austauschen können, in der JSON derzeit verwendet wird, vorausgesetzt, Sie haben den Parser am anderen Ende.

Abschließende Gedanken

TOON ist nicht nur „ein anderes Format“. Es handelt sich um ein Spezialwerkzeug für eine Zeit, in der Daten von probabilistischen Modellen ebenso häufig genutzt werden wie von deterministischem Code. Durch die Kombination des starren Datenmodells von JSON mit der Dichte von CSV und der Lesbarkeit von YAML wird das spezifische Problem der Kontextfensteroptimierung gelöst, ohne die Typsicherheit zu beeinträchtigen.

Wenn Sie Agenten erstellen, Modelle verfeinern oder es einfach satt haben, durch endlose schließende Klammern zu scrollen, ist es an der Zeit, einen Blick auf TOON zu werfen.