OpenAI 對 SWE-Bench Pro 程式碼評估缺陷的分析
OpenAI 對 SWE-Bench Pro 程式碼評估缺陷的分析
OpenAI 已發現 SWE-Bench Pro 程式碼基準存在重大缺陷,估計約有 30% 的任務已損壞。這些發現促使 OpenAI 撤回先前建議模型開發者採用 SWE-Bench Pro 取代 SWE-bench Verified 的推薦。
審計結果與任務失敗率
對 SWE-Bench Pro 公開分割(731 個任務)的審計顯示,資料集的相當大部分提供了模型能力的不可靠訊號。分析根據使用的方法辨識出兩種不同的失敗率:
- Human Annotation: 確認 249 個損壞任務(34.1%)。
- Data Quality Pipeline: 標記 200 個損壞任務(27.4%)。
評估缺陷的主要類別
OpenAI 將損壞的任務分類為四種主要失敗模式,這些模式會使基準的結果失效:
- Overly Strict Tests: 測試過於嚴格,強制執行提示中未要求的特定實作細節,導致功能正確的解決方案被標記為錯誤。
- Underspecified Prompts: 提示缺乏要求,這些要求由隱藏測試強制執行,但模型無法合理推斷。
- Low-Coverage Tests: 測試覆蓋率低,未充分檢查所請求的功能,允許不完整或錯誤的修正通過。
- Misleading Prompts: 提示誤導模型走向不正確的行為,或直接與測試需求相矛盾。
品質保證的方法論
為確保任務失敗反映真實的模型限制而非基準缺陷,OpenAI 採用了多階段的品質保證管線:
自動過濾
初始的自動過濾器審查模型嘗試、任務中繼資料與失敗追蹤,標記出 286 個可能有問題的任務。
人類監督的代理審查
基於 Codex 的調查代理被授予對任務儲存庫與環境的存取權限。這些代理執行測試、檢查檔案,並調查常見的失敗模式,以區分合理的模糊性與真正的缺乏規範。之後研究人員審查代理的摘要,作出最終判斷。
人類標註活動
有經驗的軟體工程師審查了被標記的子集。每個任務由五位工程師審查,他們根據問題說明、測試案例與金色修補(真實參考解決方案)形成獨立判斷,然後再審查管線分析。
代理與人類審查的比較
人類審查者比調查代理更容易將任務判定為損壞。雖然代理管線與人類審查者在 74% 的案例中重疊,但人類更傾向於為單一任務分配多個標籤,顯示代理加審查者的管線較保守。最顯著的差異在於「低覆蓋率測試」,人類在基準中識別出 9.4%,而代理管線僅為 4.1%。
對程式碼基準的影響
OpenAI 指出,從開源儲存庫歷史程式化取得的基準——這些 issue 與 pull request 原本是為人類協作而設計——常無法產生乾淨、獨立的任務。pull request 中的測試往往是為驗證特定變更而撰寫,而非定義與實作無關的標準。
OpenAI 主張由有經驗的軟體開發者專門為模型評估打造新基準,以確保其難以被操弄、易於信任,且真實反映模型能力。