接入教程

Claude 模型对比:Haiku、Sonnet、Opus、Fable 怎么选(2026)

Kenji Watanabe

Anthropic 目前通过 API 提供四个档位的 Claude 模型:Haiku(最便宜、最快)、Sonnet(日常主力)、Opus(复杂推理与编码代理的默认选择)、Fable(能力最强、价格高于 Opus)。每个档位里,当前一代和上一两代型号都还能调用。本文把它们横向摆在一起,帮你按任务选型而不是整个项目只用一个模型。

Claude 模型对比总表

下表列出 2026 年 10 月可通过 Messages API 调用的型号,以及在 model 字段里要填的精确模型 ID。价格为 Anthropic 官方定价页公布的第一方 API 费率(每百万 token);Amazon Bedrock、Vertex AI 等合作平台另行计费。

档位

型号

模型 ID

上下文窗口

输入 / 输出(每百万 token)

Fable

Claude Fable 5.1(当前)

claude-fable-5-1

1M

10 / 50 美元

Fable

Claude Fable 5

claude-fable-5

1M

10 / 50 美元

Opus

Claude Opus 5.5(当前)

claude-opus-5-5

1M

4 / 20 美元

Opus

Claude Opus 5

claude-opus-5

1M

5 / 25 美元

Opus

Claude Opus 4.8 / 4.7 / 4.6

claude-opus-4-8、claude-opus-4-7、claude-opus-4-6

1M

5 / 25 美元

Sonnet

Claude Sonnet 5.5(当前)

claude-sonnet-5-5

1M

2 / 10 美元

Sonnet

Claude Sonnet 5

claude-sonnet-5

1M

2 / 10 美元

Sonnet

Claude Sonnet 4.6

claude-sonnet-4-6

1M

3 / 15 美元

Haiku

Claude Haiku 5.5(当前)

claude-haiku-5-5

1M

0.10 / 0.50 美元

Haiku

Claude Haiku 4.5

claude-haiku-4-5

200K

1 / 5 美元

看表时有两点值得先注意。第一,最新的 Opus 比上一代更便宜:Claude Opus 5.5 的单价低于 Claude Opus 5,而 Anthropic 文档里两者的上下文(1M)、最大输出(128K)和分词器都相同。第二,Haiku 5.5 表中的价格只适用于 100K token 以内的提示;根据 Anthropic 定价说明,超过 100K 的部分按更高费率(0.50 / 2.50 美元)计费,所以在 Haiku 上塞超长提示并不像表面数字那么省。

四个档位的定位差异

Haiku 为高并发而生。同一个提示一天跑几千上万次、任务边界又很窄的场景——分类、路由、短文档抽取、审核式检查、两段式流水线的第一段——都该优先考虑它。它也是自动补全、聊天建议这类对延迟敏感的交互界面的自然选择。Haiku 5.5 把这个档位升级到了 1M 上下文和自适应思考,「小模型等于小窗口」的旧印象已经不成立。

Sonnet 是通用档位。Anthropic 把 Claude Sonnet 5.5 定位为日常编码、代理和企业工作的首选,2 / 10 美元的价格让它成为多数团队生产环境里跑聊天助手、文档问答、摘要和中等复杂度工具调用的主力。不知道从哪开始,就从这里开始,再用数据说话。

Opus 是智力敏感型任务的默认档:多步编码代理、长时间自主工具调用循环、高难度分析,以及任何「答错的代价高于 token 费用」的场景。Anthropic 的 SDK 指南把 Claude Opus 5.5 作为新接入的默认模型——顶级档位被当默认值很少见,这完全得益于它的价格降到了上一代 Opus 之下。

Fable 位于 Opus 之上。Anthropic 将 Claude Fable 5.1 描述为其能力最强的广泛发布模型,面向最苛刻的推理和长程代理任务。它的输入单价是 Opus 5.5 的 2.5 倍,API 行为也有几处差异(见下文),所以大多数团队只把它留给最难的那一小部分负载,而不是全量使用。

上下文窗口与输出上限

所有当前一代模型,以及 4.6 代之后的全部 Opus、Sonnet 型号,都提供 1M token 的上下文窗口和 128K token 的最大输出。表中唯一窗口较小的是 Claude Haiku 4.5,200K。

来自 Anthropic 文档的两条实操提醒:

  • 官方 SDK 里 128K 的 max_tokens 必须配合流式调用,非流式请求在这个量级会撞 HTTP 超时。需要长输出时用 SDK 的 stream 辅助方法,最后再取完整消息。
  • 1M 窗口不等于每次都该塞 1M token。在这些价位上输入 token 是成本大头,长上下文要配合提示缓存(缓存读取只是输入价的一小部分:Opus 5.5 和 Sonnet 5.5 为每百万 0.20 美元,Fable 5.1 为 0.25 美元),而且只把稳定、复用的内容放进缓存前缀。

