toon-format/toon
🎒 Token-Oriented Object Notation (TOON) – compact, human-readable serialization of JSON data for LLM prompts. TypeScript SDK, CLI, benchmarks.
解決する課題
TOON (Token-Oriented Object Notation) は、検索精度を犠牲にすることなく、LLMに構造化データを提供するためのトークンコストを削減します。標準的なJSONやYAMLの冗長性に対処し、モデルのコンテキストウィンドウ内で大規模なデータセットを扱う際のコストと非効率性を解消します。
仕組み
TOONは、JSONのロスレスな変換レイヤーとして機能します。インデントベースの構造(YAMLのような)と表形式(CSVのような)を組み合わせて、データをよりコンパクトに表現します。データの形状に基づいて、最も効率的な形式を自動的に選択します:
- Inline Form: プリミティブな配列を単一行で表現します。
- Tabular Form: ヘッダーにフィールドリストを一度宣言し、均一なオブジェクトの配列に対して行ごとの値をストリームとして出力します。
- Keyed Tabular: 各行が独自のキーを持つ、均一なオブジェクトを含むオブジェクト(例:config maps)に使用されます。
- List Form: 非均一または混合型のデータに対するフォールバックです。
また、明示的な長さマーカー [N] とフィールドリスト {fields} を含めることで、LLMに明確な構造的ガードレールを提供します。
対象者
大量の構造化データ(レコード、ログ、設定など)をプロンプトに渡す必要があるLLMアプリケーションを開発している開発者、特に、高いモデルパフォーマンスを維持しながらAPIコストとトークン使用量を削減したいと考えている方に適しています。
ハイライト
- トークン効率: ベンチマークでは、検索精度を維持または向上させつつ、標準的なJSONよりも最大42.6%少ないトークンを使用できることが示されています。
- ロスレスな往復: JSONと同じデータモデルの決定論的なエンコーディング。
- LLMフレンドリーなガードレール: 明示的な長さとフィールドリストにより、モデルがより確実にデータを解析・検証できるようにします。
- マルチ言語サポート: TypeScript、Python、Go、Rust、.NETで仕様に基づいた実装が利用可能です。