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 的规范驱动实现。