同样的代码,Claude竟比GPT多算73%的Token!分词器差异与成本辨析

同样的代码,Claude 竟比 GPT 多算 73% 的 Token!分词器差异与成本辨析

在 AI 应用开发中,模型的账单价格通常标榜"每百万 Token 多少钱",但这往往掩盖了一个关键事实:同一段代码在不同模型上会被切成不同数量的 Token。这一差异直接决定了你实际支付的金额,而大多数人从未对此进行过实测。

近日,Playcode 发布的一份测评揭示了这一被忽视的成本黑洞。数据显示,使用相同的代码片段,GPT 系列模型的分词器效率显著高于 Claude 系列,导致后者在相同输入下产生了更多的 Token 消耗。

一、核心数据:73% 的惊人差距

Playcode 的测评基于一份 2888 字符的 TypeScript 文件,分别通过各家的官方计数接口进行了测试。结果如下:

  • GPT (o200k 分词器):切分出 681 个 Token。
  • Claude (最新分词器):切分出 1178 个 Token。

Claude 比 GPT 多计算了 73% 的 Token。在挂牌单价保持不变的情况下,这意味着实际花费已经发生了显著变化。

跨语言场景的具体倍数差异

以 GPT 的 o200k 分词器为基准,Claude 最新分词器在不同内容类型上的 Token 产出倍数如下:

内容类型 Claude 相对 GPT 的倍数
TypeScript 1.73 倍
Rust 1.58 倍
JavaScript 1.52 倍
Python 1.50 倍
英文散文 1.40 倍
中文文本 1.45 - 1.55 倍 (长期存在现象)

值得注意的是,中文文本上的差距主要由分词器底层逻辑决定,Claude 的新旧版本相比 GPT 均多出约 1.45-1.55 倍的 Token,这并非新分词器造成,而是长期存在的现象。

为什么代码上的差距如此明显?

测评指出,GPT 的 o200k 分词器对 TypeScript 的压缩效率特别高,平均 4.24 个字符对应 1 个 Token。这大概率是因为其训练数据中包含大量网络 JavaScript/TypeScript 代码,使得 camelCase 命名、JSX 语法等模式常被压缩为一个 Token。

相比之下,Claude 的分词器在代码和文字上的压缩效率较为接近,未针对代码进行单独优化,导致在编码任务(Agent 最常处理的内容类型)中差距被放大。

二、Anthropic 内部迭代:新分词器的"隐形涨价"

除了跨厂商对比,Anthropic 自身分词器的迭代也带来了成本波动。

  • 新旧对比:Anthropic 的新分词器(应用于 Sonnet 5、Opus 4.8、Fable 5)比旧分词器平均多切出约 32% 的 Token。
  • 实际影响:以 Opus 4.6 和 Opus 4.8 为例,两者挂牌价相同,但实际有效单价却差了约 32%。

这意味着,厂商更换分词器等同于变相调价,而账单上通常不会明确标注这一变化。

三、实际花费:差距可能远超 73%

上述数据仅基于输入端的 Token 差异。在实际任务中,总花费还受以下变量叠加影响:

  1. 模型回复的啰嗦程度
  2. 思考 Token (Thinking Tokens) 的数量
  3. 缓存读写频率
  4. 工具调用次数

有用户反馈,在实际使用中,不同模型间的总花费差距可能达到 2 到 4 倍。因此,仅关注输入端的 73% 差异可能低估了实际成本。

综合成本评估

模型/分词器 相对 GPT o200k 权重 备注
Gemini 3 Flash 1.09 倍 虽然分词器比 GPT 略重,但挂牌单价低很多,综合仍是最便宜的选项之一
GPT-5.5 / GPT-5.6 Sol 1.0 倍 共用同一套分词器,挂牌价与实际单价一致

四、开发者自测指南:五分钟掌握真实成本

不必依赖第三方测评,各家的 Token 计数接口大多免费且易于使用。以下是自测步骤:

1. 测试 Claude (Anthropic)

Anthropic 提供了官方的 count_tokens 接口,传入文本即可返回 Token 数,无需调用模型生成内容,也不产生费用。

  • 接口地址: POST https://api.anthropic.com/v1/messages/count_tokens
  • 操作: 传入测试文本,查看返回结果中的 Token 字段。

2. 测试 GPT (OpenAI)

OpenAI 的 o200k_base 编码器是公开的,可通过本地开源库 tiktoken 直接计算,完全离线且不花钱。

import tiktoken

enc = tiktoken.get_encoding("o200k_base")
tokens = enc.encode("你的文本")
print(len(tokens))

3. 测试 Gemini / Grok

Google 和 xAI 也各自提供了类似的 Token 计数接口,用法同上。

五、给 AI 从业者的建议

73% 这个数字会随模型迭代很快过时,但背后的判断逻辑不变:

  1. 警惕"隐形调价":厂商更换分词器等同于变相调整价格,账单上往往不写明,需要开发者自行核实。
  2. 拒绝单一指标比较:挂牌单价不能跨厂商直接比较,尤其是对于代码类工作负载。
  3. 关注最终成本:真正该比的是"完成同一个任务花了多少钱",而不是"每 Token 多少钱"。这需要把分词效率、回复长度、缓存命中率都算进去。

结论:模型选型不该只看挂牌价。拿出你自己常用的一段代码或 Prompt,用上述方法分别丢进几个接口对比,得出的比例比记住任何单一数字都可靠。