文章《Better Models: Woes Tools》探讨了Anthropic新模型在工具调用方面出现的一个反常现象:更先进的模型(如Opus 4.8和Sonnet 5)在使用Pi的编辑工具时,有时会在调用中添加多余的、不符合预定义schema的字段,导致调用失败。而较旧的模型则无此问题。
核心问题:模型在生成工具调用时,虽然核心参数(如旧文本和新文本)通常是正确的,但会在嵌套的edits[]数组中凭空添加多余的键(如requireUnique、type、in_file等)。该问题具有上下文依赖性,在复杂的历史会话或多轮交互中更易复现。
工具调用机制:工具调用本质上是基于文本的带内信号。模型通过特殊的标记(如Anthropic的ANTML)来构造调用。工具schema的执行主要有两种方式:一种是模型生成JSON后验证,另一种是使用语法感知(约束)解码来阻止无效token的生成。在无约束的情况下,模型仅依赖于学习到的惯例。
问题根源分析:作者推测,这是由于强化学习训练环境的影响。Anthropic的官方客户端(如Claude Code)采用了宽松的容错机制,能够自动修复错误的工具调用(例如,忽略未知键、进行参数别名匹配)。这可能导致模型在训练中学会了“不精确”的调用方式,并将这种行为泛化到了其他schema不同的工具上。换句话说,模型可能被过度适应了其原生训练环境(Claude Code的特定工具schema),当面对不同的工具schema时,其强先验(prior)反而可能导致不匹配的输出。
严格模式:文章指出,在Anthropic的API中启用strict工具模式可以消除此问题,因为该模式会强制采样过程遵循JSON schema。然而,Anthropic对工具定义的复杂性有限制,这可能解释了为何某些客户端(如Claude Code)默认未启用严格模式。
影响与启示:
- 工具schema并非中立:模型的性能受到其训练后环境所接触的特定工具schema的显著影响。对于使用与训练环境不同的工具schema的开发者来说,可能会遇到意想不到的兼容性问题。
- 封闭生态的风险:由于Anthropic模型和其默认训练环境(Claude Code)是闭源的,外部开发者无法确切知晓其强化学习的具体细节。这使得预测和适配模型在新工具上的行为变得更加困难。
- 对约束解码的考量:此问题促使作者重新审视严格约束解码的价值。尽管约束解码可能有质量权衡,但为了确保工具调用在复杂场景下的可靠性,它可能成为必要的保障。
总之,文章揭示了更强大的模型可能因其训练方式而在特定工具交互中表现更差,并强调了在模型训练与工具设计之间考虑兼容性的重要性。作者已在Pi的跟踪器上提交了该问题以供讨论。