要約
研究者は過去数十年間でソフトウェア開発プロセスの自動化において大きな進歩を遂げてきました。
大規模言語モデル (LLM) の最近の進歩は開発プロセスに大きな影響を与えており、開発者は LLM ベースのプログラミング アシスタントを使用して自動コーディングを実現できます。
それにもかかわらず、ソフトウェア エンジニアリングにはコーディングとは別に、特にソフトウェアのメンテナンス (バグ修正など) やソフトウェアの進化 (機能の追加など) を可能にするプログラム改善のプロセスが含まれます。
本稿では、GitHub の問題を解決し、自律的にプログラム改善を実現するための自動化アプローチを提案します。
AutoCodeRover と呼ばれる当社のアプローチでは、LLM と高度なコード検索機能が組み合わされ、最終的にはプログラムの変更やパッチにつながります。
AI 研究者や実践者による最近の LLM エージェントのアプローチとは対照的に、私たちの見通しはよりソフトウェア エンジニアリング指向です。
ソフトウェア プロジェクトを単なるファイルのコレクションとして見るのではなく、プログラム表現 (抽象構文ツリー) に取り組みます。
コード検索では、クラス/メソッドの形式でプログラム構造を利用して、問題の根本原因に対する LLM の理解を強化し、反復検索によってコンテキストを効果的に取得します。
テストスイートが利用可能な限り、テストを使用したスペクトルベースの障害位置特定を使用すると、コンテキストがさらに鮮明になります。
SWE-bench-lite での実験 (実際の GitHub 問題 300 件) では、GitHub 問題の解決における有効性の向上 (SWE-bench-lite で 19%) が示されており、これは最近報告された SWE エージェントの有効性よりも高いです。
さらに、AutoCodeRover は、他のベースラインと比較して、大幅に低いコスト (平均 0.43 米ドル) でこの有効性を達成しました。
私たちは、私たちのワークフローによって自律的なソフトウェア エンジニアリングが可能になり、将来的には LLM から自動生成されたコードを自律的に改善できるようになると考えています。
要約(オリジナル)
Researchers have made significant progress in automating the software development process in the past decades. Recent progress in Large Language Models (LLMs) has significantly impacted the development process, where developers can use LLM-based programming assistants to achieve automated coding. Nevertheless, software engineering involves the process of program improvement apart from coding, specifically to enable software maintenance (e.g. bug fixing) and software evolution (e.g. feature additions). In this paper, we propose an automated approach for solving GitHub issues to autonomously achieve program improvement. In our approach called AutoCodeRover, LLMs are combined with sophisticated code search capabilities, ultimately leading to a program modification or patch. In contrast to recent LLM agent approaches from AI researchers and practitioners, our outlook is more software engineering oriented. We work on a program representation (abstract syntax tree) as opposed to viewing a software project as a mere collection of files. Our code search exploits the program structure in the form of classes/methods to enhance LLM’s understanding of the issue’s root cause, and effectively retrieve a context via iterative search. The use of spectrum-based fault localization using tests, further sharpens the context, as long as a test-suite is available. Experiments on SWE-bench-lite (300 real-life GitHub issues) show increased efficacy in solving GitHub issues (19% on SWE-bench-lite), which is higher than the efficacy of the recently reported SWE-agent. In addition, AutoCodeRover achieved this efficacy with significantly lower cost (on average, $0.43 USD), compared to other baselines. We posit that our workflow enables autonomous software engineering, where, in future, auto-generated code from LLMs can be autonomously improved.
arxiv情報
著者 | Yuntong Zhang,Haifeng Ruan,Zhiyu Fan,Abhik Roychoudhury |
発行日 | 2024-07-25 16:54:41+00:00 |
arxivサイト | arxiv_id(pdf) |
提供元, 利用サービス
arxiv.jp, Google