更好的模型:更糟的工具
Armin 报告了一个他在 Pi 上开发时遇到的奇怪问题:简而言之,新版 Claude 模型有时会在嵌套的 edits[] 数组中调用 Pi 的编辑工具时,附带上多余的、凭空捏造的字段。而且不是 Haiku 或某个小模型:是 Opus 4.8。编辑本身通常是正确的,但由于模型捏造了不存在的键,参数与 schema 不匹配,Pi 因此拒绝该工具调用并要求重试。单就这一点并不令人意外,因为模型有时会输出格式错误的工具调用——尤其是小模型。让我惊讶的是,这种现象在较新的 Anthropic 模型上反而更严重:Opus 4.8 和 Sonnet 5 都表现出此问题,而老模型却没有。换句话说,该系列中 SOTA 模型在遵守这个特定工具 schema 方面比它们的“哥哥姐姐”更差。Armin 推测,这是因为较新的 Anthropic 模型经过了专门训练(很可能是通过强化学习(Reinforcement Learning)),以更好地使用内置在 Claude Code 中的编辑工具。这带来了一个不幸的副作用:其他编码框架(如 Pi)可能会发现自己定制的编辑工具更容易被错误使用。Claude 的编辑工具使用的是 search and replace(搜索替换)。OpenAI 的 Codex 则使用 apply_patch 机制替代,OpenAI 过去曾谈到他们的模型是如何被训练以有效使用该工具的。这是否意味着像 Pi 这样的第三方编码框架应该实现多种编辑工具,以便能够根据用户选择的基础模型来选用性能最佳的那一种?