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 提供結構化數據的 Token 成本。它解決了標準 JSON 和 YAML 的冗長問題,在處理模型上下文窗口中的大規模數據集時,這些格式可能會導致成本高昂且效率低下。

工作原理

TOON 作為 JSON 的無損轉換層。它結合使用基於縮進的結構(類似於 YAML)和表格形式(類似於 CSV)來更緊湊地表示數據。它會根據數據的形狀自動選擇最有效的形式:

  • Inline Form: 在單行中表示原始陣列。
  • Tabular Form: 在標頭中聲明一次欄位列表,並為統一的物件陣列逐行串流輸出列值。
  • Keyed Tabular: 用於包含統一物件的物件(例如配置映射),其中每一列都帶有自己的鍵。
  • List Form: 用於非統一或混合類型數據的退路方案。

它還包含顯式的長度標記 [N] 和欄位列表 {fields},為 LLM 提供清晰的結構化護欄。

適用對象

構建需要將大量結構化數據(如紀錄、日誌或配置)傳遞到提示詞中的 LLM 應用程式的開發人員,特別是那些希望在保持高模型性能的同時,降低 API 成本和 Token 使用量的人員。

亮點

  • Token 效率: 基準測試顯示,在保持或提高檢索準確度的同時,其 Token 使用量最高可比標準 JSON 少 42.6%。
  • 無損往返: 對與 JSON 相同的數據模型進行確定性編碼。
  • LLM 友好型護欄: 顯式的長度和欄位列表有助於模型更可靠地解析和驗證數據。
  • 多語言支援: 提供 TypeScript、Python、Go、Rust 和.NET 的規範驅動實作。