前沿模型实际成本:tokenizer 差异导致隐性涨价
前沿模型的实际价格。代币 * 价格,对吧?
同一份 TypeScript 文件在 GPT-5.x 上为 681 个 token,在 Claude 最新 tokenizer 下为 1,178 个,相差 1.73 倍。Anthropic 新 tokenizer 比旧版多产生约 30% 的 token,标价不变,构成隐性涨价。Claude Opus 4.6 与 Opus 4.8 标价同为 $5.00 / $25.00,但新 tokenizer 使同一代码的 token 数增加约 32%。Claude Sonnet 5 的 $2.00 / $10.00 为促销价,2026 年 8 月 31 日后恢复 $3.00 / $15.00,届时相同代码成本将比 Sonnet 4.6 高出约 32%。跨厂商对比中,Claude 新 tokenizer 在代码上比 GPT 多产生 1.50x 至 1.73x 的 token,TypeScript 差距最大。
这篇用实打实的token计数揭开了各厂商定价页藏着的秘密,代码场景下Claude有效价格比GPT贵50-73%,做coding agent的必须按‘每任务成本’而非‘每token标价’来算账。
每个模型的定价页面都只显示一个数字:每百万 token 多少美元。这个数字在不同厂商之间并不可比,因为一个“token”并不是固定数量的文本。每个模型的分词器会把同一个文件切成不同数量的片段,而你是按片段付费的。我们统计了相同字节在每个前沿分词器下的结果。同一个 TypeScript 文件在 GPT-5.x 上是 681 个 token,而在 Claude 最新的分词器上是 1,178 个 token——多了 1.73 倍,这还没算任何价格差异。而 Claude 的新分词器相比 Claude 自己上一代分词器,在标价相同的情况下,产生的 token 数大约多了 31%。如果你用 AI 编程智能体来开发,你的工作负载大部分是代码——而这恰恰是差距最大的地方。

