[論文レビュー] A Critical Review of Large Language Model on Software Engineering: An Example from ChatGPT and Automated Program Repair
この論文は EvalGPTFix を構築し、AtCoder の見ぬJavaバグに対する ChatGPT の自動プログラム修正能力を評価。基本プロンプトで 151 バグ中 109 を修正、強化プロンプトと対話を用いると最大 143 バグまで修正でき、CodeT5 や PLBART を上回る。さらに、プロンプト設計、対話ベースの修復、黒箱 LLM の SE におけるデータリーク問題を分析する。
Large Language Models (LLMs) have been gaining increasing attention and demonstrated promising performance across a variety of Software Engineering (SE) tasks, such as Automated Program Repair (APR), code summarization, and code completion. For example, ChatGPT, the latest black-box LLM, has been investigated by numerous recent research studies and has shown impressive performance in various tasks. However, there exists a potential risk of data leakage since these LLMs are usually close-sourced with unknown specific training details, e.g., pre-training datasets. In this paper, we seek to review the bug-fixing capabilities of ChatGPT on a clean APR benchmark with different research objectives. We first introduce {\benchmark}, a new benchmark with buggy and the corresponding fixed programs from competitive programming problems starting from 2023, after the training cutoff point of ChatGPT. The results on {\benchmark} show that ChatGPT is able to fix 109 out of 151 buggy programs using the basic prompt within 35 independent rounds, outperforming state-of-the-art LLMs CodeT5 and PLBART by 27.5\% and 62.4\% prediction accuracy. We also investigate the impact of three types of prompts, i.e., problem description, error feedback, and bug localization, leading to additional 34 fixed bugs. Besides, we provide additional discussion from the interactive nature of ChatGPT to illustrate the capacity of a dialog-based repair workflow with 9 additional fixed bugs. Inspired by the findings, we further pinpoint various challenges and opportunities for advanced SE study equipped with such LLMs (e.g.,~ChatGPT) in the near future. More importantly, our work calls for more research on the reevaluation of the achievements obtained by existing black-box LLMs across various SE tasks, not limited to ChatGPT on APR.
研究の動機と目的
- EvalGPTFix における未見のクリーンな APR ベンチマークで ChatGPT のバグ修正効果を評価する。
- 異なるプロンプト(問題説明、エラー情報、バグの特定)が修復性能にどう影響するかを調査する。
- 対話ベースの対話型インタラクションが ChatGPT による反復的なバグ修正を改善するかを検討する。
提案手法
- EvalGPTFix を構築する: AtCoder コンテスト(2023)からの 151 組の buggy-正 Java のペアを、テストケースベースの検証と unseen データを保証する静的/動的フィルタリングで作成。
- ChatGPT(gpt-3.5-turbo)を用い、各バグを最大 35 ラウンドにわたり繰り返しプロンプトで修正、連続して 3 ラウンド新しい修正が出なくなった時点で終了。
- FixEval データで微調整し、AtCoder のテストスイートに対してパッチを評価することで、最新の LLM CodeT5 と PLBART をベンチマークする。
- プロンプトを評価するために、(a) 問題説明、(b) エラー情報、(c) バグ localization、(d) 対話的な対話を追加し、追加で修正されたバグを測定する。
- リコール、バグ種別別の修正率、モデル間の重複を報告し、相対的な強みを評価する。
実験結果
リサーチクエスチョン
- RQ1RQ1: EvalGPTFix における buggy program の修復に対する ChatGPT の有効性はどの程度か?
- RQ2RQ2: 異なるプロンプトは ChatGPT の修復性能にどう影響するか?
- RQ3RQ3: 対話ベースのやり取りはさらに ChatGPT の修復成果を改善できるか?
主な発見
- ChatGPT は EvalGPTFix で基本プロンプトを用いて 151 バグ中 109 を修正した。
- 問題説明、エラー情報、バグ localization を追加することで、それぞれ追加で 18、25、10 バグを修正した。
- 対話は、プロンプトベースの試行を超えてさらに 9 バグの修正をもたらした。
- 全体として、EvalGPTFix で ChatGPT は 143 バグを修正しており、実世界の buggy プログラムの修復能力が高い可能性を示している。
- CodeT5 は 79 バグ、PLBART は 41 バグを修正し、本研究における ChatGPT の修復能力の優位性を示している。
- ChatGPT の出力には顕著なランダム性があり、結果を安定させるために最大 35 ラウンドの繰り返しが必要となる。
より良い研究を、今すぐ始めましょう
論文設計から論文執筆まで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。