同样的API返回数据,为什么用JSON格式发给GPT-4o,Token消耗比实际内容多出一大截?一个叫TOON的轻量格式,或许能回答这个问题。
假设你有一组用户数据,典型的JSON数组是长这样的:每条记录都要完整写出"id"、"name"、"role"、"active"这些键名。三条记录还好,但如果数组里躺着500条,键名就被重复了500次。实际上,大模型提供商是按Token计费的,这些不断出现的相同字符串,就是在烧钱。
TOON格式的解法很直接:键名只声明一次,接下来每行只放对应的值。上面那组数据会变成“users[3]{id,name,role,active}:”,然后跟三行“1,Alice,admin,true”,以此类推。数据完全等效,但键名冗余被彻底砍掉了。作者在测试集上观察到,根据数据重复程度不同,Token节省从30%到60%不等。数组越大、值越短,省得就越多,因为此时键名在总负担里的占比更高。
正方观点很清晰:如果你的Prompts里塞了大量同构数组,改成TOON格式能直接省下可观的推理成本。作者算了一笔账——假设每月向GPT-4o输入1000万Token,按每百万2.5美元计,其中六成是表格型JSON,TOON又能把这部分砍掉45%,算下来每月大约省6.75美元,一年就是480美元左右。规模小的时候这点钱不算什么,可当Token量上去了,节省会迅速放大。更关键的是,节省出来的上下文窗口,有时比省下的钱更有价值。
反方观点同样存在:TOON只对结构规整、对象字段完全相同的数组有效。一旦数据嵌套层次复杂,或者混合了不同形状的对象,压缩效果就大打折扣。而且每次使用时,需要给模型一句明确的提示——告诉它接下来是一个紧凑表格形式的JSON。现代模型大多能处理这种指令,但不能省略这句“解密文”。另外,如果你的Prompt以指令为主,数据只占一小部分,那压缩数据带来的整体Token节省几乎可以忽略不计。
综合来看,TOON并不试图取代JSON,它更像一把专为“搬运大量同构数组”而设计的瑞士军刀。其意义在于,它用一个极简的格式规则,揭示了LLM计价模式下,数据结构本身也能变成一种可优化的成本变量。作者还把它做成了一个免费的前端工具,在jsontoonpro.com上可以完成JSON和TOON的双向转换,并实时估算两种格式的Token消耗。整件事的起点,不过是开发者不想再为重复键名付费。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.