REprompt: Prompt Generation for Intelligent Software Development Guided by Requirements Engineering
本論文は、要求工学の原則を活用してシステムプロンプトおよびユーザープロンプトを自動的に生成・最適化することで、現実的なソフトウェア開発シナリオにおける大規模言語モデルベースのコーディングエージェントが生成するアーティファクトの品質を向上させるマルチエージェントフレームワークであるREpromptを導入するものである。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
想像してみてください。あなたは家を建てたいと思っていますが、建築家に相談する代わりに、非常に賢いが少し混乱しているロボットの建設作業員に向かって、曖昧な指示を叫んでいます。あなたは「かっこいい家を建てて」と言います。すると、ロボットは城や宇宙船、あるいは屋根のない家を建ててしまうかもしれません。なぜなら、ロボットはあなたにとっての「かっこいい」が具体的に何を意味するのかを知らないからです。
これが、今日、大規模言語モデル(LLM)を使ってソフトウェアを書こうとする際に直面している問題です。LLMは「ロボットの建設作業員」であり、あなたの「プロンプト」(指示)はあまりにも曖昧すぎて、結果として乱雑だったり壊れたりしたコードを生んでしまいます。
この論文では、REpromptと呼ばれる新しいツールを紹介しています。REpromptを、魔法の呪文ではなく、あなたとロボットの建設作業員の間に立つプロの要件エンジニアだと考えてください。
コアとなる考え方:プロンプトを設計図として扱う
ソフトウェア構築の世界には、「要件エンジニアリング(Requirements Engineering)」という規律があります。これは、エンジニアがクライアントと座って、適切な質問を投げかけ、正確に何が必要かを突き止め、明確な設計図として書き出し、建設が始まる前にその設計図が理にかなっているかを確認するプロセスです。
著者たちは、私たちがAIと対話するとき、この極めて重要なステップをスキップしてしまっていることに気づきました。私たちはただ、素早い命令を出しているだけなのです。REpromptは、このAIとの会話を、構造化されたエンジニアリングのプロセスへと変えることで、この問題を解決します。
REpromptの仕組み:4つのステップからなるチーム
一つのAIがあなたの意図を推測しようとするのではなく、REpromptは、人間のエンジニアリングチームのように機能する、4つの特化したAI「エージェント(キャラクター)」のチームを使用します。彼らは、実際の家を建てる時のように、4つの段階を経て進みます。
インタビュアーとインタビュー対象者(引き出し:Elicitation)
- 比喩: 探偵(インタビュアー)が目撃者(インタビュー対象者)に話を聞いている場面を想像してください。
- 何が起きるか: あなたが曖昧なアイデア(例:「ゲームを作りたい」)を与えます。インタビュアーAIは、インタビュー対象者AIに対して、「ルールはどうなりますか?」「プレイヤーは何人ですか?」「負けたらどうなりますか?」といったスマートな質問を投げかけます。インタビュー対象者は、構造化された方法で回答します。これにより、あなたの漠けいな願いが、詳細なニーズのリストへと変わります。
アナリスト(分析:Analysis)
- 比喩: 探偵のメモを見て、ラフスケッチを描いている建築家。
- 何が起きるか: インタビュアーAIは、それらの回答をすべて取り込み、ドラフト版の「ソフトウェア要件仕様書」へと整理します。これは、乱雑な願いのリストを、正式なToDoリストへと変換する作業に似ています。
スペシファイア(仕様策定:Specification)
- 比喩: 建築家のスケッチを、建設チームのための厳格でステップ・バイ・ステップの取扱説明書へと翻訳する翻訳者。
- 何が起きるか: このエージェント(CoTerと呼ばれます)は、ドラフトを受け取り、それを「思考の連鎖(Chain of Thought)」へと変換します。
- もしあなたがソフトウェア(ゲームなど)を求めている場合、それはタスクを厳格なプログラミング手順(例:「まず、ボードを作る。次に、駒を追加する」)に分解します。
- もしあなたがAI自身の性格を改善しようとしている場合(システムプロンプト)、指示を「あなたは誰か」「何を知っているか」「どのように振る舞うか」といった明確なセクションに整理します。
クリティック(検証:Validation)
- 比喩: 建設が始まる前に、設計図をチェックする建築検査官。
- 何が起きるか: このエージェントは、最終的な指示マニュアルを確認します。「何か足りないものはないか?」「分かりにくい部分はないか?」「矛盾していないか?」と問いかけます。もし答えが「イエス」であれば、修正するためにスペシファイアに差し戻します。
検証内容(結果)
研究者たちは単に理論を述べただけでなく、実際にこれを作成し、主に2つの方法でテストしました。
1. AIの「職務記述書」(システムプロンプト)の改善
彼らは、MetaGPT(AIワーカーのチームがソフトウェアを構築するようなシステム)という有名なマルチエージェント・システムを使用しました。彼らは、チームリーダーやアーキテクトの元の「職務記述書(プロンプト)」を取り出し、REpromptを通して実行しました。
- 結果: AIチームは、より優れたドキュメント(プロジェクト計画や設計図など)を作成しました。人間がこれらの計画に基づいて実際に構築されたソフトウェアをテストしたところ、ユーザーの満足度は高く、使いやすさや品質も高いと感じられました。これは、建設作業員に、屋根の漏れがない家を建てるための、より優れた設計図を与えたようなものです。
2. あなたの指示(ユーザープロンプト)の改善
彼らは、人々が簡単なリクエストを入力してウェブアプリを生成できるYouWareというプラットフォームでREpromptをテストしました。
- 結果: ユーザーが「スネークゲームが欲しい」や「計算機が欲しい」といった単純な入力をした場合、REpromptはまずそのリクエストを「インタビュー」して詳細を肉付けし、その後、改善された指示をAIに送りました。その結果、生成されたゲームやツールは、ユーザーが直接単純なリクエストを入力した場合よりも、大幅に質が高く、楽しく、スムーズに動作しました。
まとめ
この論文は、REpromptがうまく機能する理由は、AIにプロのエンジニアのように「立ち止まって考える」ことを強制するからだと主張しています。コーディングへと急ぐ代わりに、まず質問を行い、計画を整理し、エラーをチェックするのです。
- REpromptがない場合: あなたが「家を建てて」と言うと、ロボットはレンガの山を築きます。
- REpromptがある場合: ロボットは「大きさは? 部屋の数は? スタイルは?」と尋ねます。そして、計画を書き、その計画をチェックし、それから、あなたが本当に望んでいた通りの家を建てるのです。
この研究は、人間のソフトウェアエンジニアリングの手法(要件エンジニアリング)を借りることで、AIエージェントが私たちに代わってソフトウェアを理解し、構築する能力を大幅に向上させられることを証明しています。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。