定价页面隐藏的那个数字
一个模型的账单是两个数字相乘的结果:
成本 =(你的内容变成的 token 数)×(每 token 价格)
定价页面展示的是第二个数字,并把第一个当作常量。它不是常量。它是模型分词器的一个属性——分词器就是把你的文本切成计费单元的组件。两个模型可以标榜同样的“$5.00 / 1M 输入 token”,却对同一段文字给出不同的账单,因为其中一个把这段文字变成了更多的 token。
没有人把“每单位内容对应多少 token”这个数字印出来,所以也没有人去比较它。于是我们测量了它。两个发现:
- 同一厂商对比: Anthropic 的新 tokenizer 在相同代码上产生的 token 比其上一代多约 30%,而标价不变。这是一次隐性涨价。
- 跨厂商对比: 在代码上,Claude 的新 tokenizer 产生的 token 是 GPT 的 1.50 倍到 1.73 倍——而 TypeScript,这一编程智能体写得最多的语言,是最糟糕的情况。
我们是如何测量的
我们选取了 16 个真实样本:英文散文、一个 HTML 页面、JavaScript、Python、TypeScript 和 Rust 文件、JSON 工具 schema 和工具结果、中文聊天和散文、符号密集的文本,以及我们自己线上运行的智能体系统提示词。我们在每个模型的真实 tokenizer 下逐字节地对每一个进行计数。没有生成,没有估算——只有 token 计数:
- Anthropic(Claude) - Anthropic 的官方
count_tokens端点。权威可靠:它与 Anthropic 计费所依据的计数完全一致。 - OpenAI(GPT)- 文档中记载的
o200k_basetokenizer,通过tiktoken。对于最新的模型,我们并未盲目相信:我们对 GPT-5.1、GPT-5.5 和 GPT-5.6 Sol 发起了真实的 API 调用,并读取了实时的usage计数,使用长减短的差值来抵消请求框架的影响。三者均完全吻合o200k_base(比值 1.0000)。 - Google(Gemini)和 xAI(Grok)——各提供商自己的 token 计数端点。
在整篇文章中,GPT 的 o200k 是 1.00x 的参考标尺。它是合适的标尺,因为它不会变动:o200k 已被冻结并公开记录了很久。Claude 的 tokenizer 才是不断变化的那部分。有两个模型被刻意排除在外:DeepSeek 和 GLM。对于它们,我们只有粗略的“字符数除以四”估算,而不是真正的 tokenizer,而编造一个数字恰恰是这篇文章存在的意义所在——就是为了点名这种做法。
发现 1:标价相同,token 数多约 30%
这是数据集中最干净的案例,因为价目表上没有任何东西变动。Claude Opus 4.6 和 Opus 4.8 共享完全相同的 $5.00 / $25.00 价格。唯一的改变是 tokenizer:旧版随 Sonnet 4.6 和 Opus 4.6 发布,新版随 Sonnet 5、Opus 4.8 和 Fable 5 发布。每一行的字节数相同,同一家厂商,在 Anthropic 自己的端点上计数:
| 内容 | 旧 tokenizer | 新 tokenizer | 变化 |
|---|---|---|---|
| 英文散文(2,115 字符) | 476 | 636 | +34% |
| HTML 页面(3,195 字符) | 1,131 | 1,302 | +15% |
| JavaScript(1,933 字符) | 659 | 794 | +20% |
| Python(2,251 字符) | 831 | 1,022 | +23% |
| TypeScript(2,888 字符) | 898 | 1,178 | +31% |
| Rust(2,924 字符) | 1,019 | 1,312 | +29% |
| JSON 工具 schema(9,948 字符) | 2,631 | 3,306 | +26% |
| 我们的智能体系统提示词(42,661 字符) | 10,761 | 14,953 | +39% |
| 中文散文(379 字符) | 435 | 433 | ~0% |
按照真实智能体请求的构成方式把这些混合起来——主要是英文系统提示词、工具 schema、代码和 JSON——新的 tokenizer 每个请求大约多出 +32%。注意最后一行:在中文上,几乎没有任何变化。这种膨胀是英文和代码带来的效应。
名不副实的“降价”
这重新解读了一个看似利好的标题。Claude Sonnet 5 以 $2.00 / $10.00 的价格发布,低于 Sonnet 4.6 的 $3.00 / $15.00。但这是 introductory price(引入期价格),将于 2026 年 8 月 31 日结束。在引入期内,账目大致相互抵消:Sonnet 5 生成的 token 多约 32%,但每个 token 收费低三分之一,因此总体略便宜。到了 9 月 1 日,标价弹回 $3.00 / $15.00——而 +32% 的 token 膨胀依然存在。从那天起,同样的代码在 Sonnet 5 上的花费比 Sonnet 4.6 高出约 32%,而标价完全相同。这个折扣是过渡期的缓冲,而非降价。
我们对照真实账单进行了验证
token 计数器在被计费之前只是一个承诺,因此我们还发起了真实的付费请求(max_tokens: 1),并读取了每个提供商实际收取的 usage.input_tokens。对于相同的内容:Opus 4.6 计费 2,541 个输入 token,Opus 4.8 计费 3,191——各自与其 count_tokens 预测精确到每个 token 相符。这种膨胀体现在账单上,而不仅仅是在估算器里。
我们故意把额外的那次调用花在最贵的模型上,因为"相同的 tokenizer,没什么特别的"正是这篇文章所质疑的那类说法。Fable 5 对相同内容计费 3,191 个输入 token——与 Opus 4.8 完全相同——因此 Fable 运行的是同一个新 tokenizer,并按其精确计数计费。没有隐藏的按 token 附加费:Fable 贵是因为它的标价($10 / $50),而不是因为某种秘密的 token 税。这次验证的总成本约为 $0.08。
发现 2:差距在代码上最大
现在来看跨厂商的视角。下面每个数字都是同一文件下 GPT token 数量的倍数——GPT 的 o200k 是 1.00x 的标尺,所以 1.20x 意味着“比 GPT 多 20% 的 token”。Claude 的新旧分词器并排展示,因此你既能看到新分词器增加了多少,也能看到 Claude 此前已经比 GPT 高出多少:
| 内容 | Claude(新) | Claude(旧) | Gemini 3 Flash | Grok 4.5 |
|---|---|---|---|---|
| TypeScript | 1.73x | 1.32x | 1.16x | 1.05x |
| Rust | 1.58x | 1.22x | 1.19x | 1.05x |
| JavaScript | 1.52x | 1.26x | 1.23x | 1.11x |
| Python | 1.50x | 1.22x | 1.20x | 1.09x |
| HTML 页面 | 1.36x | 1.18x | 1.08x | 1.04x |
| 英文散文 | 1.40x | 1.05x | 1.01x | 1.00x |
| 中文散文 | 1.44x | 1.45x | 0.85x | 0.86x |
| 中文对话 | 1.53x | 1.55x | 0.91x | 0.92x |
代码行与其他所有内容清晰地分离开来。TypeScript 的差距最大,达到 1.73x,但它并非孤例:Rust 1.58x、JavaScript 1.52x、Python 1.50x——全都远高于英文散文的 1.40x。这不是 TypeScript 的偶然现象,而是整个代码类别的情况,其中 TypeScript 位居榜首。而代码正是 AI 编程智能体整天产出的东西,所以 1.50-1.73x 这个区间才是对应你账单的那个——而不是英文段落那更温和的 1.40x。
为什么偏偏是 TypeScript
因为 GPT 的 o200k 在这方面异常高效:大约 每个 token 4.24 个字符,这是一个大量用网页 JavaScript 和 TypeScript 训练出来的 tokenizer 的指纹——在这类语言中,camelCase 标识符和 JSX 模式会坍缩成单个 token。这种效率在 Rust 上就下滑了(约 3.51 字符/token),而 Claude 的 tokenizer 在两者上都同样密集。TypeScript 是那个异类,因为一家厂商把它的 tokenizer 专门针对你写的那种语言做了调优,而另一家没有。差距最大的地方,恰恰正是 GPT 最强的地方。
中文那几行讲的是另一个故事
在中文上,Claude 比 GPT 高出约 1.45-1.55 倍——但这是两个 tokenizer 都如此。旧版:435 个 token,而 GPT 是 300。新版:433。这个税并不是新版本带来的;它是 Claude 家族在 CJK 上长期存在的劣势,而新的 tokenizer 并没有触及这一点。(Gemini 在中文上其实胜过 GPT:256 个 token,而 GPT 是 300。)教训不是"某个模型永远最便宜"。而是哪个 tokenizer 在向你收税、收得多重,取决于你写的是什么。
这对价格意味着什么
把公开标价乘以实测的偏差,你就得到有效价格——也就是你处理同样工作实际支付的费用。这里的偏差是一个真实英文编程请求的混合乘数,以 GPT 的 o200k 为基准归一化。GPT 那几行按标价计算;其他所有模型则按它们把同样内容切分成多出(或少出)多少 token 来缩放:
| 模型 | 标价 输入 / 输出($/Mtok) | 偏差 | 实际 输入 / 输出($/Mtok) |
|---|---|---|---|
| GPT-5.1 | $1.25 / $10.00 | 1.00x(基准) | $1.25 / $10.00 |
| GPT-5.5 | $5.00 / $30.00 | 1.00x | $5.00 / $30.00 |
| GPT-5.6 Sol | $5.00 / $30.00 | 1.00x(已验证) | $5.00 / $30.00 |
| Grok 4.5 | $2.00 / $6.00 | 1.03x | $2.06 / $6.18 |
| Gemini 3 Flash | $0.50 / $3.00 | 1.09x | $0.55 / $3.27 |
| Claude Sonnet 4.6 | $3.00 / $15.00 | 1.14x(旧 tokenizer) | $3.42 / $17.10 |
| Claude Sonnet 5 (intro) | $2.00 / $10.00 | 1.50x(新 tokenizer) | $3.00 / $15.00 |
| Claude Sonnet 5 (from Sep 1) | $3.00 / $15.00 | 1.50x | $4.50 / $22.50 |
| Claude Opus 4.6 | $5.00 / $25.00 | 1.14x(旧 tokenizer) | $5.70 / $28.50 |
| Claude Opus 4.8 | $5.00 / $25.00 | 1.50x(新 tokenizer) | $7.50 / $37.50 |
| Claude Fable 5 | $10.00 / $50.00 | 1.50x(新 tokenizer) | $15.00 / $75.00 |
看了几行。Opus 4.6 和 4.8 标价同为 $5.00 / $25.00,但实际价格相差约 32%——这是发现 1,现在以美元计。GPT-5.5 和 GPT-5.6 Sol 的标价和实际价格都相同,因为它们共用经过验证的 tokenizer:这两个 GPT 档位的差异在于能力,而非隐藏的 token 税。Gemini 3 Flash 的实际价格仍然最低——它的 tokenizer 比 GPT 的略重,但标价足够低,因此无关紧要。
一个方向一致的独立数据点:Ploy 本周发布了向 GPT-5.6 Sol 的生产迁移,并报告称相同构建下输入 token 为 1.70M,而 Claude Opus 4.8 为 2.60M——大约少了 35%。这是真实的账单,不是合成探测,它把更精简的 tokenizer 与模型自身的冗长度混在了一起。测量方式不同,方向相同。
诚实的区间是:1.4 倍到 1.73 倍,而不是“2-4 倍”
你会看到有人声称 Claude 使用的 token 数量是 GPT 的 2 到 4 倍。我们的测量结果并不支持这一说法,而夸大这一点反而会削弱真正要表达的观点。Claude 的新 tokenizer 对比 GPT 的 o200k,按内容类型划分:
- 英文散文、HTML、JSON:约为 1.36 倍到 1.42 倍。
- 代码(Python、JavaScript、Rust、TypeScript):约为 1.50 倍到 1.73 倍,TypeScript 的差距最大。
- 中文及符号密集型文本:约为 1.44 倍到 1.53 倍。
这是真实存在的、有实际影响的,也值得纳入成本考量——但它是有限的。我们把 TypeScript 的数字放进标题,是出于一个诚实的原因:它是这一区间的上限,而且它是 AI 编程智能体整天都在处理的内容,所以这个数字对应的是真实的账单。展示你实际的工作负载并不是挑樱桃——但“Claude 在所有内容上都是 1.73 倍”会是错误的,我们也没有这样声称。精确才是关键:如果散文的诚实数字是 1.4 倍,把它说成 3 倍会让整个论点轻易被驳倒。
如果你构建智能体,英文决定了你的税负
一个内容为中文的聊天机器人,最应该关心的是上面那些 CJK 行。但在一个编码智能体中,几乎每个请求都由英文脚手架主导:系统提示词、工具 schema、代码、JSON。在我们的混合样本中,无论用户的聊天消息是英文还是中文,Claude 的新 tokenizer 都保持在 GPT 的约 1.50 倍——与数万个 token 的脚手架相比,单行聊天内容不过是舍入误差。对于智能体而言,无论打字的是谁,tokenizer 在英文和代码上的表现才是真正重要的数字。
如何真正比较模型价格
- 用你自己的内容来比较,而不是看标价。你的语言和文件类型决定了倍率。在信任费率表之前,先用具有代表性的样本跑一遍各个 tokenizer。
- 把 tokenizer 变更当作价格变更来对待。 当某家厂商以“同样的价格”发布新模型时,要检查 tokenizer 是否变了。Opus 4.6 到 4.8 是约 32% 的涨幅,却没有任何明示条目。
- 以每任务美元来衡量,而不是每 token 美元。 “这次构建实际花了多少钱”把 tokenizer 和模型的啰嗦程度合并在一起。提供商自己的
usage字段才是真实依据。 - 把 $/Mtok 当作开场白,而不是答案。 它必要、有用——但无法跨 tokenizer 比较。
这一切并不能说明某一个模型是普遍正确的。GPT-5.x 在英语和代码上是 token 用量精简的选择;Gemini 3 Flash 实际使用起来便宜得惊人;Claude 的模型即便运行时要消耗更多 token,也凭质量赢得了自己的位置。诚实的解读很简单:你该拿来比较的价格,应当是你实际支付的那个价格——是在经过 tokenizer 之后,而不是之前。
来源(请自行核实标价): Anthropic 定价(anthropic.com/pricing)、OpenAI 定价(platform.openai.com/docs/pricing)、Google Gemini API 定价(ai.google.dev)、xAI 定价(docs.x.ai)。token 计数来自 Anthropic 的 count_tokens 端点、OpenAI 的 o200k_base(已对照实时 API 用量核实),以及 Google 和 xAI 的计数端点。生成这些计数没有产生任何文本。
来源:Hacker News 热门(buzzing.cc 中文翻译) · playcode.io