ベンチマーク · agentic
SWE-rebench
SWE-rebench は、コーディングベンチマーク SWE-bench を継続的に更新した変種で、最近の GitHub issue から課題を取り込み、モデルが学習時にそれらを見てしまっている可能性を下げます。モデルが解決したソフトウェアエンジニアリング課題の割合(% resolved)を報告します。
詳しく見る
- 例
- 典型的な課題では、GitHub リポジトリの実際のバグ報告や機能要望がモデルに与えられ、モデルはその問題を解決するためにプロジェクトのコードを編集しなければなりません。
- 採点方法
- 指標は % resolved で、モデルが修正できた課題数を課題の総数で割り、百分率で表します。
- 検証方法
- リポジトリ自身のテストスイートが修正後のコードで通ると、解答は自動的に受理されます。修正は失敗していたテストを通しつつ、他のテストを壊してはなりません。
- 重要な理由
- 課題が最近の issue から絶えず更新されるため、実際のコーディング能力をより正確に測れ、古い公開ベンチマークデータを暗記して水増しすることが難しくなります。
解説付きの例
課題
GitHub の実在する Python リポジトリ(
python-slugify)から作成され、ベース commit に固定された SWE-rebench インスタンス。問題: slugify('Hello, World!') が 'hello--world' を返す——連続する区切り文字が 1 個ではなく二重のハイフンになるが、期待される slug は 'hello-world'。提出物: リポジトリのスナップショットに対する git-diff パッチで、FAIL_TO_PASS テストを通し、かつすべての PASS_TO_PASS テストを緑のまま保つもの。解答
--- a/slugify/slugify.py
+++ b/slugify/slugify.py
@@ def slugify(text):
text = re.sub(r"[^\w\s-]", "", text).strip().lower()
- return re.sub(r"[\s]+", "-", text)
+ text = re.sub(r"[\s]+", "-", text)
+ return re.sub(r"-{2,}", "-", text)
解説
slug 生成器は空白を
- にまとめるが、繰り返されたハイフンを重複排除しないため、複数の区切り文字がそのまま漏れる;re.sub(r'-{2,}', '-', text) を加えると単一の - に正規化される。SWE-rebench は実行ベースで採点する:リポジトリのコンテナ内でパッチを適用し、FAIL_TO_PASS テストが通り、かつすべての PASS_TO_PASS テストが依然として通る場合にのみそのインスタンスを解決済みとする(リーダーボード = 解決率%)。