FeatureBench は、エンドツーエンドで機能指向のソフトウェア開発においてコーディングエージェントを評価するための ベンチマークである。ここでの開発とは、タスクの説明と明示的なインターフェース定義を与えられたうえで、既存の コードベース内に、または独立したモジュールとして、新しい機能を実装することを指す。 FeatureBench:複雑な機能開発におけるエージェント型コーディングのベンチマーク において、 SWE-Bench よりも難しく、機能に焦点を当てた対となるベンチマークとして導入された。

内容

各タスクインスタンスには、一意の識別子、ゴールドパッチとテストパッチ、fail-to-pass および pass-to-pass の テストファイルのリスト、開発環境用の Docker イメージ、ソースリポジトリとベースコミット、問題文、そして リポジトリ設定が記録される。生成されたインスタンスディレクトリには、タスクプロンプト(problem_statement.md)、 ゴールドパッチ、テストパッチ、メタデータファイルが格納される。問題文は 2 つの部分から成り、タスクの説明と、 実装すべき各インターフェースのパス、シグネチャ、docstring を示すインターフェースの説明である。

最初のバージョンは 200 件の評価タスクを含み、これらは機械学習、科学計算、可視化、Web フレームワークなどの 領域にわたる 24 の Python リポジトリから得た 3825 件の実行可能な環境の中から選ばれた。最も多くのタスクを 提供しているのは mlflow、transformers、pandas である。フルセットに含まれる条件は、実装に 100 行を超える コードが必要であること、fail-to-pass のテストポイントが 10 以上あること、そしてテストファイルが 2022 年 5 月 以降に初めてコミットされたものであることだった。評価コストを抑えるため、無作為に選んだ 30 タスクから成る Lite セットも提供されている。すべてのタスクには 2 つの難易度レベルがある。Level 1(リポジトリ内での インクリメンタルな開発)と Level 2(リポジトリを取り除いたうえで、同じ機能をゼロから構築する)である。 SWE-bench のインスタンスと比べると、平均的なタスクは問題文がはるかに長く、ゴールドソリューションが触れる行数・ファイル数・ 関数数もはるかに多く、合格すべきテストもはるかに多い。

来歴

タスクは、論文が提供する自動化されたテスト駆動の収集ツールキットによって生成された。各リポジトリについて、 インストールコマンドは手作業で指定され — これが唯一の手作業の工程であり、1 リポジトリあたり約 3 分と 見積もられている — 環境は Docker イメージとしてパッケージ化される。ツールキットは、検証済みのテストファイルを fail-to-pass テストおよび pass-to-pass テストとして選び、それらの実行をトレースして関数レベルの依存グラフを 構築し、LLM を使ってインポートされたオブジェクトのうちどれがテスト対象であるかを分類し、pass-to-pass テストが 実行するコードは残しつつ、幅優先探索によって対象の機能を抽出する。問題文を生成する前に、事後検証の工程で 機能を取り除いたコードベースを確認し、欠けている docstring は LLM が補う。タスクは 2022 年 5 月から 2025 年 9 月までのリポジトリの活動から作成されており、同じツールキットで時間とともに新しいインスタンスを生成できる ことから、著者らはこのベンチマークを継続的に更新可能なものと説明している。コードは GitHub 上の LiberCoders/FeatureBench で公開されている。

用途

導入論文は、このベンチマーク上で 7 通りのエージェントスキャフォールドとモデルの組み合わせを評価し、最良の ものでもフルセットの 12.5% しか解決できなかったと報告している。その結果は論文のページにまとめられている。