プロンプト設計の基本とマルチモーダルの理解
Open AIのサイトでChatGPTのプロンプト最適化テクニックをまとめたページ(英語)が公開されましたが、程なくしてGoogleの方でもGeminiの最新版リリースにあわせてプロンプトテクニックに関するページ(日本語)が公開されました。
本記事では、Googleが提唱するGeminiに対するプロンプトエンジニアリングの要点をまとめていますので、これらの要点を実践することで、Geminiとの対話を最大限に活かすことができます。
▶ Google Geminiのプロンプト解説(日本語)はこちら 「プロンプト設計戦略」
プロンプト設計とは?
プロンプト設計とは、AIやコンピューターの言語モデルに対して望ましい反応を引き出すための質問や指示のプロセスです。このプロセスには、モデルに何をするかを伝えるための明確な質問、実行すべきタスク、関連する背景情報、具体的な例、部分的な入力などが含まれます。これらの要素を適切に組み合わせることで、言語モデルからの正確で高品質なレスポンスを得ることができます。
プロンプトを上手に作るコツ
プロンプト設計の戦略は、言語モデルの出力を最適化するために重要です。
下記の解説では、言語モデルとモデルは同じ意味として使用しています。
1. 明確な指示を出す
言語モデルに対する指示は、その効果を最大限に引き出す鍵です。例えば、ある文書を要約する際、単に「要約して」と指示するのではなく、「この文章を小学5年生が理解できるレベルで要約してください」と具体的に指示することで、モデルはより適切なレスポンスを生成します。このように、明確で具体的な指示は、モデルが望む結果を生み出すために不可欠です。
- どういうこと?:モデルに対して、何をすべきかを具体的かつ明確に伝えること。
- なぜ大切?:明確な指示は、モデルが目的に合った正確なレスポンスを生成するために必要です。
- 参考例:「この文章を小学5年生が理解できるレベルで要約してください」と指示することで、モデルは適切な複雑さの要約を提供します。
2. 例を含める
プロンプトに例を含めることで、言語モデルは望ましい応答のパターンを学習します。たとえば、ある文章の感情分析を行う場合、「この文章はポジティブですか、ネガティブですか?」と尋ねるのではなく、「『この映画は素晴らしかった!』はポジティブ、『全く楽しめなかった』はネガティブ」といった具体例を示すことで、モデルはより正確な感情分析を行うことができます。
- どういうこと?:プロンプトに具体的な例を含めて、モデルに望ましい応答のパターンを示すこと。
- なぜ大切?:例を含めることで、モデルはどのように応答すべきかを理解しやすくなります。
- 参考例:感情分析を行う際、「『この映画は素晴らしかった!』はポジティブ」という例を示すことで、モデルは正確な感情分析を行えます。
3. 言語モデルに部分的な入力を任せる
生成言語モデルは、与えられた部分的な情報から内容を推測し、完成させる能力を持っています。例えば、物語の冒頭を書き、続きをモデルに生成させることで、予期せぬ創造的な展開が生まれることがあります。このアプローチは、創作活動やアイデア生成に特に有効です。
- どういうこと?:モデルに部分的な情報を提供し、残りを補完させること。
- なぜ大切?:部分的な入力を任せることで、モデルは創造的で予期せぬ内容を生成することができます。
- 参考例:「昔々、ある王国に…」という物語の冒頭を書き、続きをモデルに生成させることで、新しいストーリーの展開が生まれます。
4. レスポンスの書式設定を言語モデルに指示する
言語モデルに特定の形式でのレスポンスを要求することも可能です。例えば、ビジネスプランの概要を「1. 目的 2. 戦略 3. 予算」という形式で要求することで、モデルは指定されたフォーマットに従ったレスポンスを生成します。これにより、特定の目的に合わせた情報の整理や提示が容易になります。
- どういうこと?:モデルに特定の形式でレスポンスを生成するよう指示すること。
- なぜ大切?:特定のフォーマットでのレスポンスは、情報の整理や提示を容易にします。
- 参考例:ビジネスプランの概要を「1. 目的 2. 戦略 3. 予算」という形式で要求することで、整理されたレスポンスを得られます。
5. コンテキスト情報を追加する
言語モデルに与える情報が豊富であればあるほど、より精度の高いレスポンスが期待できます。例えば、特定の製品に関する顧客のレビュー分析を行う場合、その製品の基本情報や市場背景などのコンテキストを提供することで、より深い洞察を得ることができます。
- どういうこと?:モデルに、タスクや質問に関連する追加情報や背景を提供すること。
- なぜ大切?:コンテキスト情報を提供することで、モデルはより精度の高い、関連性のあるレスポンスを生成することができます。
- 参考例:「第二次世界大戦についての要約を作成してください」という質問に、特定の戦闘や出来事に関する情報を追加する。
6. 接頭辞を追加する
接頭辞を使用することで、言語モデルの理解を助け、より適切なレスポンスを導き出すことができます。例えば、異なる言語間での翻訳を求める際に「英語:」「フランス語:」といった接頭辞を付けることで、モデルはどの言語からどの言語への翻訳を行うべきかを正確に理解します。
- どういうこと?:プロンプトに特定の単語やフレーズを前置して、モデルの理解を助けること。
- なぜ大切?:接頭辞を使用することで、モデルはタスクの意図をより正確に理解し、適切なレスポンスを生成できます。
- 参考例:翻訳タスクで「英語:」「フランス語:」といった接頭辞を使用することで、モデルは翻訳の方向性を正確に把握します。
7. さまざまなパラメータ値を試す
言語モデルのパラメータを調整することで、異なる種類のレスポンスを得ることができます。
- どういうこと?:言語モデルの設定やパラメータを調整して、異なる種類のレスポンスを得ること。
- なぜ大切?:パラメータの調整により、モデルの応答の多様性や創造性をコントロールできます。
- 参考例:創造的な物語を生成する際に、モデルの「創造性」パラメータを高く設定する。
8. プロンプトの反復処理に関する戦略
プロンプトの反復処理は、望ましい結果を得るために重要です。異なる言い回しやタスクの変更を試すことで、モデルの応答を最適化できます。例えば、ある質問に対するモデルの回答が不十分な場合、質問の言い回しを変えてみることで、より良い結果が得られることがあります。
- どういうこと?:同じ質問やタスクを異なる言い回しやアプローチで繰り返し試すこと。
- なぜ大切?:異なるアプローチを試すことで、モデルの応答を最適化し、より良い結果を得ることができます。
- 参考例:「この絵は何を表していますか?」という質問を異なる言い回しで何度も試す。
9. 非推奨事項
事実に基づく情報の生成や数学・論理問題については、言語モデルの使用を慎重に行うべきです。これらの分野では、言語モデルの限界を理解し、適切な検証を行うことが重要です。
- どういうこと?:言語モデルの使用において避けるべき事項やアプローチ。
- なぜ大切?:言語モデルの限界や不正確さを理解し、誤った情報や結果を避けるためです。
- 参考例:数学の複雑な問題や、事実に基づく情報の生成には、言語モデルの使用を慎重に行う。
マルチモーダルって何?
マルチモーダルは、テキストだけでなく、画像や動画などの複数のモードを組み合わせたプロンプト設計を指します。このアプローチでは、言語モデルが画像の関連部分から情報を取得するためのヒントを与えたり、画像の内容を参照するように言語モデルに求めたりすることが重要です。具体的な指示を与えることで、モデルは特定の出力を生成することができます。例を追加することで、モデルがパターンを特定し、指定された画像とレスポンスの関係を新しい例に適用できるようになります。また、タスクを小さく簡単なステップに分割することや、出力形式を指定することも有効です。