Haiku 5.5 超过 100K 输入后,费用为什么会跳档?

逐项复算 Haiku 5.5 在 99,999、100,000、100,001 输入 token 时的费用,解释缓存与 Batch,并提供本地计算器。

奶油色卡片上的黑色线稿卷尺,表示 100K 输入门槛。

Haiku 5.5 在单次请求的总输入超过 100,000 token 时切换费率。恰好 100,000 仍是低档;超过门槛后,整条当前请求的各类 token(包括输出)使用对应高档费率,而不是只对超出的输入部分加价。

缓存读取、缓存写入也计入输入门槛,但仍按各自的缓存费率收费,并不会全部变成普通输入价。以前的请求不会被追溯重算。

本文核对 Anthropic 官方价格文档 和 提示缓存规则,日期为 2026 年 10 月 15 日。所有算例都是按第一方美元牌价进行的本地计算,不是真实 API 用量或 Ofox 报价。Haiku 5.5 于 10 月 7 日发布。

两档费率分别是多少?

以下单位均为美元/百万 token,适用于第一方标准 global 推理。

类别总输入 ≤100,000总输入 >100,000
普通输入0.100.50
输出0.502.50
五分钟缓存写入0.1250.625
一小时缓存写入0.201.00
缓存读取0.010.05
Batch 普通输入0.050.25
Batch 输出0.251.25

Batch 将适用的 token 费用减半,可以与缓存计价叠加。它是一种异步处理方式,不是给任意同步请求贴上 Batch 标签就能打折;Managed Agents 没有 Batch 模式。本文算例不含第一方 inference_geo: "us" 的额外倍率;官方规定该选项对输入、输出和缓存费率均乘 1.1。

多一个输入 token,整张费率表都可能变化

假设全部是普通输入,输出固定为 1,000 token:

输入 token档位计算费用(美元)
99,999低档(99,999 × 0.10 + 1,000 × 0.50) / 1,000,0000.0104999
100,000低档(100,000 × 0.10 + 1,000 × 0.50) / 1,000,0000.0105
100,001高档(100,001 × 0.50 + 1,000 × 2.50) / 1,000,0000.0525005

这是合成边界样例,不表示一个字符总是一个 token,也不表示实际 tokenizer 必然得到这些长度。重点是跳档:不能把前 100K 按低价、只把超出部分按高价计算。

输出影响金额,但不决定输入档位。99,000 输入加 2,000 输出仍属于低档输入长度;是否满足模型其他限制,需要另外核对。

缓存 token 只计一次

使用互不重叠的类别:

prompt_total = ordinary_input + cache_write_5m + cache_write_1h + cache_read
cost = (ordinary_input × input_rate
      + cache_write_5m × write_5m_rate
      + cache_write_1h × write_1h_rate
      + cache_read × read_rate
      + output × output_rate) / 1,000,000

先根据 prompt_total 选费率,再逐类相乘。API 如果同时返回缓存创建总量和五分钟/一小时细项,按细项分配一次即可,不能再把总量加进去。即使内容在此前请求中写入缓存,本次缓存读取仍属于本次模型输入。

实际字段映射为:input_tokens 对应普通输入,cache_read_input_tokens 对应缓存读取,cache_creation.ephemeral_5m_input_tokens 与 cache_creation.ephemeral_1h_input_tokens 对应两种写入。cache_creation_input_tokens 用于核对写入合计,不应再次相加。

例如,90,000 缓存读取加 10,001 普通输入,总输入是 100,001,使用高档。输出为 1,000 时:

(90,000 × 0.05 + 10,001 × 0.50 + 1,000 × 2.50) / 1,000,000
= 0.0120005 美元

如果适用 Batch 的请求确实产生同样的分类用量,估算为 0.00600025 美元。这是条件算例,不保证真实 Batch 一定命中缓存;未命中会改变用量类别及账单。

下载并运行本地计算器

下载 Python 计算器 和 边界样例 CSV。计算器只使用 Python 标准库和十进制运算,不联网、不读取密钥、不调用 API。

python3 haiku_cost.py --input 100001 --output 1000
python3 haiku_cost.py --input 10001 --cache-read 90000 --output 1000
python3 haiku_cost.py --input 10001 --cache-read 90000 --output 1000 --batch
python3 haiku_cost.py --self-test

第一条应显示高档、总输入 100,001、费用 0.0525005 美元;第二条为 0.0120005,第三条为 0.00600025。负数会被拒绝。五分钟和一小时写入分别使用 --cache-write-5m、--cache-write-1h。填写对应实际 usage 字段,不要用字数猜测。

自检覆盖门槛选择、缓存计入、输出不计入门槛、缓存单价、Batch 计算和无效输入。它验证本地实现是否符合公开公式,不验证 Anthropic 生产计量或你的发票。费率固定在 10 月 15 日,官方变价后需要更新。

降低上下文前,先保证任务仍然完整

先测量真正发送的输入:系统指令、工具定义、对话历史、检索内容及其他输入。不要只数用户可见的消息。为检索长度和多轮增长留余量,比每次都压到恰好 100,000 更稳妥。

方法适合什么情况必须保留的验收
去除重复或无关内容重复日志、套话、未使用的工具说明关键事实与指令仍在
只检索相关段落问题能定位到来源章节能召回所需证据,并保留引用
拆分任务或压缩历史独立记录、可压缩的对话跨文档关系、例外与必要细节没有丢失

拆分不必然更便宜。系统提示可能重复、输出变多、需要最终汇总,或引发重试。应把失败尝试、汇总等所有请求成本相加,与不拆分的基线比较。质量测试要包含需要跨块信息的案例,不能只测简单独立记录。

长对话也逐请求计算。后续轮次越过 100K 会变贵,但不会改变此前请求已经适用的费率。缓存可能降低金额,同时总输入仍然越过门槛。

怎样与真实账单对账?

对每个已获授权的生产请求,保留时间、模型、计费供应商、输入/缓存/输出数量、处理模式和对应费率快照。不要把提示词或密钥放进公开成本表。区分两种缓存写入,核对是否实际使用 Batch 或地理选项。

金额不一致时,先检查漏掉的缓存写入、重复计数、输出量、供应商特定价格、重试和费率日期;不要随意减少 token 数让结果对上。第三方网关可能有不同价表,第一方计算器不能证明 Ofox 如何收费。

Haiku 5.5 与 4.5 的任务比较讨论分类、提取和摘要中的输出行为,不验证这里的合成边界成本。不同模型的 tokenizer 也可能不同,同样文本不保证同样 token 数。

Claude Max/Team API 赠额可以支付符合条件的第一方用量,但不改变公式。复现样例、将自己的 usage 映射到不重叠的类别,并同时检查成本与输出质量,才算完成调整前的核验。