So verwenden Sie TOON mit LLMs

LLM
Schnelles Engineering

Wenn Sie jemals ein großes JSON-Array in ChatGPT oder Claude eingefügt haben, haben Sie wahrscheinlich das Gefühl gespürt, dass sich das Kontextfenster schließt. JSON ist fantastisch für Web-APIs, aber für Large Language Models (LLMs) ist es unglaublich verschwenderisch. Das Wiederholen von Feldnamen wie „id“:, „name“: und „timestamp“: für jeden einzelnen Datensatz ist nicht nur überflüssig; Es verbrennt Token, die echtes Geld und wertvollen Kontextraum kosten.

Hier glänzt TOON (Table Object Notation). Es ist nicht nur ein Datenformat; Es handelt sich um eine Strategie zur Optimierung von LLM-Interaktionen. Durch die Beseitigung der Syntaxsteuer von JSON und das Hinzufügen expliziter Strukturheader können Sie mit TOON mehr Daten an Ihre Modelle übergeben und im Gegenzug zuverlässigere strukturierte Ausgaben erhalten.

Die Token-Ökonomie von TOON

Warum sich die Mühe machen, das Format zu wechseln? Die Mathematik ist einfach. In einem Standard-JSON-Array von Objekten wird das Schema für jede Zeile wiederholt. Wenn Sie eine Liste mit 50 Benutzern haben, zahlen Sie 50 Mal für die Feldnamen.

TOON beseitigt diese Redundanz, indem das Schema einmal im Header deklariert wird. Die Daten folgen in einem dichten, optimierten Format. In der Praxis führt dies typischerweise zu einer 30–60 %igen Reduzierung der Token-Nutzung für einheitliche Arrays im Vergleich zu formatiertem JSON. Wenn Sie es mit riesigen Kontextfenstern oder umfangreichen API-Aufrufen zu tun haben, führt diese Effizienz direkt zu niedrigeren Rechnungen und geringeren Latenzzeiten.

Senden von Daten: Die Regel „Zeigen, nicht erzählen“.

Wenn Sie ein LLM zur Datenanalyse benötigen, ist Ihre schnelle Strategie entscheidend. Anfänger schreiben oft lange Absätze, in denen sie das Datenformat erklären. Mit TOON müssen Sie das nicht tun.

LLMs sind Pattern-Matching-Engines. Sie verstehen TOON intuitiv, weil es wie eine Mischung aus YAML und CSV aussieht – Formate, die sie während des Trainings milliardenfach gesehen haben.

Um Daten zu senden, packen Sie sie einfach in einen abgeschirmten Codeblock. Sie können es als „Toon“ bezeichnen, aber selbst wenn der Syntax-Highlighter des Modells dies nicht offiziell unterstützt, versteht das Modell die Struktur sofort.

Eingabebeispiel

Anstatt das Schema zu beschreiben, geben Sie einfach den Block an:

Der Header „users[3]{id,name,role,lastLogin}“ teilt dem Modell alles mit, was es wissen muss: den Entitätstyp, die Anzahl (3 Zeilen) und die Reihenfolge der Felder. Die Einrückung regelt die Hierarchie. Diese „selbstdokumentierende“ Natur gibt Ihnen die Möglichkeit, sich auf die eigentliche Logikaufgabe zu konzentrieren und nicht auf Syntaxanalyseanweisungen.

„md Hier ist das Benutzeraktivitätsprotokoll. Die Daten liegen im TOON-Format vor (Einzug mit zwei Leerzeichen, explizite Header).

Benutzer[3]{id,name,role,lastLogin}: 1,Alice,admin,2025-01-15T10:30:00Z 2,Bob,Benutzer,2025-01-14T15:22:00Z 3,Charlie,Benutzer,2025-01-13T09:45:00Z

Aufgabe: Analysieren Sie die Protokolle und ermitteln Sie, welche Benutzer sich in den letzten 24 Stunden nicht angemeldet haben. „

Zuverlässige Ergebnisse generieren

Es ist einfach, einen LLM zum Lesen von Daten zu bewegen; Der schwierige Teil besteht darin, gültige strukturierte Daten zu generieren. Models lieben es zu halluzinieren, JSON abzuschneiden oder das Schließen von geschweiften Klammern zu vergessen.

TOON fügt durch seine Header-Syntax, insbesondere die Anzahl „[N]“, eine zusätzliche Sicherheitsebene hinzu. Wenn Sie ein Modell auffordern, TOON auszugeben, fordern Sie es auf, sich auf eine Struktur festzulegen, bevor es die Daten generiert.

Aufforderung zur Generierung

Um die besten Ergebnisse zu erzielen, stellen Sie das erwartete Headerformat bereit und weisen Sie das Modell an, die Zeilen zu füllen.

Indem Sie das Modell auffordern, „[N]“ zu berechnen, erzwingen Sie einen „Gedankenketten“-Prozess, bei dem das Modell die Ausgabegröße planen muss. Diese scheinbar kleine Einschränkung verringert die Wahrscheinlichkeit erheblich, dass das Modell mitten in einer Liste abbricht.

