更好的模型:更差的工具
Armin Ronacher 報告了一個奇怪的問題:較新的 Claude 模型(如 Opus 4.8 和 Sonnet 5)在調用 Pi 的編輯工具時會憑空添加額外字段,導致工具調用失敗。而較舊的模型卻沒有這個問題。他推測,這是因為 Anthropic 通過強化學習讓新模型更擅長使用 Claude Code 內置的編輯工具,但副作用是其他代碼框架(如 Pi)的自定義工具被誤用的概率增加了。這引發了疑問:第三方代碼框架是否應該針對不同模型實現多種編輯工具?
在最新的博客文章中,Armin Ronacher 分享了一個他在開發 Pi(一個 AI 編程助手)時遇到的令人困惑的問題。他發現,較新的 Claude 模型(包括強大的 Opus 4.8 和 Sonnet 5)在調用 Pi 的編輯工具時,會在嵌套的 edits[] 數組中憑空添加一些不存在的字段。儘管編輯操作本身通常是正確的,但由於附加了模式中未定義的鍵,Pi 會拒絕該工具調用,並要求模型重試。
這本身並不罕見——模型有時確實會輸出格式錯誤的工具調用,尤其是小型模型。但令人驚訝的是,這個問題在較新的模型中反而更頻繁地出現。Opus 4.8 和 Sonnet 5 都表現出這種傾向,而較舊的模型(如 Opus 3 和 Sonnet 4)則沒有。換言之,Anthropic 系列中最先進的模型在遵循特定工具模式方面的表現反而不如它們的“前輩”。
Armin 推測,這種反常現象是由於 Anthropic 通過強化學習(Reinforcement Learning, RL)對較新模型進行了專門訓練,使其更擅長使用 Claude Code 中內置的編輯工具(基於搜索和替換)。這種訓練雖然提高了模型在 Claude Code 中的表現,但也產生了負面效應——模型開始將類似的行為“推廣”到其他代碼框架的自定義工具上,導致 Pi 等工具收到不符合預期的調用。
這一觀察引出了更廣泛的問題:如果模型供應商繼續針對自家工具優化模型,第三方框架是否被迫需要實現多種編輯工具?例如,OpenAI 的 Codex 使用 apply_patch 機制,並且 OpenAI 也公開討論過如何訓練模型有效使用該工具。那麼,Pi 是否應該同時支持搜索-替換和 apply_patch 等多種編輯工具,以便根據底層模型選擇最兼容的一種?
目前,這個問題還沒有簡單的答案。但它凸顯了 AI 工具生態中一個潛在的分裂趨勢:隨着模型越來越針對特定平台優化,跨框架的通用性可能會下降。開發者可能需要考慮如何在保持靈活性的同時,應對模型行為的非預期變化。