
深度分析:为何更强大的AI模型在工具调用上表现更差?
知名开发者Armin Ronacher近期发现,Anthropic最新的Claude模型(如Opus 4.8和Sonnet 5)在处理特定工具调用Schema时,表现竟然优于其旧版本。这些SOTA模型在调用Pi的编辑工具时,会自行发明不存在的字段,导致JSON Schema校验失败。这一现象揭示了大型语言模型在追求更高智能的过程中,可能在结构化指令遵循方面出现的“反向进化”问题。
核心要点
- 模型退化现象:最新的Claude Opus 4.8和Sonnet 5模型在工具调用准确性上不如旧版模型。
- 虚构字段问题:模型在调用Pi编辑工具时,会在嵌套的
edits[]数组中发明Schema中不存在的字段。 - Schema校验失败:尽管编辑内容本身通常正确,但由于参数不符合定义,导致工具调用被拒绝并要求重试。
- 底层机制局限:工具调用本质上是基于文本的带内信令(In-band signaling),依赖于模型对特定格式的训练,而非真正的逻辑耦合。
详细分析
SOTA模型的“反向进化”困境
Armin Ronacher在测试中发现了一个令人困惑的现象:在处理Pi的编辑工具时,Claude家族中最先进(SOTA)的模型——Opus 4.8和Sonnet 5,表现出了比旧版本更差的Schema遵循能力。具体表现为,这些新模型在生成工具调用的JSON参数时,会无中生有地添加一些虚构的键值对。这种行为在较小的模型或旧版模型中反而不常见。这意味着,模型能力的提升并不总是线性的,在某些特定的结构化任务中,更强大的模型可能会因为过度泛化或训练偏差而偏离严格的指令约束。
工具调用的本质:文本与标记的博弈
要理解为何会出现这种错误,必须深入工具调用的底层实现。工具调用并非某种魔法接口,而是通过在Prompt中加入特殊标记实现的带内信令。系统会将可用的工具列表和系统提示词喂给模型,模型在生成过程中,如果识别到需要调用工具,就会按照训练好的格式输出一段文本。API服务器随后会解析这段文本。由于模型是基于大量示例进行强化学习的,当它面对复杂的嵌套结构(如文件编辑工具的edits[]数组)时,可能会产生错误的联想,从而输出不符合预定义Schema的冗余信息。
行业影响
这一发现对AI应用开发者具有重要的警示意义。首先,它打破了“模型越新、性能越好”的固有认知,强调了在模型版本更迭时进行回归测试的必要性。其次,对于依赖高度结构化输出的生产环境,开发者可能需要更复杂的验证逻辑或更精细的提示词工程来约束SOTA模型的“创造力”。这也反映出LLM在处理复杂嵌套Schema时仍存在鲁棒性短板,未来模型训练可能需要在通用推理能力与严格格式遵循之间寻找新的平衡点。
常见问题
问题:为什么最新的Claude模型会出现工具调用错误?
根据Armin Ronacher的观察,Opus 4.8和Sonnet 5在生成工具调用参数时会“发明”Schema中不存在的字段。这通常是因为模型在处理复杂嵌套结构时,未能严格遵守JSON Schema的约束,导致输出的参数无法通过API校验。
问题:这种退化现象在所有模型中都存在吗?
并非如此。实验显示,较旧的Claude模型在处理相同的工具Schema时表现得更加稳定,没有出现新模型中那种虚构字段的问题。这表明这种特定的退化可能与新模型的训练数据或强化学习策略有关。
问题:作者为什么没有测试Fable模型?
作者表示他有意没有测试Fable模型,因为他不确定Anthropic运行的分类器是否会因为某些原因将他的请求静默降级到Opus模型,从而影响测试结果的准确性。


