我觉得可以试试 TOON —— 一个为 LLM 而生的极致压缩数据格式

有时候我真觉得,开发这行越来越像"数据运输业"。 我们每天都在运数据:前端到后端、后端到数据库、数据库再到模型。 只是现在的运输成本,不再是网络带宽,而是------LLM 的 token 费

几毛钱一次 API,看着不心疼。 可一旦项目跑到几百上千次调用,就开始肉疼。 于是,有人动了脑筋:能不能在不损失语义的前提下,把 JSON 压得更紧?

这,就是 TOON(Token-Oriented Object Notation) 想解决的问题。


一、JSON 的问题不在"好不好",而在"贵不贵"

JSON 是我们这些程序员的老朋友了。 它直观、标准、到处都能解析。 但问题在于------它太啰嗦了。

看下面这段数据:

json 复制代码
{
  "users": [
    { "id": 1, "name": "Alice", "role": "admin" },
    { "id": 2, "name": "Bob", "role": "user" }
  ]
}

每一行都在重复 id, name, role,这在 LLM 里就意味着重复的 token。 你可能没意识到:LLM 看到 "role": "admin",是要一个个词元分开的。 比如 {"role", ":", "admin"------全算钱。

如果你每天要给模型塞几百条这样的结构数据,那真是白花花的钱往外流。


二、TOON 是个什么玩意?

一句话: TOON 是一种为大模型优化的"压缩版 JSON"。

举个例子,它会把上面的 JSON 写成这样:

bash 复制代码
users[2]{id,name,role}:
  1,Alice,admin
  2,Bob,user

看到没?没有花哨的引号,没有重复的 key。 看起来像 CSV,又像 YAML,但其实都不是。

它的几个特点特别有意思:

  • 结构简洁:像 YAML 一样靠缩进,不靠大括号。
  • 数组声明清晰users[2]{...} 一眼就能看出长度。
  • 字段只声明一次:下面直接数据行,干净利落。
  • LLM 解析更友好:模型一看就知道"哦,这是一张表"。

三、这玩意真的省钱吗?

官方的基准测试挺狠。 他们用 GPT-5 的 tokenizer 测了一堆结构数据,结果如下:

  • 对大数组(上百条结构相同的对象),token 减少 30%--60%
  • 对半结构化数据(部分字段不统一),减少约 15%--30%
  • 对纯表格类数据(类似 CSV),略大 5% 左右,但更可靠

意思是: 如果你是批量喂模型的,比如知识库 embedding、RAG 文档、批量问答输入,TOON 能让你的调用成本直接少一半。 这在预算紧张的公司里,简直是省命的优化。


四、但别太激动,TOON 也不是万能药

我喜欢它,但我也要实话实说。

TOON 有几个"坑点":

  1. 结构必须统一: 也就是说,数组里的对象字段要完全一样,否则格式就乱了。

  2. 深层嵌套结构不划算: 如果你的 JSON 是那种嵌套好几层的配置树,那 TOON 的缩进反而更占 token。

  3. 生态还在起步: TOON 目前有 TypeScript SDK 和 CLI 工具,但生态远不如 JSON 成熟。 想用在 Python 或 Java 里?要么自己封装,要么等等。

  4. 可读性不是人人喜欢: 有些同事第一次看到会问:"这 CSV 谁写的?"😂


五、来点实战:怎么用?

假设你装了包:

bash 复制代码
pnpm add @toon-format/toon

简单一行代码就能转:

ts 复制代码
import { encode } from '@toon-format/toon'

const data = {
  users: [
    { id: 1, name: 'Alice', role: 'admin' },
    { id: 2, name: 'Bob', role: 'user' },
  ]
}

console.log(encode(data))

输出就是:

bash 复制代码
users[2]{id,name,role}:
  1,Alice,admin
  2,Bob,user

还可以反向解码回来:

bash 复制代码
npx @toon-format/cli data.toon --decode

如果想看 token 节省情况,加个 --stats

bash 复制代码
npx @toon-format/cli input.json --stats

它会告诉你:"节省 48% token",非常爽。


六、我个人的看法:TOON 是个信号

我不认为 TOON 会取代 JSON。 但我认为它代表了一个趋势------ 开发者开始认真对待 token 成本和模型输入结构了。

过去几年,我们讨论优化时,都是"算法优化"、"前端性能优化"; 而未来几年,"提示结构优化(Prompt Structuring)"会变成一种新工程能力。

你看,过去我们在传输层压缩数据; 现在,我们在语义层压缩思维。 TOON 正好踩在这个分界点上。


七、习惯性的总结

TOON 适合:

  • 给大模型批量输入结构化数据(表格类、日志类)
  • 想减少 token 成本的 AI 应用
  • 构建 RAG、Agent、自动化系统的开发者

不适合:

  • 配置文件、树状嵌套结构
  • 小型一次性输入(节省不明显)
  • 要求通用生态兼容的生产系统

一句话: TOON 更像是 LLM 时代的"二级语言"------介于 JSON 和 Prompt 之间的那层中间语。


我知道这类格式层出不穷,很多人会觉得"这又是个玩票的项目"。 但说实话,我挺喜欢这种"工程师式浪漫"------ 当别人在追求更大的模型、更强的算力,总有人悄悄在研究: 怎么用更少的词,让机器更懂人话。


🧩 项目地址:github.com/toon-format... 推荐朋友们收藏一下, 这可能是你未来写 LLM 工具时,用得最多的一种"小众神器"。

相关推荐
Nan_Shu_6141 分钟前
学习: Threejs (2)
前端·javascript·学习
min1811234561 分钟前
PC端零基础跨职能流程图制作教程
大数据·人工智能·信息可视化·架构·流程图
G_G#9 分钟前
纯前端js插件实现同一浏览器控制只允许打开一个标签,处理session变更问题
前端·javascript·浏览器标签页通信·只允许一个标签页
静听松涛13319 分钟前
中文PC端多人协作泳道图制作平台
大数据·论文阅读·人工智能·搜索引擎·架构·流程图·软件工程
@大迁世界25 分钟前
TypeScript 的本质并非类型,而是信任
开发语言·前端·javascript·typescript·ecmascript
GIS之路33 分钟前
GDAL 实现矢量裁剪
前端·python·信息可视化
勇哥java实战分享35 分钟前
短信平台 Pro 版本 ,比开源版本更强大
后端
是一个Bug37 分钟前
后端开发者视角的前端开发面试题清单(50道)
前端
Amumu1213839 分钟前
React面向组件编程
开发语言·前端·javascript
学历真的很重要39 分钟前
LangChain V1.0 Context Engineering(上下文工程)详细指南
人工智能·后端·学习·语言模型·面试·职场和发展·langchain