

TOON (Token-Oriented Object Notation) 是一种专为大型语言模型 (LLM) 设计的数据表示格式,其核心目的是减少输入/输出数据中的 Token 数量,从而降低成本和提高处理效率。
1. 什么是 TOON?
|
|
|
|
|---|---|---|
| 全称 |
|
|
| 本质 |
|
Token 密度更高
|
| 目标 |
|
|
2. TOON 的工作原理 (如何省 Token)
LLM 的分词器 (Tokenizer) 会将输入文本拆分为 Token。JSON 中大量的引号 (")、逗号 (,)、冒号 (:) 和大括号 ({}) 等结构性符号,都会被计为单独的 Token,造成浪费。
TOON 通过以下方式精简结构:
-
• 移除冗余符号: 避免使用引号包裹字符串、避免使用逗号分隔键值对或列表项。 -
• 基于缩进/空格: 利用缩进和空格来表示数据层级和分隔字段,类似 YAML。 -
• 表格化数组: 将数组中的对象结构进行扁平化,字段名仅定义一次,数据按行对齐。
3. TOON 格式示例与使用
以下通过一个包含多个用户档案的列表,对比 JSON 和 TOON 的格式差异:
🔸 原始 JSON 格式 (Token 冗余)
{
"users": [
{"name": "小明", "age": 25, "city": "北京"},
{"name": "小红", "age": 30, "city": "上海"},
{"name": "小刚", "age": 28, "city": "广州"}
]
}
分析: 大量的引号、逗号和重复的键名 ("name", "age", "city") 都会被计入 Token。
🔹 优化后的 TOON 格式 (Token 高效)
users[3]{
name age city
小明 25 北京
小红 30 上海
小刚 28 广州
}
分析:
-
1. users[3]:直接声明数组名和长度。 -
2. {...}:表示对象集合的开始。 -
3. name age city:字段名(Keys)只定义一次。 -
4. 下方数据:按行对齐,字段值之间用空格分隔,无需引号或逗号。
4. 应用场景
TOON 主要应用于以下需要大量数据输入/输出的 AI 交互场景:
-
• Prompt 工程: 在给 LLM 提供上下文或示例时,用 TOON 传递数据结构,减少 Prompt 长度。 -
• AI 结构化输出: 强制 LLM 以 TOON 格式输出数据,保证简洁和高效。 -
• 批量数据处理: 如处理用户列表、产品目录、日志文件等。
如何使用:
开发者可以使用现有的 TOON 库(如 Python/Java 社区提供的工具)将传统的 JSON 格式数据转换为 TOON 格式,然后将其作为输入提交给 LLM。


