TOON格式规范详解:掌握3.0版本的所有语法规则
TOON(Token-Oriented Object Notation)是一种专为LLM提示词设计的紧凑、人类可读的数据序列化格式。TOON 3.0版本作为最新的稳定规范,提供了完整的语法规则和实现指导。🎯
什么是TOON格式?
TOON格式是一种面向token的对象表示法,专门优化用于大型语言模型提示词中的数据序列化。相比传统JSON格式,TOON能够减少30-60%的token消耗,同时保持更高的检索准确率(TOON 73.9% vs JSON 69.7%)。TOON格式规范为开发者和实现者提供了标准化的语法规则和编码要求。
核心语法要素
对象表示法
TOON使用简洁的键值对表示对象,无需花括号和逗号分隔符:
id: 1
name: Ada
数组语法
TOON提供了多种数组表示方式,包括:
- 基本数组:
tags[3]: foo,bar,baz - 表格数组:
items[2]{id,qty}:后跟表格行数据 - 混合数组:使用连字符表示不同类型的元素
头部语法规范
数组头部采用结构化语法:
key[N<delim?>]{fields}:
其中N表示数组长度,<delim?>可选指定分隔符,{fields}定义表格列名。
严格模式与验证规则
TOON 3.0引入了严格的验证机制,包括:
- 数组长度必须与实际元素数量匹配
- 缩进必须一致(默认2个空格,无制表符)
- 仅允许有效的转义序列:
\\、\"、\n、\r、\t
编码与解码要求
编码器规范
编码器必须遵循以下规则:
- 生成UTF-8编码,LF行结束符
- 使用一致的缩进
- 保留对象键的顺序
- 将数字规范化为非指数十进制形式
解码器规范
解码器需要:
- 根据§6解析数组头部
- 仅使用活动分隔符拆分内联数组和表格行
- 在
strict=true时强制执行严格模式规则
实用语法速查
引用规则总结
字符串在以下情况下必须被引用:
- 空字符串(
"") - 包含前导或尾随空白字符
- 等于
true、false或null(区分大小写) - 看起来像数字(如
"42"、"-3.14") - 包含特殊字符:
:、"、\、[、]、{、}、换行符、制表符、回车符
类型转换表
| 输入类型 | 输出结果 |
|---|---|
| 有限数字 | 规范十进制(无指数,无尾随零) |
NaN、Infinity、-Infinity | null |
BigInt(安全范围) | 数字 |
BigInt(超出范围) | 引用十进制字符串 |
Date | ISO字符串(引用) |
实现指南与最佳实践
TOON 3.0规范为不同编程语言提供了详细的实现指导。参考实现位于packages/toon/src/目录,包含完整的编码器和解码器实现。
通过掌握TOON 3.0版本的完整语法规则,开发者可以更高效地在LLM应用中处理结构化数据,显著提升提示词的token效率。🚀
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考