„md Aufgabe: Eine Liste aktiver Benutzer mit der Rolle „Benutzer“ zurückgeben. Format: Verwenden Sie TOON. Legen Sie den Wert [N] in der Kopfzeile so fest, dass er genau der Anzahl der von Ihnen generierten Zeilen entspricht.

Erwartetes Format: Benutzer[N]{id,name,role,lastLogin}: „

Validierung im strikten Modus

Wenn Sie die Antwort vom LLM erhalten, sollten Sie ihr nicht einfach vertrauen. Hier wird der strikte Modus der TOON-Bibliothek zu einer Supermacht für Produktionsanwendungen.

Wenn Sie die TypeScript-Bibliothek verwenden, überprüft die Dekodierung im strikten Modus, ob die generierten Zeilen mit der Header-Anzahl übereinstimmen:

Dadurch können Sie „träge“ Modellausgaben oder Netzwerkkürzungen sofort programmgesteuert abfangen, anstatt fehlerhafte Daten nachgelagert in Ihrer Anwendung zu entdecken.

„Typoskript import { decode } from '@toon-format/toon';

versuche es mit { // Wenn das Modell [5] sagt, aber 4 Zeilen bereitstellt, wird ein Fehler ausgegeben. const data = decode(modelOutput, { strict: true }); console.log('Gültige Daten empfangen:', data); } Catch (Fehler) { console.error('Modellhalluzination oder -kürzung erkannt:', error.message); } „

Erweiterte Optimierung: Der Tab-Trick

Wenn Sie von der Optimierung besessen sind (und in der Welt der LLMs sollten Sie das wahrscheinlich auch sein), können Sie noch mehr Effizienz erzielen, indem Sie Ihre Trennzeichen mit Bedacht wählen.

Kommas sind Standard, aber Tabulatoren („\t“) werden in vielen Tokenizer-Vokabularen oft als ein einzelnes Token dargestellt. Darüber hinaus erscheinen Tabulatoren selten in natürlichen Textfeldern, wodurch die Notwendigkeit von Escape-Zeichen (z. B. das Einschließen von Zeichenfolgen in Anführungszeichen) verringert wird.

Sie können Ihre Daten mithilfe von Tabs kodieren, bevor Sie sie an das Modell senden:

Denken Sie daran, dem Modell in der Eingabeaufforderung Folgendes mitzuteilen: "Daten sind tabulatorgetrennt, TOON." Dadurch entsteht eine hyperkompakte Darstellung, die für das Modell unglaublich einfach zu analysieren und zu generieren ist.

„Typoskript const toonPrompt = encode(data, { delimiter: '\t' }); „

Ein vollständiges Workflow-Beispiel

Schauen wir uns ein reales Szenario an: das Filtern von Systemprotokollen. Sie möchten Rohprotokolle an das Modell senden und eine strukturierte Fehlerliste zurückerhalten.

Die Aufforderung:

Die Modellausgabe:

„md Systemprotokolle im TOON-Format (durch Tabulatoren getrennt):

Ereignisse[4]{id,level,message,timestamp}: 1,Fehler,Verbindungszeitüberschreitung,2025-01-15T10:00:00Z 2,warnen,Langsame Abfrage,2025-01-15T10:05:00Z 3,Info,Benutzeranmeldung,2025-01-15T10:10:00Z 4,Fehler,Datenbankfehler025-01-15T10:15:00Z

Aufgabe: Extrahieren Sie alle Ereignisse mit der Ebene „Fehler“. Geben Sie das Ergebnis als gültiges TOON mit einer aktualisierten Header-Anzahl zurück. „

Das Ergebnis:

„Toon Ereignisse[2]{id,level,message,timestamp}: 1,Fehler,Verbindungszeitüberschreitung,2025-01-15T10:00:00Z 4,Fehler,Datenbankfehler,2025-01-15T10:15:00Z „

Das Modell hat die Liste korrekt gefiltert und, was entscheidend ist, den Header auf „events[2]“ aktualisiert. Durch die Dekodierung dieser Antwort erhalten Sie ein sauberes, typsicheres Array, das für Ihre Anwendungslogik bereit ist.

Zusammenfassung

TOON schließt die Lücke zwischen menschlicher Lesbarkeit und maschineller Effizienz. Es respektiert die Kostenbeschränkungen von LLMs und bietet gleichzeitig die Struktur, die für eine robuste Softwareentwicklung erforderlich ist.

  1. Halten Sie es klein: Verwenden Sie in Ihren Beispielen 2–5 Zeilen. Das Modell wird verallgemeinert.
  1. Seien Sie explizit: Definieren Sie Header klar, damit das Modell das Schema kennt.
  1. Strikte Validierung: Verwenden Sie die Metadaten des Formats, um Generierungsfehler abzufangen.

Durch die Abkehr von JSON für Ihre sofortigen Nutzlasten sparen Sie nicht nur Token, sondern bauen auch eine zuverlässigere KI-Pipeline auf.