ProgramBench: 言語モデルはプログラムをゼロから再構築できるか?

#Tech

ProgramBench: 言語モデルはプログラムをゼロから再構築できるか? 言語モデル ソフトウェア構築

言語モデルによるソフトウェア開発能力を評価するProgramBenchが発表されました。

ProgramBenchでは、与えられたプログラムとドキュメントから、参照プログラムの動作を再現するコードベースを構築します。

評価は、エージェント主導のファジングによる挙動テストによって行われ、FFmpegやSQLiteなど多様なソフトウェアを対象とする200のタスクが用意されています。

既存の言語モデルでは、タスクを完全に解決できず、人間が書いたコードとの乖離も課題として浮き彫りになりました。

大規模言語モデル(LLM)が、単なるコード補完やバグ修正を超えて、ゼロから完全なソフトウェアプロジェクトを構築できるかどうかが注目されています。この度、研究者らが「ProgramBench」という新しい評価ベンチマークを発表しました。これは、LLMが与えられた仕様書とプログラムの振る舞いのみから、全体的なソフトウェアアーキテクチャを設計し、実装する能力を測るものです。

従来の評価手法の限界

これまでのLLMの評価は、単一のバグ修正や特定の機能開発といった、限定的で局所的なタスクに焦点を当てていました。しかし、実際のソフトウェア開発では、モデルは長期にわたりコードベースを維持・成長させる必要があり、高度なソフトウェアアーキテクチャの意思決定が求められます。既存のベンチマークでは、このような包括的な開発能力を測るには不十分であると指摘されています。

ProgramBenchの仕組みと課題

ProgramBenchでは、LLMに対し、参照となる実行可能ファイル(Reference Executable)の振る舞いとドキュメントのみを提供します。モデルは、その振る舞いに一致するコードベースを設計・実装しなければなりません。実装構造を事前に指定せず、エージェント主導のファジング(fuzzing)によってエンドツーエンドの振る舞いテストを生成することで、真の全体的開発能力を評価しています。タスクは、CLIツールからFFmpegやSQLiteといった大規模なソフトウェアまで200種類に及びます。

現行LLMの限界と傾向

9種類のLLMを評価した結果、どのモデルも単一のタスクを完全に解決することはできなかったとのことです。最も性能が良かったモデルでさえ、タスクのわずか3%に対して95%のテストをパスする程度でした。また、モデルは人間が書いたコードとは大きく異なる、モノリシックで単一ファイルに集中した実装を好む傾向が見られたそうです。

結論

ProgramBenchの分析は、LLMが高度なソフトウェアエンジニアリングの役割を担うには、まだ大きな課題があることを示しています。単なるコード生成能力だけでなく、複雑なアーキテクチャ設計や長期的なコードベース管理能力の向上が今後の焦点となると見られています。

原文の冒頭を表示(英語・3段落のみ)

Authors:John Yang, Kilian Lieret, Jeffrey Ma, Parth Thakkar, Dmitrii Pedchenko, Sten Sootla, Emily McMilin, Pengcheng Yin, Rui Hou, Gabriel Synnaeve, Diyi Yang, Ofir Press

View PDF

HTML (experimental)

※ 著作権に配慮し、引用は冒頭3段落までです。続きは元記事をご覧ください。

元記事を読む ↗