この arXiv プレプリントは、2 種類の作業の区別から出発する。研究者はソフトウェア開発プロセスの多くを 自動化してきており、大規模言語モデルの近年の進歩によって、開発者は LLM ベースのプログラミング アシスタントを使って自動化されたコーディングを実現できるようになった。しかし著者らは、ソフトウェア エンジニアリングにはコーディングとは別に、プログラム改善 のプロセス、具体的にはバグ修正のような ソフトウェアの保守や、機能追加のようなソフトウェアの進化を可能にするプロセスが含まれると論じている。
その作業のために論文が提案するアプローチが AutoCodeRover であり、プログラム 改善を自律的に達成するために GitHub のイシューを解決する自動化アプローチである。そこでは LLM が高度な コード検索の機能と組み合わされ、最終的にプログラムの修正、すなわちパッチが生み出される。著者らは、 自らの見方を AI の研究者や実務者による近年の LLM エージェントのアプローチと対比させ、よりソフトウェア エンジニアリング志向のものだと説明している。ソフトウェアプロジェクトを単なるファイルの集まりとして 見るのではなく、プログラム表現 — 抽象構文木 — の上で作業するのである。コード検索はクラスとメソッドと いう形でプログラムの構造を活用しており、著者らによれば、これがイシューの根本原因に対する LLM の理解を 深め、反復的な検索を通じて効果的にコンテキストを取得する。テストスイートが利用可能な場合には、 スペクトラムベースの障害箇所特定がそのコンテキストをさらに絞り込む。
論文で 300 件の実際の GitHub イシューとして説明されている SWE-bench-lite において、著者らは GitHub の イシュー解決の有効性が 19% に向上したと報告しており、これは最近報告された SWE-agent の有効性よりも 高いと述べている。また、これを他のベースラインよりも大幅に低いコスト、平均 0.43 米ドルで達成したと 報告している。論文は最後に、このワークフローが自律的なソフトウェアエンジニアリングを可能にし、将来的に は LLM が自動生成したコードを自律的に改善できるようになると提起している。
この論文はソフトウェアエンジニアリング(cs.SE)と人工知能(cs.AI)に分類されている。2024 年 4 月 8 日に 初めて投稿され、2024 年 7 月 25 日にバージョン 3 として最終改訂されており、arXiv が発行した DOI 10.48550/arXiv.2404.05427 を持ち、ISSTA 2024 に掲載される予定とされていた。
要点
- 論文は、プログラム改善 — バグ修正のようなソフトウェアの保守と、機能追加のようなソフトウェアの進化 — をコーディングそのものから切り分け、前者を対象としている。
- AutoCodeRover は、LLM とコード検索の機能を組み合わせ、GitHub のイシューに対応するプログラムの修正、すなわちパッチを生成する。
- 他の LLM エージェントのアプローチとの違いとして挙げられているのは、プロジェクトを単なるファイルの集まりとして見るのではなく、プログラム表現である抽象構文木の上で作業する点である。
- コード検索はクラスとメソッドを活用して、イシューの根本原因に対する LLM の理解を深め、反復的な検索を通じてコンテキストを取得する。スペクトラムベースの障害箇所特定はコンテキストをさらに絞り込むが、それはテストスイートが利用可能な場合に限られる。
- 報告された結果は、300 件の実際の GitHub イシューからなる SWE-bench-lite で 19% の有効性であり、著者らはこれが最近報告された SWE-agent の有効性を上回ると述べている。
- コストは結果の別の軸として報告されている。イシューあたり平均 0.43 米ドルであり、著者らはこれを他のベースラインよりも大幅に低いと説明している。
注記
論文の仕組みのうち 2 つには、明示された条件が付いている。スペクトラムベースの障害箇所特定はテスト スイートが利用可能な場合にのみ適用され、SWE-agent との比較は、著者ら自身が実行した結果とではなく、 最近報告されたそのシステムの有効性との比較である。結論の主張 — このワークフローが、自動生成された コード自体が自律的に改善される自律的なソフトウェアエンジニアリングを可能にする — は、報告された実験に よって実証されたものではなく、著者らが展望として提起したものである。このプレプリントは 2024 年 4 月から 7 月にかけて 3 つのバージョンを経ている。