同一个任务,用哪个模型、开多大 effort、降级链怎么接,是一个多目标问题——而且四个维度里有一个最容易被当成不存在。
这篇记的是:我用来做这个判断的统一指标(不是单价,是「每个正确结果的全成本」)、四个候选方案各自的死法、缓存读价为什么会改变「哪个模型更便宜」的答案,以及降级为什么是一次 prompt 变更而不是换一个名字。
1. 前提:选型是一个多目标问题,指标要自己定义#
1.1 四个维度【事实】#
| 维度 | 是什么 | 常被忽略的点 |
|---|---|---|
| 能力 | 复杂推理、长程任务、工具调用准确性 | ”能力强”要用你自己的任务衡量,不是通用跑分 |
| 延迟 | 从请求到可用结果的时间 | 不是”快慢”一个数——首 token 延迟和总时长是两件事(流式场景看前者,批处理看后者) |
| 单价 | 输入 / 输出的每百万 token 价格 | 输入和输出的差价很大(通常 5 倍),所以”上下文长”和”话多”是两种不同的贵 |
| effort | 模型”花多大力气”的档位 | 这个维度最容易被当成不存在的。同一模型不同 effort 的成本和表现可以差好几倍 |
1.2 现价表【事实】(2026-09 核实)#
| 模型 | 输入 | 输出 | 上下文窗口 | 最大输出 | 定位 |
|---|---|---|---|---|---|
| Claude Fable 5.1 | $10 / MTok | $50 / MTok | 1M | 128K | 高难度推理、长程 Agent |
| Claude Opus 5 | $5 / MTok | $25 / MTok | 1M | 128K | 复杂 Agent 与企业任务 |
| Claude Sonnet 5 | $2 / MTok | $10 / MTok | 1M | 128K | 速度与智能的平衡点 |
| Claude Haiku 4.5 | $1 / MTok | $5 / MTok | 200K | 64K | 最快、接近前沿 |
【事实】缓存价格:写 1.25×(5 分钟 TTL)或 2×(1 小时 TTL),读 0.1×(Fable 5.1 / Mythos 5.1 是 0.025×)。
注意最后这一行——缓存读价的差异会让同一家的两个模型在长会话场景下的成本排序发生变化:Fable 5.1 的单价比 Fable 5 贵不了多少,但它的缓存读价是 1.00 每 MTok(1/4)。所以”哪个模型更便宜”这个问题,在长短会话下答案不同。
1.3 输出比输入贵 5 倍,这决定了优化方向【推导】#
Opus 5:输入 $5/MTok,输出 $25/MTok → 输出贵 5 倍text【推论】所以:
- “话多”比”上下文长”更贵(同等 token 数下)——一个啰嗦的 prompt 要求(“请详细解释每一步”)可能比多塞 10K 上下文还费钱
- 减少输出是最直接的省钱手段,但和”详细推理能提高准确率”直接冲突
- effort 的本质就是”用多少输出 token 换准确率”——它把上面这个冲突做成了一个可调旋钮
自检:为什么”哪个模型更便宜”这个问题,在短会话和长会话下答案可能不同?
2. 候选方案(先各自介绍,不比较)#
2.1 固定用最强模型【事实】#
全部流量走 Fable 5.1 或 Opus 5。实现最简单,没有路由逻辑,质量上限最高。
2.2 固定用最便宜模型 + 高 effort【事实】#
全部走 Haiku 4.5 或 Sonnet 5,把 effort 拉高来”补能力”。
2.3 按任务难度路由【事实】#
轻任务(分类、抽取、格式化)走小模型,重任务(多步推理、长程 Agent)走大模型。路由依据可以是规则(任务类型)、也可以是模型自己判断(先小模型试,不确定再升级)。
2.4 评测驱动的联合搜索【事实】#
把模型 × effort × prompt 当成一个联合空间来搜:用训练集搜索配置,用 held-out 验收。Anthropic 的 hillclimb 工具做的就是这件事——它会读失败的训练样本去定位该怎么改(补规则、换模型、调 effort)。
2.5 降级链路(“三角”里的第三条边)【事实】#
主模型不可用(限流、超时、故障)或成本超预算时,切到备用模型。要点是:
降级 ≠ 换模型名
降级 = 换一个"已经用你自己的评测验证过"的配置text3. 逐个淘汰(统一指标:每个正确结果的全成本)#
这是本卡最重要的一次口径选择。不能比”单次调用多少钱”,也不能比”准确率多高”——要合起来算:
每个正确结果的全成本 = (单次成本 + 失败率 × 单次失败代价) ÷ 成功率text【推导】这个公式把三个东西绑在了一起:单价、能力、以及失败在你业务里的代价。缺任何一项都没法选型。
3.1 为什么”固定最强”不一定对【推导】#
能力强不等于划算,因为存在”够用”这个门槛:
门槛以下:能力不足 → 失败 → 付失败代价(可能远高于模型费)
门槛以上:能力过剩 → 成功的边际收益很低,但你一直在付高价text【推论】所以问题不是”哪个最强”,而是”我的任务在哪个档位跨过门槛”。跨过门槛之后多付的能力钱,是纯浪费。
3.2 为什么”便宜模型 + 拉高 effort”是个陷阱【推导】#
看起来”用 effort 补能力”很合理,但它撞上 effort 曲线的凸性:
【事实】在 FrontierCode Diamond 上:
low effort:11.5% 得分,$5.35 / 任务
max effort:30.9% 得分,$19.00 / 任务
低档平均每分成本 = $5.35 / 11.5 = $0.465
边际每分成本 = ($19.00 − $5.35) / (30.9 − 11.5)
= $13.65 / 19.4 = $0.704text边际比低档的平均还贵 50%——曲线是凸的,后面的分越来越贵。
【事实】另一条曲线更极端。Humanity’s Last Exam(Fable 5.1,无工具):low 约 53% @ 2.23/题;而从次高档升到 max 这一步,只多约 0.5 个百分点,成本却多 46%——这 0.5 个点落在 run-to-run 的噪声里(原文:the gain inside the benchmark’s run-to-run noise)。
【取舍】高端的问题不只是贵,是”贵了却看不出差别”。 而低端也有自己的坑(见下)。
3.3 低 effort 的失败模式同样真实【事实】#
effort 设太低时,模型证据不足就收手:
- 少调工具(从 3 次搜索退化成只看第一条结果)
- 在困难步骤上少想
- 跳过它本来会自己做的检查
【事实】结果最危险的地方在于:答案看起来是完整的。 原文说得很直接——“The answer looks finished, but it’s built on partial information.”
【推论】所以 effort 的两个方向都会坏:低端坏在”看不出来它没查全”,高端坏在”看不出来它白花了钱”。
3.4 一条反直觉的推论:强模型 + 低 effort 可能压过 弱模型 + 高 effort【事实】#
【事实】在 CursorBench 3.2 上,Claude Fable 5.1 在低 effort 下达到 Fable 5 在高 effort 下的水平,成本约为三分之一。
两个原因:
① 新模型在低 effort 下"每个任务做的工作更少"(不是更笨,是不啰嗦)
② Fable 5.1 的缓存读价是 $0.25/MTok,Fable 5 是 $1.00/MTok
→ 即使按 Fable 5 的价格算,低 effort 的 Fable 5.1 也便宜约 40%text【推论】这说明”模型代际”和”effort 档位”不是同一个旋钮。降 effort 不等于降能力;升级模型 + 降 effort 可以同时改善成本和表现。所以选型应该在”模型 × effort”的二维空间里搜,而不是先选模型再定 effort。
3.5 胜出方案:分层路由 + 联合搜索 + 已验证的降级【取舍】#
主路径 :按任务难度路由到(模型 × effort)组合
调优路径 :在训练集上搜"模型 × effort × prompt",读失败样本决定改哪一项
验收 :held-out 集合(训练集饱和后就失去分辨力,见第 4 节)
降级路径 :预定义并验证过的备用配置;触发条件可观测;降级本身要打点text自检:为什么”用 effort 补能力”这个想法,在曲线上是站不住的?
4. 量化验证:用”每个正确结果的全成本”算两笔#
第一笔:那个客服 benchmark 的完整账(数据来自 3.2 / 3.4 的同一组实验)
起点:Opus 4.8 默认(high effort) → held-out 78.6%,成本约 5¢ / 工单
终点:Sonnet 5 低 effort + 补规则 → held-out 90.5%,成本 1¢ / 工单text设一次失败的代价 = $1(人工兜底 + 客诉,相对模型费是 20–100 倍):
原始配置:
每次尝试期望成本 = $0.05 + 0.214 × $1 = $0.264
每个正确结果 = $0.264 ÷ 0.786 = $0.336
最终配置:
每次尝试期望成本 = $0.01 + 0.095 × $1 = $0.105
每个正确结果 = $0.105 ÷ 0.905 = $0.116text【结论】每个正确结果的成本降到 34.5%(0.116),而模型单价只降到 1/5。
【关键】为什么不能只看单价? 因为单价降 80% 的同时成功率降了,失败代价吃掉了大部分收益。换成”更好的模型”也一样——如果失败代价是 1:
原始:(0.05 + 0.214 × 10) / 0.786 = $2.786
最终:(0.01 + 0.095 × 10) / 0.905 = $1.061
→ 比值仍是 38%,但绝对差距从 $0.22 拉到 $1.72text【取舍】失败代价越高,“选便宜的”这条路越危险,而”选对的”越值钱。 所以在算这笔账之前,你必须先回答:一次失败在我的业务里值多少钱?
第二笔:训练集饱和后就失去分辨力
同一个实验里:
训练集上:最终配置 98.9% vs 起点 98.9% → 打平!
held-out :最终配置 90.5% vs 起点 78.6% → 高 11.9 个点text【推论】两个结论的方向一致(降级是对的),但幅度完全不同。 训练集上你会说”没有损失”,held-out 上才是”明显更好”。
原因是天花板效应:98.9% 已经接近这个评测集能达到的上限,它没有空间再区分好坏。
【工程含义】当训练集接近饱和时,它是无效信号。 这时候唯一能回答”到底有没有变好”的,是没参与搜索的那部分数据。
自检:为什么”训练集上打平”不能证明”降级无损”?
5. 边界与常见误解#
| 常见说法 | 修正 |
|---|---|
| ”选跑分最高的” | 跑分是那些评测上的表现,不是你的任务分布上的。而且从 SimpleQA 数据看,准确率高和错误率低可以是相反方向(24% vs 22% 的准确率,对应 75% vs 26% 的错误率) |
| “便宜模型 + 拉满 effort = 性价比最优” | effort 曲线是凸的:边际每分成本(0.465);HLE 上最后一档多 0.5 分要多花 46%,落在噪声里 |
| ”effort 拉满最保险” | 反方向也有坑:effort 太低会证据不足就收手,而且答案看起来是完整的。两个方向都会坏,只能标定 |
| ”选型是一次性决策” | 它不是。模型迭代、缓存定价变化(Fable 5.1 读价 0.25)、effort 参数引入,都会让最优解移动。上面那个案例里,“换个更便宜的模型”最后反而更准 |
| ”降级就是把模型名换掉” | 换模型是最大的一次 prompt 变更。降级路径必须是用你自己的评测验证过的配置,而不是”顺手切一个" |
| "降级了质量差一点可以接受” | 降级的目标是保住可用性(不超时、不报错、不熔断),不是保住质量。所以要明确降级后的质量底线,并让它可观测——不知道自己在降级,比降级本身更危险 |
| ”只看单价就能比出谁便宜” | 必须用 每个正确结果的全成本 =(单次成本 + 失败率 × 失败代价)÷ 成功率。单价只是分子的一项 |
【取舍】读成一句话:选型不是选一个模型,是选一组”模型 × effort × prompt”配置,并且用你自己的失败代价把它们换算成同一个单位。