知识库成本约 7 分钟

按任务选模型:Opus、Sonnet、Haiku 怎么选 ​

一句话答案:三个档位是同一家族在「能力 vs 成本」曲线上的三个点位。Haiku 用于高并发、简单判断、延迟敏感的工作;Sonnet 是编码和大多数生产任务的默认;Opus 用于困难推理、长时间运行的 agent、出错代价高的决策。一个习惯就能砍掉最多的花费:从比你直觉高一档的模型开始,只有质量真的不够才升级。

三个档位各做什么 ​

结论:不要问「哪个最强」,要问「这个任务需要什么」。

档位适合不适合
Haiku(最快、最便宜)分类、字段抽取、摘要、路由、简单改写、安全预检查、高频短问答跨文件代码修改、复杂算法、架构权衡、高风险安全判断
Sonnet(居中,生产默认)代码生成与重构、修 bug、写测试、代码解释、带工具调用的 agent 循环、文档生成—
Opus(最强、最贵)架构规划、困难 bug 排查、深度 code review、长上下文推理、上线前最终检查常规任务(花钱买用不上的能力)

按场景对照 ​

场景建议档位原因
客服对话Haiku高频、短回答,延迟比深度重要
代码生成与重构Sonnet日常编码里质量与成本平衡最好
复杂多步 agentOpus一步走错的代价高
架构与 code reviewOpus大上下文上的深度推理胜过吞吐量
批量分类与打标Haiku简单重复的判断,单次成本最低
长文档分析Sonnet中档价格配大上下文,质量不够再升 Opus
内容撰写Sonnet输出多,输出价主导账单
抽取成 JSONHaikuschema 约束的输出要的是速度

主力档位为什么通常是 Sonnet ​

结论:Sonnet 覆盖了绝大多数日常工程任务:仓库导航、代码生成、重构、写测试、调试、解释代码、接口改造,以及带工具调用的 agent 循环。它的优势不是在每道极限题上压过 Opus,而是在质量、速度与稳定性之间取得了很好的平衡,延迟也更容易被用户接受。

在 Claude Code、Cursor 里的代码助手、PR 辅助审查、自动修复脚本等场景,Sonnet 通常就够了。

Opus 留给哪些任务 ​

结论:当一个低质量回答的代价很高,后续返工也很贵时,用 Opus 是划算的。

  • 需求本身模糊,需要先澄清边界再拆方案;
  • 架构决策影响多个服务、数据库 schema 与部署流程;
  • code review 涉及性能、安全、并发、边界条件与长期可维护性;
  • bug 藏在长链路调用、异步任务、缓存、权限或状态机里;
  • 需要在长上下文中综合大量文件、日志与历史决策。

一个能砍掉最多花费的习惯 ​

结论:从比你直觉高一档的模型开始,只有质量真的不够才升级。

实践上:

  1. 默认档位设成 Sonnet;
  2. 记录失败的任务(测试没过、评审被打回、用户要求重做);
  3. 只对失败的那类任务升级到 Opus,成功率提升的收益远大于全面升档的成本;
  4. 分类、抽取、路由这类步骤下沉到 Haiku。

省下来的不只是单价,还有每一轮重发的上下文,原理见为什么 Agent 比聊天更烧 token。

更好的做法是在调度层自动做这件事:根据任务类型、上下文长度、失败次数和测试结果选模型,而不是让用户每次手动判断。缓存也是同一层的事,能命中前缀的请求单价低得多,见提示缓存原理。

用你自己的任务评测,而不是排行榜 ​

结论:公开基准只说明模型在别人设计的问题上的表现。评测你自己的任务:同一组真实 prompt、真实上下文、真实验收标准,分别在三档上跑,记录通过率、延迟、JSON 可解析率、工具调用成功率、返工次数。

对 coding workflow 还要看:能否遵循现有代码风格、会不会过度改动无关文件、能否正确理解测试失败、没证据时会不会瞎猜。

跑一轮你就知道自己团队的默认档位该设在哪里,而不是照搬别人的结论。

新档位要不要立刻上生产 ​

结论:不要因为它更新更快就换。放进你自己的评测集,用真实 prompt 和真实验收标准测一轮:稳定格式、可重复行为、工具调用可靠性、失败模式可控,往往比单次回答的惊艳程度更重要。

常见问题 ​

开发者应该先用哪个 Claude 模型? ​

大多数工作流先从 Sonnet 开始:编码、工具调用、改仓库、写测试、调试和常规 API 任务都能覆盖,且延迟更容易接受。

什么时候用 Opus 而不是 Sonnet? ​

任务复杂、模糊或影响面大时:架构规划、困难 bug 排查、深度 code review、长上下文推理、上线前最终检查。

Haiku 最适合做什么? ​

高并发、低复杂度的任务:分类、字段抽取、摘要、路由、简单改写、安全预检查和请求分流。

换模型要改代码吗? ​

同一个 Base URL 和 Key,换模型只是改请求里的模型 ID。可以先试便宜档,失败再重试更大的档。

相关阅读 ​