Claude API 按 Token 计费,Opus、Sonnet、Haiku 三档的单价和适用任务都不同。只看“每百万 Token 多少钱”很容易选错:真正决定账单的是输入输出比例、缓存命中率、重试次数,以及任务一次做对的能力。

本文不写死单价,而是给一套可复用的成本对比方法:三档怎么分工、账单由哪些部分组成、同样调用量为什么差几倍、如何用真实日志做预算,以及把成本降下来的顺序。具体单价以 Anthropic 官方文档和站内模型价格为准。

说明:Anthropic、Claude 是其权利人的商标。模型型号、上下文与价格会调整,本文以 2026 年 10 月的常见版本为例,采购前请再次核对官方页面。

一、Opus、Sonnet、Haiku 怎么分工

档位 当前代表型号 定位 适合任务 成本量级
Opus Claude Opus 5.5 最强推理与长程任务 复杂代码、架构评审、多步 Agent 高
Sonnet Claude Sonnet 5.5 能力与速度平衡 日常编码、客服、文档处理 中
Haiku Claude Haiku 5.5 低延迟、高并发 分类、抽取、改写、路由 低

型号会迭代,采购时不要背死名字,以模型价格和官方模型列表为准。老项目如果还在用 Sonnet 5 或 Haiku 4.5,先确认生命周期和迁移成本,再决定是否升级。

一个常见的错误是“全站都用 Opus”。复杂任务用 Opus 可能更省,因为一次就能做对;简单分类用 Opus 则是把成本花在不需要的地方。正确的做法是按任务分层,而不是按团队偏好选模型。

二、账单由五块组成

计费项 什么时候产生 成本影响 控制手段
输入 Token 系统提示、历史消息、工具定义、文档 随上下文线性增长 检索、摘要、裁剪历史
输出 Token 模型生成内容与思考 通常高于输入单价 限制 max_tokens、结构化输出
缓存写入 首次写入缓存前缀 有写入溢价 只缓存稳定复用的内容
缓存读取 命中缓存的前缀 通常明显低于输入 稳定前缀、固定工具顺序
批处理 非实时任务 通常有折扣 标注、摘要、离线分析走 Batch

把一次请求拆开,成本公式是:

单次请求成本 =
  未缓存输入 Token × 输入单价
+ 缓存写入 Token × 缓存写入单价
+ 缓存读取 Token × 缓存读取单价
+ 输出 Token × 输出单价

把这个公式落到请求日志里,才能回答“这个功能一个月到底多少钱”。只看控制台的总账单,很难定位是哪个项目、哪类请求在烧钱。

三、同样是一百万 Token,为什么账单不同

场景 典型 Token 结构 主要成本 优化方向
客服机器人 输入多、输出中等 历史消息反复传 摘要加缓存
文档分类 输入中等、输出短 文档被重复读取 批处理加 Haiku
代码 Agent 输入输出都大 工具结果和思考 检索、effort、缓存
长文生成 输入短、输出长 输出单价 分段生成加 max_tokens

差异通常来自五个地方:

  1. 输入输出比例:客服和长文生成的结构完全不同,不能用同一个平均值估算。
  2. 缓存命中率:固定 system prompt 和工具定义可以复用;每次都变的时间戳、随机 ID 会让缓存失效。
  3. 重试次数:429、529 后的重发会增加请求量,失败和重试的计费口径以账单为准。
  4. 模型档位:Opus 与 Haiku 的成本量级差距很大,错配会把预算放大。
  5. 上下文长度:每轮都把整份文档塞进去,输入成本会随轮数累积。

四、做一次可复现的成本对比

不要用“感觉 Sonnet 够用”做决策,用一批真实任务跑一次对比:

  1. 选 20–50 条真实任务,覆盖简单、中等、复杂三档,并写清验收标准。
  2. 用 count_tokens 记录每条请求的输入 Token,输出 Token 从响应的 usage 读取。
  3. 同一批任务分别跑 Opus、Sonnet、Haiku,记录质量评分和人工返工次数。
  4. 把重试、缓存命中、批处理折扣一起算进单任务成本。
  5. 用“每完成一个合格任务”的成本做决策,而不是每百万 Token 的标价。
import os
from anthropic import Anthropic

client = Anthropic(
    api_key=os.environ["ANTHROPIC_API_KEY"],
    base_url="https://ai.zhongshangqihang.com",  # 模型名以站内价格页为准
)

messages = [{"role": "user", "content": "把这段合同条款抽取成 JSON:……"}]

for model in ["claude-opus-5-5", "claude-sonnet-5-5", "claude-haiku-5-5"]:
    count = client.messages.count_tokens(model=model, messages=messages)
    resp = client.messages.create(
        model=model,
        max_tokens=512,
        messages=messages,
    )
    print(model, count.input_tokens, resp.usage.output_tokens)

这段代码只统计 Token,不计算金额。金额要用你账户的实际单价去乘,单价从模型价格读取,不要沿用几个月前的截图。

五、把成本降下来的顺序

  1. 先开缓存:固定 system prompt、工具定义和知识库前缀,用 cache_read_input_tokens 验证是否真的命中。
  2. 再减输入:RAG 只召回相关片段,历史消息做摘要,不要把整个知识库塞进上下文。
  3. 限制输出:设置合理的 max_tokens,要求 JSON 或固定字段,减少客套话和重复解释。
  4. 离线任务走 Batch:标注、摘要、分类这类不要求实时返回的任务,优先批处理。
  5. 做模型路由:简单任务走 Haiku,复杂任务走 Sonnet 或 Opus,按任务难度而不是按团队习惯分配。
  6. 调 effort:简单任务用较低的思考深度,复杂任务再提高;不要所有请求都用一个档位。
  7. 监控与告警:按项目看用量,设预算上限,每周复盘消耗排名。

顺序不要反。先做缓存和输入治理,再考虑换更便宜的模型;否则只是把错误答案做得更便宜。

六、预算和账单怎么管

  • 一个项目一把 Key,按项目设预算上限和告警。
  • 每月按“项目、模型、场景”三个维度对账,找出增长最快的调用。
  • 缓存、批处理、模型路由的节省要单独记录,否则优化效果无法证明。
  • 需要人民币付款和发票的团队,可以用国内 AI 网关统一账单;具体价格、汇率和发票规则以模型价格为准。

常见问题

Opus 一定比 Sonnet 贵吗?

按单价通常如此,但按“完成一个合格任务”的成本不一定。复杂任务用 Sonnet 反复重试、人工返工,可能比一次 Opus 更贵。用自己的评测集比较,不要只看标价。

缓存能省多少?

取决于前缀复用率和命中率。缓存读取通常明显低于输入单价,但缓存写入有溢价;前缀太短可能无法缓存,内容每次都变则不会命中。

Batch API 适合什么任务?

适合非实时、可延迟的标注、摘要、分类和批量抽取,不适合在线客服和需要立即返回的交互。批处理通常有折扣,但要接受任务排队和结果延迟。

为什么账单比估算高?

常见漏算项包括历史消息、工具定义、图片、重试、缓存写入和长输出。用请求 ID 对照用量日志,才能定位差异。

国内团队怎么用人民币结算?

可以通过提供人民币充值和发票的 AI 网关调用 Claude,统一多模型账单。具体可用型号、价格和发票规则以模型价格为准。

下一步

先在中商起航 AI 网关创建测试 Key,用 Haiku 和 Sonnet 各跑一批真实任务,记录 Token 与质量,再决定主力模型。模型可用性与价格以模型价格为准。

相关阅读: