【論文】ChatGPT Prompt Patterns for Improving Code Quality, Refactoring, Requirements Elicitation, and Software Design
論文概要
- ソフトウェアエンジニアリングにおけるプロンプト設計技術を、パターンの形式で紹介。
- 大規模言語モデル(LLM)、例えば ChatGPT を使用して一般的なソフトウェアエンジニアリングの活動を自動化する際に生じる、一般的な問題を解決する方法を提案。例えば、コードをサードパーティライブラリから分離することや、要件リストから API 仕様を作成することなどが含まれる。
- ソフトウェアエンジニアリングにおける LLM の活用に関する研究に対する論文の貢献:
- ソフトウェアエンジニアリング向けのパターンのカタログを提供し、それらを解決する問題の種類ごとに分類する。
- 要件抽出、迅速なプロトタイピング、コード品質の向上、デプロイメント、およびテストの改善に適用された複数のプロンプトパターンを探求する。
はじめに
ソフトウェアエンジニアリングタスクの自動化におけるLLMとプロンプトの概要
- 一般的に、LLMとの対話は「プロンプト」を入力することで行われる。プロンプトとは、LLMにコンテキストを提供し、テキストの生成を誘導するための自然言語による指示のことである。
- チャットベースの環境では、プロンプトはユーザーが ChatGPT などのLLMに送信するチャットメッセージとして機能する。本論文では、ChatGPT を活用したチャット対応のLLMに焦点を当てて議論を進める。
- プロンプトの使い方には大きく分けて二つの方法がある。本論文では、これら二種類のプロンプトパターンについて詳しく扱う。
- LLMに直接情報を求めたり、コードを生成させたりする方法。
- LLMに特定のルールを指示し、それに従わせる方法(例:特定のコーディング規約に準拠させる)。
ソフトウェアエンジニアリングタスク向けのプロンプトパターンの概要
- 本論文は、以前の研究で提案した プロンプトパターン の概念 [9] に基づいている。プロンプトパターンとは、LLMとの対話における問題を解決するための再利用可能なプロンプト設計である。
- プロンプトパターンは、ソフトウェアパターン [10], [11] と同様に、優れた設計経験を形式化したものであり、プログラムが特定の設計原則やセキュアコーディングガイドライン に準拠することを保証するなど、LLMとの対話における一般的な問題に対する再利用可能な解決策を提供する。
- 開発者やソフトウェアエンジニアは、LLMを活用する際に、プロンプトパターンを用いてルールや制約を設定することで、モジュール性や再利用性 などのソフトウェア品質属性を向上させることができる。
- 例えば、プロンプトパターンを使用すると、生成されたコード(またはユーザーが提供したコードをリファクタリングする際のコード)が、ビジネスロジック と 副作用を伴うコード(例:ファイルシステムアクセス、データベースアクセス、ネットワーク通信など)を分離するように保証できる。このような制約を設けることで、ビジネスロジックを 副作用を伴うコードから切り離し、テストしやすく、理解しやすい設計にすることが可能となる。
- プロンプトパターンを活用することで、サードパーティライブラリ に対して、中間の抽象レイヤーを挿入することを強制できる。これにより、ビジネスロジックが 外部依存関係と密結合にならないようにし、コードの保守性と適応性を向上させることができる。
ソフトウェアエンジニアリング向けのプロンプトパターンカタログに向けて
- 本論文は、以前の研究 [9] を発展させ、ソフトウェア開発ライフサイクル全体で協調的に適用できるプロンプトパターンのカタログ の作成に焦点を当てている。
- 本論文では、設計初期段階でシステムをシミュレーションし、論理的に検討するためのパターンから、LLMのトークン制限の問題を軽減しながらコードを生成するためのパターンまで、さまざまなプロンプトパターンを紹介する。
- さらに本研究では、複数のパターンを組み合わせた場合の関係性を探求し、どのようなパターンの組み合わせや順序が最も効果的に機能するかを分析する。
コメント
コメントを投稿