Haiku 5.5 超过 100K 输入后,费用为什么会跳档?
逐项复算 Haiku 5.5 在 99,999、100,000、100,001 输入 token 时的费用,解释缓存与 Batch,并提供本地计算器。
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.10 | 0.50 |
| 输出 | 0.50 | 2.50 |
| 五分钟缓存写入 | 0.125 | 0.625 |
| 一小时缓存写入 | 0.20 | 1.00 |
| 缓存读取 | 0.01 | 0.05 |
| Batch 普通输入 | 0.05 | 0.25 |
| Batch 输出 | 0.25 | 1.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,000 | 0.0104999 |
| 100,000 | 低档 | (100,000 × 0.10 + 1,000 × 0.50) / 1,000,000 | 0.0105 |
| 100,001 | 高档 | (100,001 × 0.50 + 1,000 × 2.50) / 1,000,000 | 0.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 映射到不重叠的类别,并同时检查成本与输出质量,才算完成调整前的核验。


