Simon Willison · 博客

更好模型:更差工具

Better Models: Worse Tools

二〇二六年七月五日 · 英文原文

Armin 报告了开发编码框架 Pi 时发现的问题:较新的 Anthropic 模型(Opus 4.8、Sonnet 5)在嵌套 `edits[]` 数组中调用编辑工具时,会附带凭空生成的字段,导致参数与 schema 不匹配,Pi 因此拒绝调用并要求重试。旧模型无此问题,即 SOTA 模型在该工具 schema 上表现更差。Armin 推测,这是由于新模型经强化学习训练以更好使用 Claude Code 内置的编辑工具,产生了副作用,使第三方框架(如 Pi)的自定义编辑工具更易被误用。

更好的模型:更差的工具

Armin 报告了一个他在开发 Pi 时遇到的奇怪问题:简而言之,较新的 Claude 模型有时会在嵌套的 edits[] 数组中调用 Pi 的编辑工具时,附带额外的、凭空生成的字段。而且不是 Haiku 或某个小模型:是 Opus 4.8。编辑本身通常是正确的,但参数与 schema 不匹配,因为模型生成了虚构的键,Pi 因此拒绝该工具调用并要求重试。这本身并不太令人意外,因为模型有时会输出格式错误的工具调用,尤其是小模型。让我惊讶的是,随着 Anthropic 新模型的推出,这个问题变得更严重了——Opus 4.8 和 Sonnet 5 都表现出这个问题,而旧模型则没有。换句话说,该系列中的 SOTA 模型在这个特定工具 schema 上的表现比它们的旧版更差。

Armin 推测,这是因为较新的 Anthropic 模型经过了专门训练(大概是通过强化学习),以更好地使用 Claude Code 内置的编辑工具。这带来了一个不幸的副作用:其他编码框架(如 Pi)可能会发现它们自己的自定义编辑工具更有可能被错误使用。Claude 的编辑工具使用搜索替换机制。OpenAI 的 Codex 则使用 apply_patch 机制,OpenAI 过去曾谈到他们的模型如何被训练以有效使用该工具。这是否意味着像 Pi 这样的第三方编码框架应该实现多个编辑工具,以便能够使用与用户选择的底层模型性能最佳的那个?

标签:armin-ronacher , ai , openai , generative-ai , llms , anthropic , llm-tool-use , coding-agents , pi

译自 Simon Willison · 博客 · 录于 二〇二六年七月五日