输出速度与延迟

Anthropic 没有公布每个模型统一的每秒 token 数,所以这一节只做定性比较。顺序符合直觉:Haiku 首 token 最快、流式吐字最快,Sonnet 其次,Opus 和 Fable 最慢,因为它们在生成前后思考得更多。实践中有三件事会改变这个顺序:

  1. effort 档位。 当前模型默认开启思考,用 output_config.effort(low 到 max)控制深度。同一个请求在 low 和 high 之间的耗时差距可以很大。Anthropic 的建议是:新模型的低 effort 往往能追平上一代的高 effort,所以先调 effort,再考虑降档。
  2. 快速模式。 Claude Opus 5.5 和 Opus 5 提供研究预览阶段的 fast mode,同一模型输出速度最高可达 2.5 倍,单价更高(按 Anthropic 文档,Opus 5.5 为 8 / 40 美元)。仅限 Claude API,且有独立的速率限制。
  3. 请求形态。 用 .stream() 流式返回,无论哪个档位都能立刻看到 token;长的非流式请求在任何模型上都显得慢。

价格梯度对选型的含义

从表格自上而下读,输入单价大致按 10、4、2、0.10 的阶梯跨过 Fable、Opus、Sonnet、Haiku,输出价是输入价的 5 倍。由此可以推出几条规则:

  • 非交互任务全部走批处理。 Anthropic 的 Message Batches API 异步处理请求,各档位都按标准价的 50% 计费。夜间分类、历史回填、评测跑批都应该放这里。
  • 先缓存,再降档。 如果每次请求 70% 是重复的系统提示或文档,在 Opus 上缓存它可能比在 Sonnet 上不缓存更便宜。
  • 按「完成一个任务」算成本,不按单次请求算。 便宜的模型如果要多重试几次、多跑几轮代理才能完成,就不便宜。这是选型中最常见的误区。

不同开发场景该选哪个 Claude 模型

场景

首选

备选

理由

编码代理(Claude Code、Codex 式循环)

claude-opus-5-5

claude-sonnet-5-5

长工具调用链受益于高档位;Opus 5.5 的价格让它能当默认

最难的推理、长程自主运行

claude-fable-5-1

claude-opus-5-5

能力顶格;为拒答保留备选(见下文)

长文档分析(合同、日志、代码库)

claude-sonnet-5-5

claude-opus-5-5

两者都有 1M 窗口;Sonnet 让输入成本可控

批量分类 / 抽取 / 路由

claude-haiku-5-5

claude-sonnet-5-5

量大价低;再叠加 Batches 还能减半

低延迟聊天、自动补全、界面建议

claude-haiku-5-5,effort 设 low

claude-sonnet-5-5,effort 设 low

首 token 最快

评测中的 LLM 裁判

claude-sonnet-5-5

claude-haiku-5-5

判断稳定,又不用付顶级档价格

如果你是通过 OpenAI 兼容协议而不是原生 SDK 调 Claude,模型 ID 是同一串字符串;哪些参数会被映射、哪些会被忽略,见我们的 用 OpenAI SDK 调 Claude 一文。

API 调用时模型 ID 的写法

模型 ID 就是表中的完整字符串,不带日期后缀。旧文档和早期代码里常见 claude-3-5-sonnet-20241022 这种写法,当前模型不再使用这个模式,给当前 ID 追加日期会直接返回 404。Python SDK 写法:

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-opus-5-5",          # 精确 ID,不加日期后缀
    max_tokens=16000,
    output_config={"effort": "medium"},
    messages=[{"role": "user", "content": "总结附件中的故障报告。"}],
)
for block in response.content:
    if block.type == "text":
        print(block.text)

不确定某个模型对你的账号是否可用时,查 Models API 而不是猜:

for m in client.models.list():
    print(m.id, m.max_input_tokens, m.max_tokens)

每个模型对象都会返回上下文窗口(max_input_tokens)和输出上限(max_tokens),这比任何博客表格(包括本文)都可靠。第一次端到端调用可以参考 Claude API 怎么用 这篇从密钥到首次请求的演练。

换模型时会让代码报错的代际差异

