【論文】ChatGPT Prompt Patterns for Improving Code Quality, Refactoring, Requirements Elicitation, and Software Design
2303.07839 論文概要 ソフトウェアエンジニアリングにおけるプロンプト設計技術を、パターンの形式で紹介。 大規模言語モデル(LLM)、例えば ChatGPT を使用して一般的なソフトウェアエンジニアリングの活動を自動化する際に生じる、一般的な問題を解決する方法を提案。例えば、コードをサードパーティライブラリから分離することや、要件リストから API 仕様を作成することなどが含まれる。 ソフトウェアエンジニアリングにおける LLM の活用に関する研究に対する論文の貢献: ソフトウェアエンジニアリング向けのパターンのカタログを提供し、それらを解決する問題の種類ごとに分類する。 要件抽出、迅速なプロトタイピング、コード品質の向上、デプロイメント、およびテストの改善に適用された複数のプロンプトパターンを探求する。 はじめに ソフトウェアエンジニアリングタスクの自動化におけるLLMとプロンプトの概要 一般的に、LLMとの対話は「プロンプト」を入力することで行われる。プロンプトとは、LLMにコンテキストを提供し、テキストの生成を誘導するための自然言語による指示のことである。 チャットベースの環境では、プロンプトはユーザーが ChatGPT などのLLMに送信するチャットメッセージとして機能する。本論文では、ChatGPT を活用したチャット対応のLLMに焦点を当てて議論を進める。 プロンプトの使い方には大きく分けて二つの方法がある。本論文では、これら二種類のプロンプトパターンについて詳しく扱う。 LLMに直接情報を求めたり、コードを生成させたりする方法。 LLMに特定のルールを指示し、それに従わせる方法(例:特定のコーディング規約に準拠させる)。 ソフトウェアエンジニアリングタスク向けのプロンプトパターンの概要 本論文は、以前の研究で提案した プロンプトパターン の概念 [9] に基づいている。プロンプトパターンとは、LLMとの対話における問題を解決するための再利用可能なプロンプト設計である。 プロンプトパターンは、ソフトウェアパターン [10], [11] と同様に、優れた設計経験を形式化したものであり、プログラムが特定の設計原則やセキュアコーディングガイドライン に準拠することを保証するなど、LLMとの対話における一般的な問題に対する再利用可能な解決策を...