Token-Oriented Object Notation vs JSON: A Benchmark of Plain and Constrained Decoding Generation

该论文通过基准测试表明,虽然 Token-Oriented Object Notation(TOON)在特定领域任务中展现出有前景的准确率与令牌消耗比,但其优势常被提示词开销抵消,且 Plain JSON 在生成准确率上表现最佳,而受约束解码的 JSON 仅在令牌使用上占优,暗示 TOON 的长期效率潜力可能仅在上下文长度超过特定阈值时才能通过非线性收益得以体现。

Ivan Matveev

发布于 2026-03-05
📖 1 分钟阅读☕ 轻松阅读

Each language version is independently generated for its own context, not a direct translation.

这篇论文就像是一场**“语言效率大比拼”**,主角是三种让大模型(AI)输出结构化数据(比如订单、用户列表)的方法。

为了让你轻松理解,我们可以把**“让 AI 写数据”想象成“让一个厨师(AI)按照你的要求做菜(输出数据)”**。

1. 三位参赛选手

  • 选手 A:JSON(传统老派厨师)

    • 特点:这是目前最通用的格式。就像厨师最熟悉的“标准菜谱”。
    • 优势:AI 在训练时见过无数遍,不用多解释,它就能做得很好。
    • 劣势:格式有点啰嗦,比如要写很多引号、逗号、大括号,就像菜名里非要加很多不必要的装饰词,导致“菜量”(Token 消耗)比较大。
  • 选手 B:JSON-SO(带强制菜单的厨师)

    • 特点:这是给 AI 戴上了“紧箍咒”。系统强制规定:“你只能按这个语法结构说话,少写一个字都不行”。
    • 优势:对于新手厨师(小模型),这能防止他乱做,保证菜一定能端上来(格式正确)。
    • 劣势:对于大厨(大模型),这种限制反而让他手脚放不开,一开始容易出错,需要反复修改。
  • 选手 C:TOON(新派极简厨师)

    • 特点:这是论文的主角,一种全新的格式。它去掉了所有多余的符号(引号、逗号),只保留核心内容和缩进。就像把“红烧肉(红烧肉,红烧肉)”简化成“红烧肉”。
    • 理论优势:因为去掉了废话,写出来的内容应该更短,更省“食材”(Token)。
    • 挑战:AI 以前没怎么见过这种写法,所以必须给它看一本厚厚的“新菜谱说明书”(Prompt),教它怎么切菜、怎么摆盘。

2. 比赛过程(Benchmark)

研究者让这三位厨师分别做四道菜(四个测试场景):

  1. 用户列表(简单的表格,像点名册)。
  2. 订单(有主菜和配菜,稍微复杂点)。
  3. 公司架构(像俄罗斯套娃,部门套部门,员工套部门,非常深)。
  4. 发票(有明细和总计)。

比赛规则

  • 第一次就成功吗?(一次性准确率)
  • 如果做错了,修好要多久?(最终准确率)
  • 一共用了多少食材?(Token 消耗量)

3. 比赛结果(核心发现)

🏆 结果一:简单的菜,老派厨师(JSON)和戴紧箍咒的厨师(JSON-SO)赢了

  • 现象:在简单的“用户列表”或“订单”这种菜里,JSON-SO(带限制的 JSON) 竟然比 TOON 更省食材,而且做得又快又好。
  • 原因:TOON 虽然格式短,但它需要 AI 先读那本厚厚的“新菜谱说明书”(Prompt)。对于简单的菜,“读说明书的时间”比“省下的食材时间”还要长。这就叫**“启动税”(Prompt Tax)**。
  • 比喻:就像你要去隔壁买瓶酱油。
    • JSON:直接跑过去买(路远但不用带地图)。
    • TOON:先花 5 分钟研究一张新地图(虽然路变短了,但总时间反而变长了)。

🏆 结果二:复杂的菜,TOON 彻底“翻车”

  • 现象:在“公司架构”这种像俄罗斯套娃一样复杂的菜里,TOON 第一次尝试的成功率是 0%
  • 原因:TOON 的格式太依赖“缩进”和“对齐”。一旦 AI 在深层嵌套中稍微“手抖”(缩进错一点),整个菜就废了。
  • 比喻:TOON 像是在玩**“俄罗斯方块”,只要有一块没对齐,上面的全塌了。而 JSON 像是“乐高积木”**,哪怕中间少个孔,整体结构还能勉强拼起来。

🏆 结果三:大模型 vs 小模型

  • 小模型:如果没有“紧箍咒”(JSON-SO),它们经常乱写格式,根本没法用。戴上紧箍咒后,它们反而能做出合格的菜。
  • 大模型:它们本来就很聪明,不需要紧箍咒。强行给它们戴紧箍咒(JSON-SO),反而让它们“想多了”,第一次尝试的准确率反而下降。

4. 总结与启示(论文说了什么?)

这篇论文告诉我们,TOON 并不是要彻底取代 JSON 的“万能药”,它更像是一个**“特定场景的特种工具”**。

  • 什么时候用 TOON?

    • 当你处理海量的、简单的、表格状的数据(比如成千上万条订单、日志、SQL 查询结果)时。
    • 前提:数据量要大到足以抵消“读说明书”的启动成本。就像你要去很远的地方,带地图才划算;去隔壁买酱油,直接跑就行。
    • 比喻:TOON 适合**“流水线作业”**,一旦跑起来,效率极高。
  • 什么时候千万别用 TOON?

    • 当数据结构非常复杂、层层嵌套(像复杂的配置文件、网页 DOM 树)时。
    • 比喻:这时候用 TOON 就像是用**“折纸”去盖摩天大楼,稍微折错一点,楼就塌了。这时候还是用“钢筋混凝土”(JSON)**最稳妥。
  • 关于“修复成本”

    • 如果 TOON 做错了,因为它的格式太严格,修复起来往往需要把之前的错误和巨大的“说明书”一起重新发给 AI,导致**“越修越贵”**。而 JSON 即使错了,修复起来也相对便宜。

一句话总结

TOON 是个“省料”的好工具,但它有个“启动费”。只有当你做“大锅饭”(海量简单数据)时,它才划算;如果你只是做“小炒”(简单任务)或者做“精密仪器”(复杂嵌套),传统的 JSON 或者带限制的 JSON 依然是更靠谱的选择。