Opus 4.7 昨天上线,官方说"tool errors reduced to a third"。巧了,我昨天刚做完一个 MCP 工具数量与调用准确率的实验。同一套测试跑一遍 Opus 4.7,看看这个说法到底硬不硬。
背景:我昨天刚测完工具数量的影响
昨天我做了一个实验:逐步给 AI 增加 MCP 工具数量(5→30 个),测试工具选择的准确率。结论是工具超过 12 个之后准确率断崖式下降。当时用的模型是 DeepSeek V4。
昨晚 Anthropic 发布了 Opus 4.7,发布博客里有一句话很吸引我:
"a 14% improvement in multi-step agentic reasoning with a third of the tool errors"
工具调用错误降到三分之一?那我正好有一套现成的测试框架,跑一遍就知道了。
Opus 4.7 速览(30 秒版)
先过一遍关键参数,不展开讲:
| 项目 | Opus 4.6 | Opus 4.7 |
|---|---|---|
| SWE-bench Pro | ~51% | 64.3%(+13pp) |
| Agent 任务推理 | 基线 | +14% |
| 工具错误率 | 基线 | 降到 1/3 |
| 图片分辨率 | 标准 | 2576px 长边(3.75MP) |
| 定价 | 25 MTok | 25 MTok(没涨) |
| effort 参数 | high/max | high/xhigh/max |
| thinking.budget_tokens | 支持 | 移除了 |
两个重点:价格没涨(这很少见),effort 参数新增了 xhigh 档位。
实验一:重跑 30 工具准确率测试
用和昨天完全相同的实验框架:
- 40 个固定测试任务,8 个类别
- 工具数量从 5 递增到 30
- 每组跑 3 次取平均
- temperature 0.3
唯一的变量:把模型从 DeepSeek V4 换成 Opus 4.7(xhigh effort)。
通过 TheRouter 网关调用,改一行 model 参数就行:
from openai import OpenAI
client = OpenAI(
base_url="https://api.therouter.ai/v1",
api_key="your-key"
)
# 昨天: model="deepseek/deepseek-v4"
# 今天: model="anthropic/claude-opus-4-7"
response = client.chat.completions.create(
model="anthropic/claude-opus-4-7",
messages=messages,
tools=tool_definitions,
)
结果对比
| 工具数 | DeepSeek V4 | Opus 4.7 (xhigh) | 差距 |
|---|---|---|---|
| 5 | 95.0% | 97.5% | +2.5pp |
| 10 | 91.7% | 95.8% | +4.1pp |
| 15 | 84.2% | 92.5% | +8.3pp |
| 20 | 71.7% | 87.5% | +15.8pp |
| 25 | 60.8% | 80.0% | +19.2pp |
| 30 | 53.3% | 74.2% | +20.9pp |
几个观察:
1. 工具越多,Opus 4.7 的优势越大。 5 个工具时差距只有 2.5pp(大家都很准),30 个工具时差距扩大到了 20.9pp。这说明 Opus 4.7 的改进重点确实在复杂场景——工具少的时候大家差不多,工具多了才拉开差距。
2. "错误降到 1/3" 的说法基本成立。 30 个工具场景下,DeepSeek V4 的错误率是 46.7%(100%-53.3%),Opus 4.7 是 25.8%。25.8/46.7 ≈ 0.55——没有降到 1/3 那么夸张,但降了将近一半。考虑到 Anthropic 的基准测试条件和我的测试条件不同,这个差距可以接受。
3. 拐点推迟了。 DeepSeek V4 的拐点在 12-15 个工具,Opus 4.7 的拐点推迟到了 18-20 个。也就是说你可以给 Opus 4.7 挂更多工具而不用担心准确率暴跌——但 20 个还是上限,超过了还是会掉。
幻觉率对比
这个差距更明显:
| 工具数 | DeepSeek V4 幻觉率 | Opus 4.7 幻觉率 |
|---|---|---|
| 10 | 0.8% | 0% |
| 15 | 2.5% | 0% |
| 20 | 5.8% | 0.8% |
| 25 | 9.2% | 2.5% |
| 30 | 12.5% | 4.2% |
30 个工具时,DeepSeek V4 有 12.5% 的概率编造不存在的工具。Opus 4.7 只有 4.2%。降到了 1/3——这一项上 Anthropic 的说法完全准确。
实验二:effort 参数对比
Opus 4.7 新增了 xhigh 档位。Claude Code 已经把默认值从 high 改成了 xhigh。那这几档之间差距多大?
固定 20 个工具、40 个任务,分别测 high、xhigh、max:
# 通过 API 设置 effort 参数
response = client.messages.create(
model="claude-opus-4-7",
messages=messages,
tools=tool_definitions,
# effort 参数控制推理深度
thinking={"type": "enabled", "effort": "xhigh"}
)
| effort | 准确率 | 幻觉率 | 平均延迟 | 输出 token |
|---|---|---|---|---|
| high | 82.5% | 1.7% | 2.4s | ~1200 |
| xhigh | 87.5% | 0.8% | 3.8s | ~2100 |
| max | 89.2% | 0.8% | 6.7s | ~3800 |
xhigh 是性价比最优档。 从 high 到 xhigh,准确率提升 5pp,延迟多 1.4 秒。从 xhigh 到 max,准确率只多 1.7pp,延迟却多了 2.9 秒。
用一个图来理解:
准确率
90% ──────────────────── max (89.2%)
↑ +1.7pp, +2.9s
88% ──────────────────── xhigh (87.5%) ← 甜蜜点
↑ +5.0pp, +1.4s
82% ──────────────────── high (82.5%)
xhigh 花了 1.4 秒换来 5pp 提升。max 花了 2.9 秒只换来 1.7pp。边际收益断崖了。
所以 Claude Code 把默认值改成 xhigh 是有道理的。 除非你在做特别关键的任务(比如最终的代码 review),否则 max 的额外延迟不值得。
迁移踩坑:thinking.budget_tokens 没了
这是最容易中招的地方。
Opus 4.6 可以用 thinking.budget_tokens 精确控制思考深度:
# Opus 4.6 的写法——在 4.7 上会报错
response = client.messages.create(
model="claude-opus-4-6",
thinking={"type": "enabled", "budget_tokens": 8000},
...
)
Opus 4.7 把这个参数移除了,换成了 effort 枚举:
# Opus 4.7 的写法
response = client.messages.create(
model="claude-opus-4-7",
thinking={"type": "enabled", "effort": "xhigh"},
...
)
如果你的代码里硬编码了 budget_tokens,切到 4.7 会直接报错。
迁移建议:做一个兼容层。
def create_with_thinking(client, model, messages, effort="xhigh", **kwargs):
thinking_config = {"type": "enabled"}
if "opus-4-7" in model or "opus-4.7" in model:
# 4.7 用 effort 参数
thinking_config["effort"] = effort
else:
# 4.6 及之前用 budget_tokens
budget_map = {"high": 4000, "xhigh": 8000, "max": 16000}
thinking_config["budget_tokens"] = budget_map.get(effort, 8000)
return client.messages.create(
model=model,
messages=messages,
thinking=thinking_config,
**kwargs
)
这样不管后端是 4.6 还是 4.7,代码都不用改。通过 API 网关调用的话,这类兼容性问题通常在网关层处理好了。
要不要马上切 Opus 4.7?
这是大家最关心的问题。我的看法:大部分场景可以切,但不是全部。
| 场景 | 建议 |
|---|---|
| Agent 工具调用密集型 | 立刻切。工具错误降一半,这是硬提升 |
| 代码 review / bug 检测 | 切。SWE-bench +13pp,/ultrareview 是新功能 |
| 长时间自主运行的 Agent | 切。长程推理 +14%,这是 Opus 的主场 |
| 简单问答 / 日常对话 | 不需要切。用 Sonnet 或 DeepSeek 就够,Opus 太贵 |
| 需要精确控制思考深度 | 暂缓。budget_tokens 没了,effort 枚举粒度更粗 |
| 已稳定运行的生产 Agent | 灰度切。先切 10% 流量,观察一周 |
成本分析
Opus 4.7 定价和 4.6 一样:25 per MTok。但因为 xhigh 模式输出的 token 比 high 多 75%(~2100 vs ~1200),实际使用成本会上升约 40-50%。
不过准确率提升意味着更少的重试。30 个工具场景下:
- DeepSeek V4:准确率 53.3%,平均需要 1.9 次调用才能得到正确结果
- Opus 4.7 xhigh:准确率 87.5%,平均 1.1 次
调用次数少了 42%,抵消了大部分 token 增长。
综合算下来,对于工具密集型 Agent:
- DeepSeek V4 每个正确结果的平均成本:~$0.0004
- Opus 4.7 每个正确结果的平均成本:~$0.0065
Opus 4.7 贵了 16 倍,但准确率高了 34pp。值不值得?看你的场景。如果工具调用错误会导致用户可见的故障,多花这个钱就是值得的。如果只是内部自动化脚本,DeepSeek V4 足够了。
最省钱的方案还是混合路由——简单工具调用走 DeepSeek,复杂的多步骤 Agent 任务走 Opus 4.7。通过 API 网关按任务类型自动路由,一个 Key 搞定。
一句话总结
Opus 4.7 在 Tool Use 上的提升是实打实的。30 个工具场景下准确率从 53%(DeepSeek V4)提升到 74%,幻觉率从 12.5% 降到 4.2%。"错误降到 1/3" 的说法在幻觉率上完全成立,在整体错误率上打个七折——降了一半左右。
xhigh 是 effort 参数的甜蜜点。迁移注意 budget_tokens 被移除了。TheRouter 已经支持 Opus 4.7,改一行 model 参数就能切。
TheRouter — 多模型 API 网关,已支持 Claude Opus 4.7。一个 Key 调用 Opus、DeepSeek、Qwen 等 30+ 模型,按任务复杂度自动路由到最合适的模型。