探针 2|AI 为什么按「字」收费,中文还比英文贵

你用大模型,账单按 token 算,不按字也不按词
你用 GPT, Claude 的 API,账单上计的不是你打了多少字、多少词,而是一个你可能没怎么听过的单位——token。
中文用户更憋屈:同样一句话,中文花掉的 token 比英文多,钱也跟着多花。凭什么中文就贵?
这篇就从这个「收费不公平」的体感起手,一路挖到 token 到底是什么、怎么切的,最后撞上一个反直觉的坑:你以为一个汉字一个 token,遇上某些字,一个字能烧掉四个 token。
为什么不按字、不按词,非要造一个 token
模型看不懂文字,只认数字。喂给它之前,得先把文本切成一小块一小块,每块编个号,模型才吃得下去。这一小块,就是 token。
那为什么不直接按「字」切?英文按字母切太碎——hello 五个字母就是五个 token,一个词拆成一堆没意义的字母,模型学不到东西。按「词」切又太散——新词天天冒,词表装不下,没见过的词就抓瞎。
token 是个折中:比字母大、比词小,又能把常见的一截一截合并起来。
挖到底:token 是 BPE 按「高频片段」切出来的
这个「怎么切」的活儿,由一个叫 tokenizer(分词器)的部件干。它用的是一套叫 BPE 的算法,原理一句话:统计训练语料里哪些文本片段出现得最频繁,就把它们合并成一个 token。
所以 token 既不是字,也不是词,是「语料里出现频率高的片段」。看几个真实的切法(用 GPT 的 tokenizer 实测):
hello、apple、world——这种高频词,整个就是一个 token。tokenization切成token+ization两个高频片段——token单独成 token,ization这个常见后缀也是。unbelievable切成un+belie+vable三段——un这个否定前缀被单独拎出来。
还有:同一个词,不同模型的 tokenizer,切法可能不一样。还是 unbelievable,GPT-4 切成 un + belie + vable,换成 GPT-4o,切成了 un + bel + ievable。这两代 tokenizer 训练 BPE 时统计的语料不同,认定的「高频片段」就不一样。token 不是语言里天生就有的单元,是统计出来的。

那中文为什么比英文贵
BPE 是按「训练语料里高频的片段」合并 token 的。问题来了:在那一代(GPT-4 的 cl100k)tokenizer 上,训练语料英文占大头,中文只是零头。英文片段在语料里反反复复出现,被 BPE 大量合并成单 token;中文片段出现得少,合并得也少。
结果就是,中文在 tokenizer 的「词典」里被切得更碎。实测(GPT-4 的 tokenizer):
世界两个字,切出 3 个 token——比字还多一个。苹果两个字,也是 3 个。- 最直观的是整句对比——「敏捷的棕色狐狸跳过了懒狗。」一共 13 个字,切出 25 个 token;同样意思的英文 The quick brown fox jumps over the lazy dog.,9 个词才 10 个 token。中文的 token 数是英文的两倍半,账单自然也是两倍半。
所以不是中文天生贵,是它在 BPE 的词典里被切得碎,每个字常拆成一两个 token。字数没变,token 翻倍,钱就跟着翻倍。

想亲手把一句话切开数 token、看每个 token 切了啥,还能对比 GPT-4 和 GPT-4o 切法有啥不同?我做了一个交互演示:Token 分词演示 →
反直觉彩蛋:一个字,烧掉四个 token
讲到这里,你可能形成一个印象:一个汉字差不多一个 token。遇到低频字符,这个印象就翻车了。
还是实测(GPT-4 的 tokenizer):
- 一个 🍎 emoji,3 个 token。
- 生僻字「龘」,2 个 token。
- 那个笔画超多的「𰻞」(biang 字),4 个 token——一个字,四个 token。
为什么一个字能切这么多?因为 BPE 是按「语料里见过的高频片段」合并的。emoji、生僻字在训练语料里几乎没出现过,BPE 压根没把它们合并成 token,于是退化成按 UTF-8 编码的字节来切——token 数最多等于字节数,有些字节对在语料里高频出现过、被 BPE 合并过,就会更少。比如 emoji 在 UTF-8 里是 4 个字节,🍎 实测切 3 个 token(有一对字节被合并了);笔画超多的「𰻞」也是 4 个字节,切了 4 个 token。
对照一下:最高频的「的」字,1 个 token。越常见越便宜,越生僻越烧钱。

真用起来这是个坑:你要是往 prompt 里塞一堆 emoji、特殊符号、生僻字,觉得「没几个字」,token 数其实暴涨,账单也跟着暴涨。
这根探针挖到了什么
一个「按字收费、中文还贵」的疑问,底下连着这些:token 是什么,BPE 怎么切,中文为什么被切碎,最后还摸到了低频字符按字节暴力拆的坑。
这一趟下来,token、tokenizer、BPE 这些词,你算是摸过了。
再补一个反直觉的:你为多少 token 付钱,不是你打了多少字决定的,是 tokenizer 的「词典」决定的。换个模型,同一句话的 token 数就变——「大模型是人工智能的未来」这句话,GPT-4 切 12 个 token,GPT-4o 只切 7 个,省了四成多。GPT-4o 的 tokenizer 对中文等非英文做了优化,中文每字常能压成一个 token。
说到底,按 token 收费,你付的是 tokenizer 词典覆盖度的钱——它见过、合并过的越多,你越省。
下一篇,换根探针:这些模型到底是怎么炼出来的。下回聊。