同一段文本在不同模型分词器下 token 数量差异巨大,导致名义价格失真;实际计费还需考虑缓存折扣、分级限速等隐藏因素。
一组实验数据说明了核心问题。将完全相同的文本片段分别输入 GPT‑5.6 Sol 和 Claude Opus 5 时,GPT‑5.6 Sol 将内容编码为 766 个 token,而 Claude Opus 5 对相同内容生成了 1170 个 token 的计数。在这个样本输入中,Claude Opus 5 产生的 token 总量高出约 34.5%。
两家提供商都宣称输入定价相同,均为每百万输入 token 5 美元。表面上,两款模型费用相当。而在实际执行中,相同的内容在 Claude Opus 5 下消耗的 token 配额明显更多。Tibo 用一个披萨类比来简化这个反直觉的现象。想象两家披萨店卖看起来一模一样的披萨。店 1 把每个披萨切成 8 片,每片 2 美元,整块披萨总价 16 美元。店 2 把同样大小的披萨切成 16 片,每片 1.25 美元,整块披萨总价 20 美元。店 2 的单片价格看起来更低,但买完整块披萨反而更贵。Token 数量类似于切片数量。不同的 tokenizer 将文本"切分"成不同大小的片段,所以不同模型厂商之间不能直接横向比较公开的每 token 单价。
这个陷阱在 API 消费者中非常普遍。工程团队经常仅根据公开的价格表来做采购决策,而不针对自己真实的业务文本语料进行 token 计数验证。相同的标价并不能保证实际花费相当。
Tokenizer是大语言模型的文本切分子系统。它将原始字符串拆分为 transformer 架构可以处理的子词单元。Token 切分规则由各模型开发商根据自己的训练语料库内部训练而成。没有任何通用的行业标准来定义某个段落该如何被分割成 token。
"the"、"and"、"is" 等常见英文单词在训练数据集中出现频率非常高;tokenizer 将这些高频词映射为单个独立的 token。而 "unbelievable" 这样较长或罕见的词则会被分解成多个子词片段。例如,"unbelievable" 可能被拆分为 "un‑"、"believ‑"、"‑able",占用三个独立的 token 位置。
分歧程度因内容类型而异。用纯英文写的散文在不同 tokenizer 之间产生的 token 数量差距相对较小。代码块、JSON 载荷、数字序列和多语言文本则显著放大了差异。即使是同一厂商的连续模型代际也不能保证 token 计数行为一致。
Anthropic 的官方文档明确承认了这种不确定性。API 响应中返回的 token 数量是估算值,实际消息处理过程中消耗的 token 总量可能略有漂移。Claude 4.7 发布后,Anthropic 推出了一版更新的 tokenizer。将完全相同的输入文本放入更新版本的模型中,产生的 token 计数比早期代际的 Claude 模型高出约 30%。确切的扩展比例会随输入内容和工作负载模式而波动。
这造成了一个关键的操作约束:不能在不同模型版本之间天真地复用 token 计数数据。开发者不能直接将不同厂商的"每百万 token"价格点作为可靠基准来进行比较。
相同的每百万 token 标价并不会产生等价的最终发票。有四个主要维度会影响实际支出,与基础的 tokenizer 切片效率无关。
第一,输入缓存定价。OpenAI 公布了一个折扣后的缓存输入价格,每百万 token 0.50 美元,标价为标准输入价格的十分之一。具有大量重复提示片段或长对话历史的工作负载可以通过缓存折扣显著重塑整体成本结构。
第二,输出 token 单价不同。GPT‑5.6 Sol 输出定价为每百万输出 token 30 美元;Claude Opus 5 输出定价起始于每百万输出 token 25 美元。在 Agent 驱动的工作流中,输出 token 通常主导总消耗量,因此输出侧单位费率对总支出有重大影响。
第三,由输入 token 阈值触发的阶梯渐进定价。GPT‑5.6 Sol 对大提示场景应用倍数规则。一旦输入 token 超过 272K 阈值,整个请求输入按 2 倍倍数计费;超过另一个边界后,请求切换至 1.5 倍倍数计费。关键在于,费率增长适用于完整请求载荷,而非仅针对溢出部分。更长的上下文窗口带来非线性的成本风险;扩展上下文推理并非免费能力。
第四,重试和工作流失败的开销。即使 token 计数数学看起来有利,更高的失败率、过多的工具调用循环或多轮修正周期都会增加额外的 token 消耗,而这些永远不会出现在基础的 token 比较表格中。
所有这些变量意味着原始 token 计数比较只能作为初步参考。真实世界的成本取决于 tokenizer 特性、缓存命中率、输出量、上下文窗口大小和工作流成功率。
Tibo 分享了在 Codex 中手动调优上下文窗口参数的具体操作步骤。用户可以编辑 ~/.codex/config.toml 并在每个 section 头部注入三个配置参数:
model = "gpt-5.6-sol"
model_context_window = 1000000
model_auto_compact_token_limit = 900000
model_context_window 定义了目标模型公开的最大上下文 token 容量。model_auto_compact_token_limit 设置了触发自动历史压缩的阈值。当存储的对话历史接近这个阈值时,Codex 会压缩旧记录以保留缓冲空间处理新交互。配置更新对新开始的会话生效;现有进行中的对话保留之前的运行时设置。同一组参数也可以通过 CLI 启动标志应用:
codex -m gpt-5.6-sol -c model_context_window=1000000 -c model_auto_compact_token_limit=900000
GitHub 上的社区反馈解释了许多从业者选择手动调整的原因。Codex 客户端可能会施加远低于模型理论最大上下文窗口的硬性实际限制。一个真实案例显示,一个 GPT‑5.6 Sol 账户标称 1.05M 上下文窗口容量,但 Codex 实际将可用历史限制在约 372K‑353.4K token。将配置值设为一百万并不会立刻产生一百万 token 的计费。相反,它提高了历史累积的天花板。一旦对话历史持续增长并越过阶梯定价阈值,渐进倍数就会生效。Tokenizer 之间微小的 token 数量差异在漫长的多轮对话中会不断累积。小百分比差距乘以数千个历史 token,再被阶梯费率倍数放大,最终会在实际金额上产生非常大的差距。成本通过连续的请求周期逐步累积。
Tibo 的分析为 AI 工程团队提出了一个核心思维转变。传统的比较指标"每百万 token 成本"对于生产采购而言是不够的。更有意义的衡量标准是每成功结果的价格:完成一个完整业务任务所需的全部财务支出。
为了公平地衡量这个指标,开发者应该使用自己的原生业务数据运行标准化的内部测试。保持输入语料库、提示语言、工具调用定义和业务成功标准一致。调用候选模型,收集实际消耗的输入和输出 token 计数,跟踪缓存利用率,统计重试周期和失败实例。计算总支出除以完全完成的有效任务数量。
一款看似每 token 价格优惠的模型,如果需要反复重试、生成无效的工具调用载荷,或产出需要大量人工修正的低质量输出,最终可能反而更贵。Token 计数效率只是整个成本链条中的一个环节。未来,采购团队的关键问题不再是"每百万 token 多少钱",而是"可靠地完成一个工作单元要多少钱"。
Tokenizer 不一致给成本预测带来了隐藏风险。在构建多模型架构时,团队不能假设来自不同提供商的 token 值是可互换的单位。预算规划必须纳入针对实际领域数据的真实流量采样,而不是纯粹依赖供应商公布的价格表。
上下文窗口扩展带来了切实的权衡。更大的历史容量支持长时间运行的 Agent 会话,但渐进定价规则和更高的绝对 token 消耗增加了运营支出。手动配置自动压缩阈值有助于在会话连续性和成本控制之间取得平衡。
可观测性变得至关重要。团队需要的指标不仅涵盖 token 总量,还包括任务完成率、重试频率、缓存命中率和端到端任务级成本。聚合这些跨异构 LLM 后端的指标可以简化对竞争模型选项的客观比较。
GPT‑5.6 Sol 和 Claude Opus 5 展示了不同的 tokenizer 实现如何打破仅基于标称每百万 token 价格标签的跨厂商直接比较。Token 计数偏差、缓存机制、大提示的阶梯定价、输出侧定价和工作流失败开销共同塑造了真实的云账单。手动上下文窗口调优可以缓解客户端上下文容量限制,同时使团队面临阶梯费率成本风险。业界应该逐步将评估重点从表面的 token 单位定价转向每成功任务结果的成本。对于运行混合模型生产部署的工程团队而言,建立任务级成本可观测性是理性模型选择和预算控制的必要步骤。