Claude 3.5 Sonnet SWE-bench 效能表現

升級後的 Claude 3.5 Sonnet 在 SWE-bench Verified 上達成了 49% 的成功率,超越了先前 45% 的最先進(state-of-the-art)分數。這項表現證明了當該模型整合進一個專為現實世界軟體工程任務設計的極簡代理(agent)架構時,其推理、編碼與數學能力的提升。

理解 SWE-bench Verified

SWE-bench 是一個評估基準,用於衡量 AI 代理在解決來自熱門開源 Python 儲存庫的真實 GitHub issues 時的能力。與競賽風格的編碼測試不同,它要求代理理解程式碼庫、修改檔案,並使用單元測試來驗證修復結果。

SWE-bench Verified 是從原始數據集中選出的 500 個經過人工審核的問題子集。這個子集確保了每個任務在提供的上下文(context)下都是可解的,透過移除不可能完成的任務,提供了對編碼代理效能更準確的衡量。

代理架構設計

Anthropic 利用了一個極簡的「代理」系統——結合了 Claude 3.5 Sonnet 模型與軟體架構(scaffolding)——以最大化模型自身的判斷與控制力。該架構避免了硬編碼的工作流,轉而採用靈活的互動迴圈。

工具集與介面

代理配備了兩個主要工具:

  • Bash Tool: 在持久化環境中執行 bash 指令。它透過 aptpip 提供對常見 Linux 與 Python 套件的鏡像存取權,但無法連接網際網路。
  • Edit Tool (str_replace_editor): 一個用於查看、建立與編輯檔案的複雜工具。它使用字串替換策略(將 old_str 替換為 new_str)以確保可靠性;只有在目標字串完全匹配一次時,替換才會發生。

提示策略

代理由一個提示(prompt)引導,該提示建議了一種通用方法——探索儲存庫、建立重現腳本、編輯原始碼、驗證修復結果——而不會強制執行嚴格的轉換。Anthropic 指出,對於那些不受 token 成本限制的使用者,鼓勵模型產生長且詳盡的回答可以提升效能。

效能結果

在使用相同的代理架構下,升級後的 Claude 3.5 Sonnet 顯著優於先前的迭代版本與先前的最先進模型。

Model SWE-bench Verified Score
Claude 3.5 Sonnet (new) 49%
Previous SOTA 45%
Claude 3.5 Sonnet (old) 33%
Claude 3 Opus 22%

代理行為與能力

對模型日誌的分析顯示,升級後的 Claude 3.5 Sonnet 展現出比先前模型更強的自我修正能力。當第一次嘗試失敗時,它更有可能嘗試多種不同的解決方案,而不是重複相同的錯誤。

在典型的流程中,模型會:

  1. 使用 Edit Tool 探索儲存庫結構。
  2. 建立一個獨立的 Python 腳本來重現報告的 bug。
  3. 透過 Bash Tool 執行腳本以確認錯誤。
  4. 使用字串替換對非測試檔案進行最小程度的修改。
  5. 重新執行重現腳本以驗證解決方案。

軟體工程評估中的技術挑戰

Anthropic 在執行 SWE-bench Verified 評估時,識別出四個主要挑戰:

  • 資源密集度: 成功的執行可能需要數百輪對話,且超過 100k tokens,導致高昂的成本與漫長的執行時間。
  • 評分雜訊: 系統問題(例如環境設定錯誤或重複安裝補丁)可能導致模型在行為正確的情況下被誤判為失敗。
  • 隱藏的測試差異: 因為模型無法看到評分測試,它可能會認為自己成功了,但實際上只是套用了「補丁式」修復而非重構,或是未能匹配原始人工 PR 的特定單元測試。
  • 多模態差距: 雖然 Claude 3.5 Sonnet 具有視覺能力,但目前的架構並不允許它查看檔案系統上的檔案或 URL,這使得像 Matplotlib 這樣的函式庫進行除錯變得更加複雜。

Sources

相關