模型越强,工具越差?Claude Opus 4.8 在第三方编程工具中编造字段导致调用失败
Armin Ronacher 发现新版 Claude 模型(Opus 4.8、Sonnet 5)在调用第三方编程工具 Pi 的自定义编辑工具时,会凭空编造额外字段,导致工具调用被拒绝。这源于 Anthropic 针对自家 Claude Code 编辑工具的强化训练,却意外破坏了其他工具的兼容性。本文分析问题根源,并探讨对中文开发者使用类似工具的影响。
一句话看懂
新版 Claude Opus 4.8 在调用第三方编程工具 Pi 的编辑工具时,会编造 schema 中不存在的字段,导致工具调用失败,而旧模型反而表现更好。
详细发生了什么
知名 Python 框架 Flask 作者 Armin Ronacher 在开发编程助手 Pi 时,发现一个奇怪的问题:新版 Claude 模型(Opus 4.8 和 Sonnet 5)在调用 Pi 的自定义编辑工具时,会在 edits[] 数组中凭空添加一些 schema 中没有定义的字段。虽然编辑内容本身通常是正确的,但参数不符合 schema,导致 Pi 拒绝该工具调用并要求重试。
更令人困惑的是,这个问题只出现在最新最强的模型上——Opus 4.8 和 Sonnet 5 都会犯错,而旧版模型(如 Opus 4.5、Sonnet 4)则完全正常。换句话说,Anthropic 家族中 SOTA 模型在特定工具 schema 上的表现反而比老款更差。
Armin 推测,这是因为 Anthropic 通过强化学习(Reinforcement Learning)专门训练了新模型,使其更擅长使用 Claude Code 内置的编辑工具(基于 search-and-replace)。这种针对性训练意外地导致模型在调用其他第三方工具(如 Pi 的自定义编辑工具)时,倾向于模仿 Claude Code 工具的行为,从而产生 schema 之外的字段。
中文圈视角
这个问题对中文开发者使用 AI 编程助手有直接影响。目前国内流行的编程助手如 CodeGeeX、通义灵码等,大多也采用类似 tool calling 机制来执行代码编辑。如果模型供应商(无论是 OpenAI、Anthropic 还是国内厂商)针对自家工具进行过度优化,可能导致第三方工具出现兼容性问题。
对于使用 Claude API 开发中文编程助手的团队来说,这意味着需要更频繁地更新工具 schema 验证逻辑,或者像 Armin 建议的那样,为不同模型实现多个编辑工具版本。好消息是,国内模型如 DeepSeek、Qwen 等目前尚未出现类似问题,但未来随着它们对自家工具链的强化训练,类似风险同样存在。
此外,这个问题也提醒开发者:不要盲目追求最新最强模型。在特定工具调用场景下,旧模型可能更稳定可靠。建议在集成第三方工具时,对模型版本进行充分测试,并保留降级到旧模型的选项。
几条值得记住的细节
- 问题出现在 Claude Opus 4.8 和 Sonnet 5 上,旧版 Opus 4.5、Sonnet 4 无此问题
- 模型会在
edits[]数组中编造 schema 中不存在的字段,导致工具调用被拒绝 - 根本原因可能是 Anthropic 针对 Claude Code 内置编辑工具的强化训练
- OpenAI Codex 使用不同的 apply_patch 机制,且同样针对该工具进行了训练
- 第三方编程工具可能需要为不同模型实现多个编辑工具版本
一句话总结
新模型并非总是更好——在工具调用场景中,针对性训练可能破坏通用兼容性,选模型时要兼顾能力与稳定性。