每天用大模型的你,真的懂Token吗?
每天用ChatGPT的你,真的懂Token吗?
前段时间在波兰做 AI 工作坊,我问了在场的开发者一个问题,知道 Token 是什么的请举手。
结果让我挺意外,一百多人的会场,只有三分之一的人举手。
这些人每天都在用 LLM 写代码、做产品,但对最基础的计费单位竟然一知半解。就好比你天天开车却不知道油表怎么看,迟早要出问题。
今天咱们就把 Token 这件事彻底说清楚。
同样的话,为什么账单不一样
我做了个简单的测试,给 Anthropic 的 Claude 和 Google 的 Gemini 发同样一句话,Hello World。
Claude 告诉我用了 11 个输入 Token,Gemini 说只用了 4 个。
同样两个单词,怎么差了快三倍?
这不是哪家算错了,而是每家的 Token 切分方式根本就不一样。就像同样一块蛋糕,有人切 8 块,有人切 12 块,切法不同,计数自然不同。
更关键的是,输入 Token 和输出 Token 的价格还不一样。你问一句话花一分钱,它回答可能要花三分钱。不懂这个,成本根本算不清。
LLM 其实不认字,只认数字
很多人以为 LLM 是在处理文字,其实完全不是。
当你输入 Hello World 的时候,LLM 做的第一件事就是把它拆成几块,Hello、空格、World、感叹号。然后给每一块分配一个数字,比如 Hello 是 1234,空格是 5678。
接下来所有的计算,全是在这些数字上进行的。LLM 根本不知道什么是 Hello,它只知道 1234 这个数字跟 5678 那个数字经常一起出现。
等它算完了,输出一串新的数字,再把这些数字翻译回文字,你才看到了回复。
整个过程就像是在用密码本通信,文字只是表面,数字才是本质。
我用 OpenAI 的 Tokenizer 测试了一段 2300 个字符的文本,结果只产生了不到 500 个 Token。这意味着平均每个 Token 代表了 4 到 5 个字符。
但如果你输入的是生僻词或者小众编程语言,这个比例会急剧恶化。
词汇表越大,账单越便宜
为什么不同模型的 Token 数量差这么多?关键在于词汇表的大小。
假设你的词汇表只有 1000 个 Token,那 understanding 这个词可能要被拆成 5 块,under、st、and、i、ng。
如果词汇表扩大到 5 万个,可能就只需要 3 块,under、stand、ing。
到了 20 万个词汇表,直接两块搞定,under、standing。
Token 越少,LLM 处理起来越快,你的账单也越便宜。
但这里有个平衡问题。词汇表越大,模型本身就越大,需要的内存也越多。所以各家都在做取舍,OpenAI 选 20 万,Google 可能选 15 万,这就是为什么同样的输入会产生不同的 Token 数。
最早的 Tokenizer 是按字符切分的,the cat sat on the mat 这句话,每个字母都是一个 Token。这种方式简单粗暴,但效率极低。
后来进化到子词级别,会识别经常一起出现的字符组合。比如 th 在英语里出现频率极高,就把它当成一个整体 Token。at 也是,e 也是。
通过这种方式,同样一句话的 Token 数量能减少 30% 到 40%。
你的编程语言,决定了你的成本
刘易斯·卡罗尔在《爱丽丝梦游仙境》里造了个词叫 frabjous,我把它输入到 GPT 的 Tokenizer 里,结果被拆成了 4 个 Token。
因为这个词在训练数据里几乎不存在,模型只能硬着头皮把它拆碎了理解。
这个现象不只发生在生僻词上,还发生在小众语言上。
如果你用中文提问,Token 数量通常比英文多。如果你用日语或者韩语,可能更多。因为这些语言在训练数据里的占比本来就少,模型不熟悉,只能拆得更细。
编程语言也一样。
20 行 JavaScript 代码可能只需要 200 个 Token,但 20 行 Haskell 代码可能要 300 个 Token。不是因为 Haskell 写得差,而是因为 JavaScript 在训练数据里太常见了,模型对它的切分效率更高。
这就是为什么在 AI 时代,流行语言的优势会进一步扩大。不只是生态好,连 API 调用成本都更低。
三个你需要记住的事实
Token 是 LLM 的货币,你的每一次对话都在用 Token 计费。
不同模型提供商的 Token 切分方式不同,同样的输入可能产生完全不同的账单。在选择模型的时候,别只看性能,也要看 Token 效率。
编码就是把文字拆成最大的已知块,然后转换成数字。解码就是反过来,把数字翻译回文字。整个 LLM 的思考过程,都是在数字上完成的。
如果你经常调用 API,建议定期检查 Token 使用情况。很多时候你以为发了一句话,实际上因为上下文累积,可能已经发了几千个 Token。
搞清楚 Token 的工作原理,不只是为了省钱,更是为了理解 LLM 到底在干什么。
当你知道它其实是在处理数字而不是文字的时候,很多看起来奇怪的行为就能解释得通了。
比如为什么它有时候会在数学题上犯低级错误,因为数字对它来说不是数字,只是另一种 Token。
比如为什么它对某些语言的理解明显更好,因为那些语言在训练数据里出现得更频繁,Token 切分更高效。
这些底层逻辑,才是真正影响你使用体验的东西。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)