Token 歧视:为什么我们用中文比英文便宜一半

一、前言

当我们越来越频繁用chatGpt,就会发现一个现象:同样一段话,用中文写比用英文写"便宜"。

不是指人民币汇率问题,而是说同样的字符数,中文消耗的 token 更少。 按 token 计费(目前所有大模型都是这么收费的),用中文天然就在省钱。

这篇文章聊聊 token 是怎么回事,中文到底占了什么便宜,以及这个设计背后的历史原因。

二、Token 是什么

Token 是大模型处理文本的基本单位,不是按字算,也不是按字母算。

简单理解:模型不吃字符串,吃 token。

我们说 “hello”,模型把它拆成 ["hello"]——1 个 token。
我们说 “你好吗”,在 GPT 的分词器里可能只占 1-2 个 token。
而 “how are you” 拆成 3 个 token。

同样的语义表达,中文的 token 数往往更少。只要 prompt 里中文比例高,整体 token 消耗就少。

有人可能会问:那中英混着写会怎样?测试一下:

"请用 Python 写一个 hello world" → 8 个 token
"Please write a hello world in Python" → 8 个 token

中文部分压缩率高,但英文单词拆成多个 token 后两边差不多。纯中文短文本的优势最明显。

三、为什么会有 Token 这种东西

读一下上面两个例子会发现规则很乱——"你好吗"三个字可能只占 1-2 个 token,"请用 Python 写"好几个字也可能只是几个 token,但 “how”、“are”、“you” 三个短单词却各占 1 个。

这不是 bug,这是算法特性。

大模型用的分词器(Tokenizer)底层是 BPE(Byte Pair Encoding)算法,核心逻辑很简单:

  1. 把所有训练语料拆成单个字符
  2. 统计哪些相邻字符出现频率最高
  3. 把出现频率高的相邻字符合并成一个新的 token
  4. 重复步骤 2-3,直到达到预设的 token 数量上限

训练语料决定了 token 的分法。 GPT 训练语料里英文占绝对多数,“are” 是高频词,直接被当成一个完整 token。中文是字母文字,一个汉字就是一个完整单位,而高频词如"你好"、“我们”、"问题"等在英文为主的语料里也频繁出现,所以直接打包成一个 token。

换句话说,中文省下的 token,本质上是英文文本为 BPE 算法的统计模型贡献的数据红利。

四、这给开发带来了什么影响

1. 成本差异

一个纯中文的 2000 字文章,在 GPT-4o(按 $2.50 / 1M input tokens 算)大概消耗 1500-2000 个 token,成本四五厘。同样长度的英文文章,如果全是短词和空格分隔结构,可能翻倍。

对于个人用户几乎可以忽略不计。但对于跑批量的开发者和企业,一年下来差不少。

2. 上下文窗口的不公平

GPT-4 的 128K 上下文,对英文来说是实打实的 128K token。但对中文来说,同样的 token 数能装下更多的语义信息。

写一篇万字长文让模型分析,中文版本可能 5K token 搞定,英文版本可能 8K token。同样的上下文窗口,中文能塞进去更多内容。

3. 输出长度差异

让模型在 500 token 限制内生成中文和英文,中文生成的内容信息量更大。英文可能需要提高 max_tokens 才能输出同样信息量的回答。

五、不是所有模型都这么分

GPT 的分词器(cl100k_base)对中文友好,但不代表所有模型都这样。

开源模型的 tokenizer 取决于训练语料的语言比例。如果某个开源模型主要用中文语料训练(比如 Yi、Qwen、DeepSeek),它的分词器对中文更友好,但对英文的压缩率可能就不如 GPT。这其实是一个零和问题——tokenizer 的词汇表就那么大,给一种语言更多词位,其他语言就会少。

多语言模型的 tokenizer 普遍问题是不太均衡。GPT 已经是对中文相当好的了,某些多语言模型在中文上的 token 效率低到离谱——一个常见中文成语可能被拆成 3-4 个 token。所以换了模型之后成本的增减不是线性的。

六、对我们来说意味着什么

能用中文就不用英文

写 prompt 用中文更省 token,省 token 就是省钱。同一件事用中文表达,成本更低、上下文利用率更高。

注意中英混写

混写中英文时,分词器可能产生额外开销。比如 “请用 Python”,“Python” 在中文分词器里可能被拆成 ["Python"] 或者 ["Py", "thon"],中间多一次合并。这个开销很小,但高频调用时会有累积。

不是所有场景都这么友好

如果做英文的文本生成、翻译或分析,token 消耗还是按英文规则来。中文的优势只在中英文混合的场景下成立,换成纯英文反而没有优势。

七、总结

Token 歧视本质上不是歧视,而是 BPE 算法基于训练语料统计的自然结果。英文语料占大头的模型,高频英文词汇被整词压缩,而中文汉字本身就接近压缩后的形态,无意中享受了红利。

技术上,这不是一个可以或应该修正的"不公平"。tokenizer 的设计目标是在所有语言之间取得平衡,而不是对某种语言最优。所以了解这个机制的好处在于:知道怎么用,更省钱;换模型时,心里有数。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