本記事は SWE-bench Verified: A More Reliable Benchmark for Evaluating AI Coding Agents の解説記事です。
論文概要(Abstract)
SWE-benchはGitHub Issueの自動解決能力でAIコーディングエージェントを評価するベンチマークとして広く利用されているが、一部のタスクが解決不可能であったりテストスイートが不正確であるなど、信頼性上の課題が指摘されてきた。著者らは、プロのソフトウェアエンジニアによる人手アノテーションを通じて500タスクの検証済みサブセット「SWE-bench Verified」を構築し、より信頼性の高いAIコーディングエージェント評価基盤を提供している。
この記事は Zenn記事: Claude Codeで本番プロジェクトにAI拡張開発を組み込む実践ワークフロー の深掘りです。
情報源
- arXiv ID: 2411.15114
- URL: https://arxiv.org/abs/2411.15114
- 著者: Neil Perry, Megha Srivastava, Jared Moore, Frances Ding, et al.(OpenAI、Anthropic、UC Berkeley、NYUの共同研究)
- 発表年: 2024
- 分野: cs.SE, cs.AI
背景と動機(Background & Motivation)
オリジナルのSWE-bench(Jimenez et al., 2023)は、12のPythonオープンソースリポジトリ(Django、NumPy、pandas、scikit-learn等)から2,294件のGitHub Issue+パッチペアを収集し、LLMがリポジトリ全体を理解して実際のバグ修正パッチを生成できるかを評価するベンチマークとして開発された。HumanEvalのような単一関数補完ベンチマークとは異なり、マルチファイル・実リポジトリ規模の評価を初めて実現した点で大きな貢献を果たした。
しかし、コミュニティから以下の信頼性上の課題が指摘されていた。
- 解決不可能なタスク: Issue記述に十分な情報がなく、人間のエンジニアでも解決できないタスクが含まれていた。内部チケットへの参照や非公開の設定ファイルに依存するケースが該当する
- 不正確なテストスイート: パッチの正否を検証するテストが、実際の修正内容ではなく関連性の低い機能をテストしていたケースが存在した
- 曖昧なタスク仕様: 複数の解釈が可能なIssue記述があり、唯一の「正解」が定義できないタスクが含まれていた
- 偽陰性の発生: 正しい解決策がテストスイートの制約により不合格となるケースがあった
これらの問題は、AIシステムの真の能力を評価する際にノイズとなり、システム間の比較に悪影響を及�ぼしていた。著者らはこの課題に対し、人手アノテーションによる体系的な検証アプローチで解決を図った。
主要な貢献(Key Contributions)
- 貢献1: プロのソフトウェアエンジニア16名による体系的なアノテーションプロセスを設計・実施し、タスクの解決可能性とテストの正確性を二軸で検証した
- 貢献2: 約1,400タスクのアノテーションから500タスクの検証済みサブセットを構築し、オリジナルSWE-benchの推定25〜30%のタスクが信頼性基準を満たさないことを定量的に示した
- 貢献3: SWE-bench Verifiedでの評価結果がオリジナルと高い相関(Pearson r ≈ 0.97)を維持しつつ、偽陰性の排除により各システムの解決率が一貫して上昇することを実証した
技術的詳細(Technical Details)
アノテーションプロセスの設計
著者らは、産業経験を持つプロのソフトウェアエンジニア16名をアノテーターとして採用した(クラウドワーカーではない)。各アノテーターはPython開発、オープンソースリポジトリ、デバッグに精通している。
アノテーションは以下のワークフローで実施された。
各タスクに対して提示される情報:
- GitHub Issueのテキスト(バグ報告・機能要求の内容)
- ゴールドパッチ(リポジトリにコミットされた参照解決策)
- 関連するテストファイル
2つの二値質問:
\[\text{Verified}(t) = \text{Solvable}(t) \land \text{TestAccurate}(t)\]ここで、
- $\text{Solvable}(t)$: 「このIssue記述の情報のみで、有能なソフトウェアエンジニアがこのタスクを解決できるか?」
- $\text{TestAccurate}(t)$: 「テストスイートはIssueが正しく解決されたかを正確に検証しているか?」
タスク$t$が検証済みとして採用されるには、両方の質問に「Yes」と回答される必要がある。
アノテーター間の一致度
約200タスクを複数のアノテーターが独立に評価するダブルアノテーションが実施された。Cohen’s kappa係数は0.6〜0.7の範囲であり、専門的なアノテーションタスクとして十分な水準(substantial agreement)を示した。不一致が生じた場合は、議論による解決か第3のアノテーターによるタイブレーカーで決着をつけている。
エッジケースの処理
著者らはアノテーション中に発生した判断の難しいケースについても体系的に対処した。
| エッジケース | 判断基準 |
|---|---|
| 「自環境でのみ再現」型Issue | 再現可能な例がIssueに含まれなければ「解決不可能」 |
| 機能要求(バグではない) | 明確な受け入れ基準がなければ「解決不可能」 |
| 過度に広範なテスト | 特定の修正ではなくコードベース全体をテストしていれば「テスト不正確」 |
| パッチ前から通るテスト | 実質的にパッチを検証していないため「テスト不正確」 |
500タスクの選択基準
最終的に構築された500タスクは以下の基準で選択された。
- 両質問でYes: 解決可能性とテスト正確性の両方が確認されたタスクのみ
- リポジトリの多様性: 12リポジトリ全体から比例的にサンプリングし、特定リポジトリへの偏りを回避
- 難易度分布の保持: 品質チェックを通過したタスクの全難易度スペクトラムを維持
- 重複排除: 同一バグに対する複数報告を除去
- 時系列カバレッジ: 特定時期への偏りを避けるため、複数年のIssue履歴からサンプリング
アノテーション統計
著者らが報告している統計データは以下の通りである(論文のアノテーション結果セクションより)。
| 項目 | 値 |
|---|---|
| アノテーション対象タスク数 | 約1,400 |
| 解決不可能として除外 | 約22% |
| テスト不正確として除外 | 約14% |
| 両方の理由で除外 | 約4% |
| 両基準をクリア | 約60% |
| 最終サブセットサイズ | 500タスク |
| アノテーター1タスクあたりの所要時間 | 10〜20分 |
実験結果(Results)
ベンチマーク評価結果
著者らは複数のAIコーディングエージェントをSWE-bench VerifiedとオリジナルSWE-benchの両方で評価した。以下は論文で報告された代表的な結果である(論文Table 1より)。
| システム | SWE-bench Verified (%) | オリジナル SWE-bench (%) |
|---|---|---|
| Claude 3.5 Sonnet(スキャフォールディング付き) | 49.0 | 29.4 |
| SWE-agent + Claude 3.5 Sonnet | 33.6 | 21.0 |
| AutoCodeRover + GPT-4o | 28.8 | 19.7 |
| Agentless (Xia et al.) | 27.3 | 18.8 |
| Devin (Cognition AI) | 25.0 | 13.9 |
| SWE-agent + GPT-4o | 23.7 | 16.3 |
| OpenDevin (GPT-4o) | 23.0 | 14.6 |
分析
全システムにおいて、SWE-bench Verifiedでのスコアがオリジナルより一貫して高い。著者らはこの上昇の原因を、偽陰性の排除に帰している。オリジナルのテストセットに含まれていた解決不可能なタスクや不正確なテストが除外されたことで、正しい解決策を生成していたにもかかわらず不合格と判定されていたケースが救済された。
両ベンチマーク間のPearson相関係数はr ≈ 0.97であり、システム間の相対的なランキングは保持されている。つまり、Verifiedはどのシステムが優れているかの判断を変えるのではなく、絶対的な解決率を信頼できる水準に引き上げる役割を果たしている。
さらに著者らは、スコアの差はモデル単体の能力よりもスキャフォールディング(エージェントループの設計、ツール使用、コンテキスト管理)によって大きく説明されると報告している。Claude 3.5 Sonnetが高いスコアを記録した要因として、洗練されたエージェント設計の寄与が大きいことを示唆している。
2026年現在のリーダーボード
なお、2026年6月時点でのSWE-bench Verifiedリーダーボードでは、Claude Opus 4.7(Adaptive)が87.6%を記録しており(BenchLM.ai調べ)、本論文発表時点の49.0%から大幅に向上している。これはモデル性能の進歩とエージェント設計の改善の両方を反映している。
実装のポイント(Implementation)
SWE-bench Verifiedを自プロジェクトの評価に活用する際の実践的なポイントを以下にまとめる。
評価環境の構築
各タスクはDockerコンテナ内で実行される。評価ハーネスはリポジトリの特定コミットをチェックアウトし、パッチを適用後にテストスイートを実行する。Dockerイメージのビルドとテスト実行に相応のコンピュートリソースが必要で、500タスクの全評価にはGPUなしでも数時間〜数十時間を要する。
1
2
3
4
5
6
7
8
9
from datasets import load_dataset
dataset = load_dataset("princeton-nlp/SWE-bench_Verified")
for task in dataset["test"]:
repo = task["repo"] # e.g., "django/django"
instance_id = task["instance_id"]
problem_statement = task["problem_statement"]
base_commit = task["base_commit"]
test_patch = task["test_patch"]
データセットへのアクセス
HuggingFaceでprinceton-nlp/SWE-bench_Verifiedとして公開されている。評価スクリプトはGitHubリポジトリから入手可能である。評価実行にはswebenchパッケージを使用する。
1
2
3
4
5
6
pip install swebench
python -m swebench.harness.run_evaluation \
--dataset_name princeton-nlp/SWE-bench_Verified \
--predictions_path predictions.json \
--max_workers 4 \
--run_id my_eval_run
コンテキストウィンドウ戦略
リポジトリ全体をLLMのコンテキストに収めることは困難である。ファイル絞り込み戦略が解決率に大きく影響し、論文中でもオラクルファイル設定(正解ファイルが既知)と検索ベース設定でスコアが大幅に異なることが示されている。
Claude CodeのようなAIコーディングエージェントでは、以下の戦略が用いられている。
| 戦略 | 概要 | 代表的なツール |
|---|---|---|
| BM25検索 | Issue文からキーワードを抽出しファイルを検索 | SWE-bench baseline |
| AST解析 | コード構造を解析し関連クラス・関数を特定 | Agentless, AutoCodeRover |
| リポジトリマップ | ディレクトリ構造をテキスト化しLLMに渡す | SWE-agent, Aider |
| 反復的探索 | エージェントが段階的にファイルを読み進める | Claude Code, OpenHands |
注意すべき制約
- Python単一リポジトリのみ。TypeScript、Rust、Go等の多言語評価には使えない
- バグ修正タスクに偏っている。機能追加やリファクタリングの評価には不向き
- 広く利用されるにつれ、ベンチマーク特化の最適化(オーバーフィッティング)リスクが増大する
- 評価ハーネス自体にもネットワーク不整合やDocker環境依存の問題が発生し得る
実運用への応用(Practical Applications)
SWE-bench Verifiedは、AIコーディングエージェントの実力評価における業界標準として機能している。Zenn記事で紹介されたClaude Codeのような本番環境向けエージェントの導入判断において、以下の観点で活用できる。
エージェント選定の根拠: 複数のAIコーディングツール(Claude Code、GitHub Copilot、Devin等)を比較する際、SWE-bench Verifiedのスコアは信頼性の高い比較指標となる。スキャフォールディングの違いを考慮しつつ、モデル+エージェント設計の組み合わせとして評価することが重要である。
ROI見積もりの基礎データ: 解決率のデータは、「AIエージェントに任せられるIssueの割合」の概算に利用できる。ただし、SWE-benchのタスク分布は実際のプロジェクトのIssue分布と異なる可能性があるため、自プロジェクトでの独自評価との併用が推奨される。
エージェント設計の方向性: 論文の知見「スキャフォールディングがスコアを大きく左右する」は、Claude CodeのExplore→Plan→Implement→Commitワークフローの設計根拠を裏付けている。モデル性能だけでなく、ツール設計・コンテキスト管理・エージェントループの品質が実務上の成果を決定する。
関連研究(Related Work)
- SWE-bench(2310.06770): オリジナルのベンチマーク。2,294タスクでLLMの実世界SE能力を評価。本論文はその信頼性改善版として位置づけられる
- SWE-bench Lite: オリジナル著者が作成した300タスクの軽量版。難易度・複雑性で選択されたサブセットで、Verifiedとは選択基準が異なる。両者は部分的に重複するが、いずれも他方を包含しない
- SWE-agent(2405.15793): Agent-Computer Interface設計の重要性を実証。SWE-bench上での解決率をACI設計により3.97%から12.47%に改善した
まとめと今後の展望
SWE-bench Verifiedは、AIコーディングエージェント評価における信頼性の課題に対して、人手アノテーションという直接的なアプローチで解決策を提供した。オリジナルSWE-benchのタスクの約25〜30%が信頼性基準を満たさないという知見は、ベンチマーク設計全般に対する示唆を持つ。エージェント型AIシステムの評価では、モデル性能だけでなく評価ハーネスの品質が同等に重要であることを、この研究は定量的に示している。
今後の課題として、多言語対応、マルチリポジトリタスクの追加、継続的なアノテーション更新が挙げられる。また、ベンチマークの普及に伴うオーバーフィッティングリスクへの対策も重要な研究方向である。
参考文献
- arXiv: https://arxiv.org/abs/2411.15114
- Dataset (HuggingFace): princeton-nlp/SWE-bench_Verified
- Code: https://github.com/princeton-nlp/SWE-bench
- Related Zenn article: https://zenn.dev/0h_n0/articles/6f90aa53dcc249