[論文レビュー] Conversational Automated Program Repair
本論文は対話型 APR を提案する。これは patch の生成と検証をフィードバックとともに交互に行う LLM ベースの手法で、従来のサンプリング法に比べて、複数のモデルとベンチマークに跨る修復効果を向上させる。
Automated Program Repair (APR) can help developers automatically generate patches for bugs. Due to the impressive performance obtained using Large Pre-Trained Language Models (LLMs) on many code related tasks, researchers have started to directly use LLMs for APR. However, prior approaches simply repeatedly sample the LLM given the same constructed input/prompt created from the original buggy code, which not only leads to generating the same incorrect patches repeatedly but also miss the critical information in testcases. To address these limitations, we propose conversational APR, a new paradigm for program repair that alternates between patch generation and validation in a conversational manner. In conversational APR, we iteratively build the input to the model by combining previously generated patches with validation feedback. As such, we leverage the long-term context window of LLMs to not only avoid generating previously incorrect patches but also incorporate validation feedback to help the model understand the semantic meaning of the program under test. We evaluate 10 different LLM including the newly developed ChatGPT model to demonstrate the improvement of conversational APR over the prior LLM for APR approach.
研究の動機と目的
- テスト結果からのフィードバックを活用した LLM を用いることで、APR の手動作業を削減する動機づけ。
- LLM の長い文脈能力を活かすため、patch 生成と検証を interleave する対話型 APR を提案する。
- 検証フィードバックと事前に生成されたパッチを組み込むことで、複数のモデルにわたるパッチの多様性と成功率が向上することを示す。
- ChatGPT を含む 10 の LLM にわたる標準的なバグ修正ベンチマークで対話型 APR を評価し、有効性と効率を評価する。
提案手法
- 対話的ターンを、patch を生成し、それを検証し、フィードバックを抽出することとして定義する。
- 前の patch とそれらの検証フィードバックを連結して、次の生成を導く入力プロンプトを構築する。
- LLM の文脈を管理するために最大チェーン長を使用し、必要に応じて新しいチェーンで自動的に再開する。
- 同一のプロンプト下で、対話型 APR をベースラインのサンプリング手法と比較する。
- Python および Java の QuixBugs で、CodeGen の variants, Codex, ChatGPT など複数の LLM を用いて評価する。

実験結果
リサーチクエスチョン
- RQ1RQ1: 対話型 APR は、ベースラインのサンプリングベース LLM APR と比較してどの程度効果的か?
- RQ2RQ2: 異なる要素(チェーン長、検証プロンプト)は性能にどう影響するか?
- RQ3RQ3: 同じベンチマークで、ChatGPT は他の LLM と比べて対話型 APR においてどうか?
- RQ4RQ4: プロンプトのスタイルと検証フィードバックが修復結果に与える影響は何か?
主な発見
- 対話型 APR は、ベースラインサンプリングと比較して、様々なサイズの独立した LLM における正解かつ妥当なパッチの数を増加させる。
- 長いチェーン長はモデル依存の点まで有効である(CodeGen では約 3–4 ターン; より大きなモデルは長いチェーンをよりうまく扱える)。
- 機能的検証プロンプト(テスト入力で関数を呼び出すこと)は、プロンプトスタイルの中で最良の結果をもたらす。
- ChatGPT は一般的に Codex よりも上回り、対話重視の訓練と RLHF の恩恵を受けている。
- 検証フィードバックを使用すると、同じパッチの繰り返しを減らし、妥当/正解なパッチに到達するために必要なサンプル数(試行回数)を削減する。

より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。