Claude 3.5 Sonnet SWE-bench 效能表現

升級後的 Claude 3.5 Sonnet 在 SWE-bench Verified 上達成了 49% 的成功率,超越了先前 45% 的最先進(state-of-the-art)分數。這一進步是由於模型增強的推理、編碼和數學能力,結合了旨在最大化模型自主性的極簡代理架構(agent scaffolding)。

SWE-bench Verified 概覽

SWE-bench 是一個評估基準,用於測試 AI 解析真實世界 GitHub 問題的能力,這些問題來自於熱門的開源 Python 儲存庫。與競賽風格的編碼測試不同,它要求模型在儲存庫的本地工作副本中理解、修改並測試程式碼。

SWE-bench Verified 是原始數據集的 500 個問題子集,經過人工審核以確保每個任務在沒有外部上下文的情況下都是可解決的。

代理架構與設計哲學

Anthropic 為 Claude 3.5 Sonnet 設計的代理架構專注於極簡化,以賦予語言模型對其問題解決過程的最大控制權。該代理使用提示詞(prompt)和兩個主要工具來運作:

工具使用代理組件

  • Bash Tool: 在持久環境中執行 bash 指令。該工具的描述提供了關於轉義輸入、缺乏網路存取以及如何在背景執行長期指令的關鍵指令。
  • Edit Tool (str_replace_editor): 一個用於查看、建立和編輯檔案的複雜工具。它支援 viewcreatestr_replaceinsertundo_edit 等指令。

關鍵優化策略

  • 用於編輯的字串替換法: 代理使用字串替換方法,模型指定一個 old_str 並將其替換為 new_str。只有在 old_str 恰好有一個匹配項時才會進行替換,從而減少了與其他編輯策略相關的可靠性問題。
  • 防止錯誤: 為了防止相對路徑檔案的問題,Edit Tool 要求所有操作都必須使用絕對路徑。
  • 模型自主性: 提示詞建議了一種通用方法(探索、重現、編輯和驗證),但並未強制執行嚴格的工作流程,允許模型使用自己的判斷。

效能結果

在使用相同的代理架構下,升級後的 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. 建立一個重現腳本來確認錯誤。
  3. 使用 Bash Tool 執行腳本以觀察錯誤。
  4. 使用 Edit Tool 修改原始碼。
  5. 重新執行重現腳本以驗證修復結果。

實作挑戰

Anthropic 在執行 SWE-bench Verified 評估時發現了四個主要挑戰:

  1. 成本與時長: 成功的執行可能需要數百輪對話,且超過 100k tokens,使得過程既昂貴又耗時。
  2. 評分準確性: 系統層級的問題,例如環境設定錯誤或重複安裝補丁,可能會導致錯誤的失敗評級。
  3. 隱藏測試: 因為模型無法看到評分測試,它可能會認為自己成功了,但實際上卻失敗了,有時是因為它僅應用了表面層級的修復,而非進行更深層的重構。
  4. 多模態限制: 雖然模型具有視覺能力,但目前的代理實作方式不允許它查看檔案或 URL,這使得涉及視覺輸出(例如 Matplotlib)的任務在除錯時變得更加複雜。

Sources

相關