Skip to content
TopicTracker
来自 lucumr.pocoo.org查看原文
译文语言译文语言

更好的模型:更差的工具

近期研究发现,Anthropic 的新一代模型(Opus 4.8 和 Sonnet 5)在调用 Pi 的编辑工具时,会在嵌套的 edits[] 数组内凭空生成额外的字段(如 requireUnique、oldText2、type 等),导致工具调用被拒绝。尽管实际编辑内容完全正确,但模型会随机添加不存在的键。这并非随机退化,而是训练产物——新一代模型在强化学习阶段高度适配了 Claude Code 的平坦编辑工具格式(old_string/new_string),导致对其他模式(如 Pi 的嵌套结构)的遵循能力下降。即使模型理解 schema,也会在嵌套 JSON 的高熵区域(多行字符串结束后)随机采样不存在的字段名。这一问题揭示了闭源模型在单一工具生态中过度优化带来的风险:工具 schema 不再中立,其他工具的兼容性可能因此受损。

背景速读

- Armin Ronacher(这一领域的知名开发者,Flask、Jinja2等Python框架的作者)发文指出,Anthropic最新的大模型(Opus 4.8、Sonnet 5)反而比老版本更不遵守第三方工具的模式(schema),会随意编造工具参数中的字段名,导致工具调用失败。 - Pi 是一个开源的环境自动修复工具(由 earendil-works 开发),它自己定义了一套文件编辑工具的 JSON 参数格式(如 edits 数组内要求 oldText/newText)。新 Cluade 模型在调用时经常凭空添加 requireUnique、oldText2、type 等未在 schema 中定义的键。 - 原因在于 Anthropic 的闭源工程工具 Claude Code 内部有自己的编辑工具格式(扁平化的 old_string/new_string + 可选标志),并且 Claude Code 客户端本身对模型输出的各种"脏数据"非常宽容(别名映射、字段过滤、自动修复)。最新模型在强化学习中适应了 Claude Code 的生态,反而对非 Claude Code 的工具格式产生了"偏见"。 - 如果开启 Anthropic API 的 strict 模式(服务端约束采样,禁止模型生成 schema 之外的键),问题会消失。但 strict 模式对工具定义的复杂度有限制,Claude Code 自身也没有启用它。 - 相比之下,OpenAI 的 Codex 模型没有出现同类退化,且其工具调用格式(harmony)和开放的工具链(gpt-oss)透明度更高。 - 核心教训:工具模式并非中立——后训练阶段在单一封闭工具生态(Claude Code)中优化的模型,可能与其他工具集越来越不兼容。

相关报道