模型更强,工具调用反而更差?

Simon Willison15 小时前
分享到

一位开发者在开发 Pi 时遇到一个有些反直觉的问题:较新的 Claude 模型在调用 Pi 的编辑工具时,有时会在嵌套的 edits[] 数组中加入额外的、并不存在于 schema 中的字段。

更奇怪的是,出问题的并不是小模型,而是 Opus 4.8。模型生成的编辑内容本身通常是正确的,但参数结构不符合工具定义:模型会编造一些键,导致 Pi 拒绝这次工具调用,并要求模型重试。

这类格式错误本身并不罕见,语言模型偶尔会生成不合法的工具调用,尤其是较小的模型。但值得注意的是,这个问题似乎在更新的 Anthropic 模型上变得更明显:Opus 4.8 和 Sonnet 5 都会出现,而旧模型没有表现出同样的问题。换句话说,在这个特定工具 schema 上,同一家族中更新、更强的模型反而不如旧模型稳定。

一种可能解释是:较新的 Anthropic 模型被专门训练过,以更好地使用 Claude Code 内置的编辑工具。这种训练可能让模型更倾向于使用某种熟悉的编辑工具形态,从而在面对第三方编码环境中的自定义工具时,更容易把参数“套用”成它熟悉的格式。

这对第三方编码代理框架提出了一个实际问题:如果不同模型对不同编辑工具接口的适配程度不同,工具框架是否需要提供多套编辑工具,并根据用户选择的底层模型切换到表现最好的那一种?

目前常见的编辑工具设计并不一致。例如,Claude 的编辑工具采用搜索与替换方式;OpenAI Codex 则使用 apply_patch 机制。OpenAI 也曾讨论过其模型会针对这类工具使用方式进行训练。

这说明,随着模型越来越擅长特定产品内置工具,通用工具调用能力未必会同步提升。对编码代理开发者来说,工具 schema 的设计、模型适配和容错机制,可能会变得比过去更重要。

评论

请登录后发表观点

暂无数据