我觉得可以试试 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 工具时,用得最多的一种"小众神器"。

相关推荐
苏三的开发日记2 小时前
库存预扣减之后,用户订单超时之后补偿库存的方案
后端
yivifu2 小时前
JavaScript Selection API详解
java·前端·javascript
这儿有一堆花2 小时前
告别 Class 组件:拥抱 React Hooks 带来的函数式新范式
前端·javascript·react.js
知其然亦知其所以然3 小时前
这波AI太原生了!SpringAI让PostgreSQL秒变智能数据库!
后端·spring·postgresql
十二春秋3 小时前
场景模拟:基础路由配置
前端
六月的可乐3 小时前
实战干货-Vue实现AI聊天助手全流程解析
前端·vue.js·ai编程
黄暄3 小时前
微服务面试题(14题)
java·spring cloud·微服务·架构·java-rabbitmq·java-zookeeper
一 乐3 小时前
智慧党建|党务学习|基于SprinBoot+vue的智慧党建学习平台(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·学习