ProgramBench: Can Language Models Rebuild Programs From Scratch?
Abstractの概要
ProgramBenchは、ソフトウェアエンジニアリングエージェントが、コンパイル済み実行ファイルとその使用ドキュメントのみを与えられた状態で、完全なソフトウェアプロジェクトをゼロから再構築できるかどうかを評価するベンチマークを導入する。このベンチマークは、小規模なCLIツールからFFmpeg、SQLite、PHPなどの大規模システムまで、200のオープンソースリポジトリで構成され、エージェント駆動型ファジングによって生成された隠れたエンドツーエンドの動作テストで候補ソリューションを評価する。この設計は、モデルを元のコード構造や言語に制約することなく、アーキテクチャや実装の選択を含む包括的なソフトウェア開発能力を測定する。9つの言語モデルを対象に評価した結果、このベンチマークは非常に困難であることが判明し、いずれのモデルもタスクを完全に解決できなかったが、最良のモデル(Claude Opus 4.7)はタスクインスタンスの3%で95%以上のテスト通過率を達成した。
新規性
本論文の主な新規性は、バグ修正、機能補完、事前定義されたコードスケルトンの穴埋めではなく、完全なプログラムの動作的再構築を評価する実装非依存型ベンチマークである。また、リポジトリを実行ファイルとドキュメントに縮約し、観測可能な動作のエージェント駆動型ファジングによって隠れたテストを生成するスケーラブルなタスク構築・評価パイプラインを導入しており、既存のテストスイートや言語固有のツールを必要としない。
成果
評価対象の9つのモデルのいずれも200タスクのうち1つも完全に解決できず、最強モデル(Claude Opus 4.7)はタスクインスタンスのわずか3%で95%以上のテストに合格した。生成された動作テストスイートは、開発者作成のスイートとほぼ同等の行カバレッジ(平均79.7% vs. ネイティブスイートの56.8%)を達成し、評価シグナルとしての有用性を裏付けた。分析により、モデルが生成したコードベースは大幅に短く(中央値1,173行 vs. 3,068行)、ファイル数が少なく(中央値3 vs. 15)、元の人間による実装よりも少数だがより長い関数を含むことが示された。
論文の注目点
- ProgramBenchは実行ファイルとドキュメントからのエンドツーエンドのプログラム再構築を測定し、局所的なコード編集ではなくアーキテクチャや設計上の意思決定を重視し、モデルは任意のプログラミング言語を使用可能である。
- このベンチマークは200の多様なタスク(合計248,853のテスト関数)を含み、エージェント駆動型ファジングによって生成された隠れた動作テストを用いて、実装構造を規定せずに機能的等価性を評価する。
- 現在の言語モデルは部分的な進捗を示すがいずれのタスクも完全には解決できず、そのソリューションはファイル数の少なさ(中央値3 vs. 15)、浅いディレクトリ構造、より長い関数を好む点で人間のコード構成から乖離している。