先打破一个误解:Token ≠ 字数

很多人第一次看到"这个模型支持 128K token"时,直觉会换算成字数。128K token = 12.8 万字?差不多够一本小说了?

如果你这么想,你已经踏入了一个超级常见的坑。

Token 不是字,不是词,也不是句子。它是介于字符和词语之间的某种切割单位,具体怎么切,取决于模型用的是哪种 tokenizer(分词器)。

Token 是什么:从一个字母说起

让我们从英文开始理解。

对于 GPT 系列模型来说,"hello" 是 1 个 token,"world" 是 1 个 token,"tokenization" 会被拆成 "token" + "ization" = 2 个 token。

为什么?因为这些模型使用 BPE(Byte Pair Encoding,字节对编码)算法。

BPE算法:AI的"压缩字典"

BPE 的核心思想很简单:找到文本里最常见的字符组合,给它一个编号。

训练阶段,算法从单个字符开始,不断合并最高频的相邻对:

  • 第一轮:发现 "e" + "s" 出现最多次 → 合并成 "es",编号 #256
  • 第二轮:发现 "t" + "h" 出现最多次 → 合并成 "th",编号 #257
  • 第三轮:发现 "th" + "e" 出现最多次 → 合并成 "the",编号 #258
  • ……持续合并,直到词汇表达到目标大小(通常 5 万~10 万个 token)

结果:常见词变成单个 token,罕见词拆成多个 token。

这就解释了为什么"tokenization"会被拆:这个词不够常见,但"token"这个前缀很常见,所以保留为一个 token;"ization"是个常见后缀,也保留为一个 token。

为什么中文 Token 比英文"贵"?

这是很多人没意识到但非常重要的事:用中文和AI对话,消耗的token通常是英文的2-4倍。

原因在于 BPE 的训练数据。主流大模型(GPT-4、Claude、Gemini)的训练语料以英文为主,英文的词汇表优化得很好,常见英文词往往是 1 个 token。

中文呢?每个汉字通常对应 1-2 个 token(具体取决于模型),而且很多中文词语没有对应的合并规则,会被拆得更碎。

实际测试数据:

  • "Hello, how are you?" → 约 5 个 token
  • "你好,你怎么样?" → 约 10-14 个 token

同样的意思,中文消耗的 token 是英文的 2-3 倍。

对小火龙实验室来说,这个差异非常真实。我们的科普文章用中文写,翻译成英文后,英文版反而更省 token。这也是为什么在 API 调用成本优化上,有时候选择英文提示词是个实用策略。

Token 计算的实际规律

没有精确工具的情况下,可以用这些经验公式估算:

语言估算规则示例
英文1 token ≈ 4个字符 / 约0.75个单词"Hello world" = 2 tokens
中文1 汉字 ≈ 1-2 tokens"你好世界" ≈ 4-8 tokens
代码1 token ≈ 3-4个字符(标点多)代码通常比文本贵
数字每个数字可能是单独token"1234567" ≈ 7 tokens

Token 限制的实际影响

理解 token 的意义,在于它直接影响你使用 AI 的两件事:

1. 上下文容量限制

每个模型的 Context Window 用 token 计量。Claude 3.5 Sonnet 的 200K token,换算成中文大概是 10-15 万字。听起来很多,但一旦你开始粘贴长文档、代码库、对话历史,很快就会触顶。

触顶之后,模型开始"遗忘"最早的内容——这就回到了上一篇文章说的记忆限制。

2. API 调用费用

商业 AI API 按 token 计费,分输入 token 和输出 token(输出通常更贵)。

以 Claude 3.5 Sonnet 为例:

  • 输入:约 $3 / 百万 token
  • 输出:约 $15 / 百万 token

如果你让 AI 处理 1 万字的中文文档,大概消耗 1.5-2 万 input tokens,约 $0.045-0.06。看起来不多,但如果你每天跑几百次,成本就上来了。

小火龙实验室有一条经验:压缩 System Prompt 比压缩用户输入更有效。System Prompt 每次请求都会附带,1000 token 的 System Prompt,每天 100 次调用 = 每天浪费 10 万 input tokens。

如何精确计算 Token?

几个实用工具:

  • OpenAI Tokenizer(platform.openai.com/tokenizer):免费,支持 GPT 系列模型的 tokenization 可视化
  • tiktoken(Python 库):OpenAI 开源,可以在代码里精确计算 token 数
  • Anthropic Console:Claude 的 API playground,显示实际消耗的 token
  • 经验估算:英文 1 token ≈ 4 字符,中文 1 字 ≈ 1.5 tokens

一个经常被忽视的细节:特殊 Token

除了普通文字,tokenizer 还有一批特殊 token:

  • <|system|><|user|><|assistant|>:标记对话角色
  • <|endoftext|>:文本结束标记
  • <|pad|>:填充对齐用

这些特殊 token 也会被计入总 token 数。所以你实际使用的 token 数,往往比你以为的要多一点。

小结:Token 的三个核心认知

  1. Token ≠ 字符 ≠ 单词:它是 BPE 算法切出来的语义单元,常见的短,罕见的长
  2. 中文比英文贵:同样内容,中文 token 消耗约是英文的 2-3 倍,API 成本优化时要考虑这一点
  3. Token 决定两件事:能放多少上下文(容量)+ 每次调用花多少钱(成本)

理解了 token,你才能真正读懂 AI 产品的规格参数,做到心中有数——128K 上下文到底够不够用,换算一下就知道了。