TOON:为大型语言模型(LLM)节省高达60% Token成本的新一代数据格式

TOON是什么?

TOON,全称为“Token-Oriented Object Notation”,是一种紧凑且人类可读的数据格式。它被专门设计用于向大型语言模型(LLM)传递结构化数据,其核心目标是在保证数据结构清晰的同时,最大限度地减少Token的使用量。TOON并非旨在完全取代JSON,而是作为LLM输入场景下的高效替代方案。它巧妙地融合了YAML的缩进式结构和CSV的表格化数据排列方式,特别适合处理包含多个字段且结构统一的对象数组。

toon的原理图

TOON的主要功能?

TOON通过一系列设计来实现其高效的Token利用率,其主要功能和特点包括:

  • 极致的Token效率: 这是TOON最核心的优势。通过省略JSON中常见的花括号、方括号和大多数引号,它通常能比等效的JSON数据减少30-60%的Token消耗。在一些基准测试中,其Token节省率甚至接近60%。
  • 简约的语法: TOON移除了大量冗余的标点符号,仅在必要时使用引号,使得整体格式非常简洁,同时也增强了可读性。
  • 缩进式结构: 借鉴自YAML,TOON使用缩进来表示数据的层级关系,这不仅减少了符号,也让数据结构一目了然。
  • 表格化数组: 在处理对象数组时,TOON允许只声明一次键(keys),后续的数据行则以类似CSV的格式排列,从而避免了在每一行中重复书写键名。
  • LLM友好的设计: TOON支持显式声明数组长度(例如 items[3])和字段列表,这为模型验证输出提供了明确的“护栏”,有助于提升数据处理的准确性。

如何使用TOON?

TOON的设计理念是作为程序中的JSON(或其他结构化数据)与LLM输入之间的转换层。开发者可以在自己的应用程序中继续使用常规的数据格式,在需要将数据发送给LLM时,再将其转换为TOON格式。

具体使用方式通常依赖于不同语言的实现库。以官方的TypeScript实现和社区贡献的Python、PHP库为例,基本步骤如下:

  1. 安装相应的库: 例如,在Python项目中使用pip install python-toon进行安装。
  2. 调用转换函数: 使用库提供的encode或类似函数,将程序中的对象或数组转换为TOON格式的字符串。
  3. 集成到LLM调用中: 将生成的TOON字符串放入发送给LLM的Prompt中。通常建议将其包裹在代码块中,以明确告知模型这是一个结构化数据块。

例如,一个JSON对象数组:

[
  {
   "id": 1, 
   "name": "Apple"
  },
  {
   "id": 2, 
   "name": "Banana"
  }
]

可以被转换为更紧凑的TOON格式:

items[2]{id,name}: 
  1,Apple 
  2,Banana

TOON的开源地址

GitHub开源地址:https://github.com/johannschopplich/toon

TOON的应用场景

  • 大规模数据处理: 当需要向LLM发送大量结构化数据(如数据库查询结果、API响应、日志文件等)进行分析、总结或转换时,使用TOON可以大幅降低API调用成本。
  • 上下文窗口优化: 在复杂的Agent任务或需要大量上下文(Few-shot learning)的场景中,每一寸上下文窗口都非常宝贵。TOON能够用更少的Token承载更多的信息,从而为更长的指令或更丰富的示例腾出空间。
  • RAG(检索增强生成): 在RAG流程中,从向量数据库检索出的文档片段或数据块需要注入到Prompt中。将这些结构化信息转换为TOON格式,可以在不牺牲信息量的前提下,有效压缩上下文长度。
  • 前端与AI交互: 在Web应用中,将前端收集的复杂表单数据或用户行为数据发送给LLM进行处理时,TOON可以减少网络负载和API费用。
© 版权声明

相关文章