Re Reference AI

評価

SWE-benchとは

実際のGitHubリポジトリのIssueを解決させ、コーディングエージェントの実務能力を測るベンチマーク

ベンチマークコーディングエージェント

ひとことで言うと

実際のソフトウェアの不具合をAIに直させて、実務的な能力を測るテスト。

概要

SWE-bench(エスダブリューイーベンチ)とは、実際のオープンソースPythonプロジェクトのGitHub Issueとそれに対応する人間によるバグ修正(プルリクエスト)のペアを用いて、LLMやコーディングエージェントが実際のソフトウェア開発課題をどれだけ解決できるかを評価するベンチマーク。 モデルはリポジトリのコードベース全体にアクセスし、Issueの内容を理解したうえでコードを修正するパッチを生成する必要があり、単純な関数生成よりも実務に近い、大規模なコードベースの理解と修正能力を評価できる点が特徴。 エージェントはIssueの説明だけを頼りに関連するファイルを自ら探索し、複数ファイルにまたがる変更をする必要があるため、コーディングエージェントの実運用に近い能力を測る指標として近年重視されている。

背景

HumanEval等の従来のコード生成ベンチマークは、独立した短い関数の生成が中心であり、実際のソフトウェア開発で求められる大規模なコードベースの理解・複数ファイルにまたがる修正・既存のテストとの整合性確保といった能力までは評価できていなかった。 SWE-benchは、実世界のソフトウェア開発課題により近い形でエージェントの能力を評価するために開発された。

歴史

2023年: プリンストン大学等の研究チームがSWE-benchを提案する論文を発表。 以降、ClaudeGPT等をベースにしたコーディングエージェントの性能比較において、代表的なベンチマークとして広く参照されるようになった。

アーキテクチャ

各問題は、実際のGitHub Issueの説明文、対応するリポジトリのコードベースのスナップショット、修正が正しいかを検証するための既存または追加されたテストケースから構成される。 モデルが生成したパッチをリポジトリへ適用し、テストが通るかどうかで正誤を判定する。

コード例

データセットの読み込み(概念例)

from datasets import load_dataset

dataset = load_dataset("princeton-nlp/SWE-bench")
print(dataset["test"][0]["problem_statement"])

利点

  • 実際のソフトウェアリポジトリを対象とするため、実務に近いコーディング能力を評価できる
  • コーディングエージェントの実用性を比較する客観的な指標として広く参照されている
  • リポジトリ全体を対象とするため、複数ファイルにまたがる修正能力も評価できる

欠点

  • Pythonプロジェクトが中心であり、他の言語やドメインへの評価結果の一般化には限界がある
  • 問題の解決には長い試行錯誤や多くのトークンを要し、評価自体のコストが高い
  • 難易度の高い問題が多く、モデル間の性能差は縮まりにくい場合がある

比較

  • HumanEvalHumanEvalが独立した関数レベルの問題であるのに対し、SWE-benchは実際のソフトウェアリポジトリでの課題解決能力を評価する
  • AIエージェントSWE-benchは、コーディングを行うAIエージェントの実務能力を評価するベンチマークとしてよく使われる

関連用語

HumanEvalAIエージェントLLMLLM-as-a-Judgeコーディングエージェント

よくある質問

SWE-benchのスコアはどう解釈する?

対象となったIssueのうち、モデルが正しく解決できた割合を示す。 実際のソフトウェア開発課題への対応力の目安になるが、対象がPythonの特定プロジェクト群に限られる点には留意が必要。

SWE-bench Verifiedとは?

元のSWE-benchの問題のうち、人間による検証を経て問題設定の曖昧さやテストの不備を取り除いたサブセット。 近年のコーディングエージェントの性能比較でよく参照されている。

参考文献

関連Zenn記事