选档位只是选型的一半,另一半是知道不同代际之间哪些请求参数变了。按 Anthropic 的迁移说明:

  • 思考配置。 Haiku 4.5 仍用 thinking: {type: "enabled", budget_tokens: N}。所有当前一代模型都用自适应思考({type: "adaptive"}),给 Opus 5.5、Sonnet 5.5 或 Fable 5.1 传 budget_tokens 会返回 400。Opus 5.5 和 Fable 5.1 完全不能关闭思考;Sonnet 5.5 关闭思考的方式是 thinking: {type: "between_tools"},且 effort 须在 high 或以下。
  • 默认 effort。 Opus 5.5 和 Haiku 5.5 默认 medium;Sonnet 5.5 和 Fable 5.1 默认 high。显式写出来,换模型时质量和延迟才不会悄悄变化。
  • 强制工具调用。 tool_choice: {type: "any"} 和 {type: "tool", name: ...} 在 Opus 5.5、Sonnet 5.5、Fable 5.1 上返回 400。如果强制调用只是为了拿到 JSON,改用 auto 加工具上的 strict: true,或者结构化输出。
  • 助手预填。 4.6 及之后的全系都拒绝预填最后一个 assistant 轮次,改用 output_config.format 或系统提示约束格式。
  • 思考块绑定模型。 一个模型产出的思考块,在换到另一个模型续聊时会被丢弃(不计费),所以对话中途降级会丢掉之前的推理,而不是报错。

降级与备选策略

只在首选模型健康时才能工作的选型是不完整的。三种机制,按自动化程度从高到低:

  1. 服务端拒答回退。 在 Fable 5.1、Opus 5.5、Opus 5、Sonnet 5.5 上,Anthropic 的安全分类器可能以 HTTP 200 返回 stop_reason: "refusal"。API 提供可选的 fallbacks 参数(beta),在同一次调用内按拒答类别把请求转到备选模型重跑。读 content 之前一定先检查 stop_reason。
  2. 过载与限流回退。 收到 529 过载或 429 限流时,先按退避重试,再对该请求降一档。降档清单要短且有序:claude-opus-5-5 到 claude-sonnet-5-5 到 claude-haiku-5-5。重试节奏见我们的 Claude API 529 overloaded 错误 一文。
  3. 按任务路由。 不要全局只定一个模型,而是在配置里按任务类型定模型,每条路由各有各的备选。上面那张场景表落到工程里就是一份配置文件。

把三者组合起来的最小写法:

import anthropic

ROUTE = {
    "agent":    ["claude-opus-5-5", "claude-sonnet-5-5"],
    "classify": ["claude-haiku-5-5", "claude-sonnet-5-5"],
}

def ask(route: str, messages: list) -> str:
    client = anthropic.Anthropic()
    last = None
    for model in ROUTE[route]:
        try:
            r = client.messages.create(model=model, max_tokens=4096, messages=messages)
            if r.stop_reason == "refusal":
                last = r
                continue
            return next(b.text for b in r.content if b.type == "text")
        except (anthropic.RateLimitError, anthropic.InternalServerError) as e:
            last = e
    raise RuntimeError(f"route {route} 的所有模型都失败了: {last}")

SDK 自带的重试(默认两次、带退避)保持开启,上面的循环只处理重试耗尽之后的情况。

小结

通用工作从 Sonnet 5.5 起步,智力敏感和代理型路由上 Opus 5.5,大批量任务交给 Haiku 5.5 加 Batches,最难的那一小块留给 Fable 5.1。先调 effort 再换档,先缓存再降级,模型 ID 严格按 Anthropic 公布的字符串写。ROIBest AI 通过 OpenAI 兼容接口提供这些 Claude 模型,无论用原生 SDK 还是 OpenAI 协议客户端,模型 ID 字符串都是同一套。

常见问题

编码代理最适合用哪个 Claude 模型做默认?

Claude Opus 5.5(claude-opus-5-5)。Anthropic 的 SDK 指南把它作为新接入的默认模型,每百万 token 4 / 20 美元的价格低于上一代 Opus,同时保留 1M 上下文和 128K 输出。

Claude Sonnet 5.5 比 Sonnet 5 便宜吗?

根据 Anthropic 定价页,两者价格相同(每百万 token 2 / 10 美元)。Sonnet 5.5 是更新的一代,effort 档位经过重新校准,除非你明确需要 Sonnet 5,否则选 5.5。

所有 Claude 模型都支持 1M token 上下文吗?

所有当前一代模型都支持,4.6 代之后的 Opus 和 Sonnet 也支持。可调用列表里的例外是 Claude Haiku 4.5,窗口为 200K;它的继任者 Haiku 5.5 已升级到 1M。

用 OpenAI 兼容客户端时模型 ID 一样吗?

一样。无论原生 Anthropic SDK 还是 OpenAI 协议客户端,模型 ID 都是 claude-sonnet-5-5 这样的普通字符串;不同的是哪些请求参数会被映射,而不是模型名。