🍣

私のプロンプト設計論

に公開

生成AI時代におけるプロンプトの重要性

現代は生成AIの発展が目覚ましく、数年前には不可能だったことが、瞬く間に実現する時代になりました。この進化のスピードはもはや予測可能な域を超え、一時的なブームではなく、社会構造を根本から変える「現代の産業革命」と呼べるものです。

その生成AIの成果を最大限に引き出す鍵となるのがプロンプトです。これからいかにプロンプトを組み立て、活用していくかが、個人の生産性や企業の競争力を左右する重要な要素となります。

本稿では、プロンプトの組み立て方に関する私の知見を、具体的な例を挙げながら解説します。

プロンプト設計のテーマ:英会話パートナーAI

題材として、「英会話パートナー」を設定します。個人的な英語学習で感じる不満、すなわち「文法学習と会話能力の学習が両立しにくい」という問題を解決するため、以下の要件を満たすAIの作成を目指します。

  • 要件1: 会話形式で英語のやり取りを行う。
  • 要件2: 自分の文法的な誤りを指摘・訂正してくれる。

プロンプト設計の方針:PDCAを回す

プロンプトエンジニアリングは、プログラミングとは異なり、出力の予測が難しいという課題があります。また、使用するAIモデルやバージョンによって結果が大きく変動することもあります。

そのため、プロンプト設計の大まかな方針として、「プロンプトのPDCAを効率的に回し、質の良いプロンプトを発見する」ことを掲げます。

まず、目指すべき理想的なやり取りを想定します。今回は「空港の入国審査」を想定し、会話と文法訂正が同時に行われる様子を具体的にイメージします。

理想のやり取りの例

AI:どのような状況で会話しますか?
You:空港の保安検査

AI: Good morning/afternoon/evening. Welcome to Japan. May I see your passport, please?
You: Good morning/afternoon/evening. Here you are.

AI: What is the purpose of your visit?
You: I'm here for sightseeing/business/visiting family/studying.

AI: How long will you be staying in Japan?
You: I will staying for [期間] days/weeks/months.
correction: "will staying" → "will be staying": 未来進行形にするためには、助動詞 "will" の後に "be" を置き、動詞を現在分詞形 (-ing形) にする必要があります。

...

今回は、生成AIとしてGeminiを使用します。

プロンプトの組み立て方

1. 目的を明確に伝える

最近のAIは非常に優秀なため、細かく指示するよりも、まずは「何をしたいのか」を正直に伝えるのが効果的です。AIに「あなた(AI)の役割」と「私(ユーザー)の役割」を明確にすることで、ブレのないやり取りが期待できます。

最初のプロンプト:

私は現在英語を学習中です。ただしい文法と会話能力の両方を身に着けたいです。
そこで、あなたは英会話パートナーとして私と英会話をしつつ、私が文法的に間違った返答をしていれば訂正してください。

このプロンプトを実行すると、AIはすぐに会話を始めようとします

返答例:

承知いたしました!喜んで英会話パートナーになります。文法の間違いは丁寧に訂正し、より自然な表現も提案させていただきます。

では、早速ですが、まずは簡単な自己紹介から始めましょうか?

Me: Hi there! It's nice to meet you. I'm excited to practice English with you. To start, could you tell me a little about yourself? What do you do and what are your hobbies?

しかし、想定していた「特定の状況を設定して会話する」という使い方とは異なるため、次のステップで修正を加えます。

2. 想定外を潰す

最初のやり取りで発生した「AIが勝手に会話を始めた」という想定外を解消するため、プロンプトを改善します。

改善プロンプト:

私は現在英語を学習中です。ただしい文法と会話能力の両方を身に着けたいです。そこで、あなたは英会話パートナーとして私と英会話をしつつ、私が文法的に間違った返答をしていれば訂正してください。

+ まず、どのような状況で会話を行うかを私に質問してください。

これにより、AIは状況設定を尋ねるようになりました。

しかし、AIの応答が長すぎる(例を挙げたり、感想を述べたりする)という新たな課題が発生しました。このような場合は、「禁止事項」と「推奨事項」をプロンプトに含めることで、出力をよりコントロールできます。

さらに改善したプロンプト:

私は現在英語を学習中です。ただしい文法と会話能力の両方を身に着けたいです。
そこで、あなたは英会話パートナーとして私と英会話をしつつ、私が文法的に間違った返答をしていれば訂正してください。

まず、どのような状況で会話を行うかを私に質問してください。
+ その際、例を挙げたり、感想を述べることは禁止されています。
+ 簡潔に状況のみを聞いてください。

この結果、応答は簡潔になりましたが、返答に「例えば、仕事、旅行、趣味など。」という不要な部分が残ってしまっています。

返答例:

どのような状況での会話をご希望ですか?例えば、仕事、旅行、趣味など。

指示がうまく伝わっていないようです。

3. 理想的な出力を例示する

指示がうまく伝わらない場合は、理想的な応答を具体例として示すことが有効です。

私は現在英語を学習中です。ただしい文法と会話能力の両方を身に着けたいです。
そこで、あなたは英会話パートナーとして私と英会話をしつつ、私が文法的に間違った返答をしていれば訂正してください。

まず、どのような状況で会話を行うかを私に質問してください。
その際、例を挙げたり、感想を述べることは禁止されています。
簡潔に状況のみを聞いてください。

+ <examples>
+ "どのような状況で会話しますか",
+ "今の状況を教えてください",
+ </examples>

この修正により、AIは完璧に意図を汲み取り、「どのような状況での会話をご希望ですか?」と簡潔な応答を返すようになりました。

出力形式の指定:JSON形式での出力

さらに、このAIをAPIとして利用することを想定し、出力形式をJSON形式に指定します。
モデルによっては出力形式を指定する独自の方法がありますが、Geminiはプロンプト内で指定することも可能です。

私は現在英語を学習中です。ただしい文法と会話能力の両方を身に着けたいです。
そこで、あなたは英会話パートナーとして私と英会話をしつつ、私が文法的に間違った返答をしていれば訂正してください。

まず、どのような状況で会話を行うかを私に質問してください。
その際、例を挙げたり、感想を述べることは禁止されています。
簡潔に状況のみを聞いてください。
<examples>
{   
 message : "どのような状況で会話しますか",   
 correction: null,
},

{
     message : "今の状況を教えてください",
     correction: null,
}
</examples>

+ 出力はJSON形式でしてください
+ <schema>
+ {
+     message : str,
+     correction: str | null,
+ }
+ </schema>

このように、プロンプトのPDCAを回し、具体的な「禁止事項」「推奨事項」「出力例」「スキーマ」などを細かく指定していくことで、理想的な成果物を得ることができます!

Discussion