プロンプトには、良いレスポンスがどのようなものかをモデルに示す例を含めることができます。モデルは、パターンと関係を例から識別し、レスポンスを生成する際にそれらを適用します。いくつかの例を含むプロンプトは少数ショット プロンプトと呼ばれ、例のないプロンプトはゼロショット プロンプトと呼ばれます。少数ショット プロンプトは、モデルのレスポンスの出力形式、フレーズ、範囲、一般的なパターンを規制するためによく使用されています。具体的で多様な例を使用して、モデルが焦点を絞り込み、より正確な結果を生成できるようにします。
少数ショットの例をプロンプトに含めると、信頼性と有効性を高めることができます。ただし、少数ショットの例には、常に明確な指示を添える必要があります。明確な指示がなければ、モデルが例から意図しないパターンや関係を拾い、結果が悪くなる可能性があります。
この戦略の要点は次のとおりです。
- モデルが応答方法を効率的に学習できるように、プロンプトにはプロンプト / レスポンスの例を含めてください。
- XML などのマークアップを使用して、サンプルをマークアップします。
- 表示するプロンプトの数を調べてみてください。モデルによっては、例が少なすぎると、モデルの動作の変更は期待できません。サンプルが多すぎると、モデルが過学習する原因となります。
- サンプル全体で一貫した形式を使用してください。
ゼロショット プロンプトと少数ショット プロンプト
次のゼロショット プロンプトは、テキストから技術仕様を抽出して JSON 形式で出力するようにモデルに指示しています。
Extract the technical specifications from the text below in JSON format. Google Pixel 7, 5G network, 8GB RAM, Tensor G2 processor, 128GB of storage, Lemongrass { "Network": "5G", "RAM": "8GB", "Processor": "Tensor G2", "Storage": "128GB", "Color": "Lemongrass" } |
ユースケースで特定の形式が必要であるとします(キー名を小文字にするなど)。プロンプトに、JSON の形式を指定するための例を含めることができます。次の少数ショット プロンプトは、JSON キーを小文字で出力するように指示しています。
Extract the technical specifications from the text below in a JSON format. <EXAMPLE> INPUT: Google Nest Wifi, network speed up to 1200Mpbs, 2.4GHz and 5GHz frequencies, WP3 protocol OUTPUT: { "product":"Google Nest Wifi", "speed":"1200Mpbs", "frequencies": ["2.4GHz", "5GHz"], "protocol":"WP3" } </EXAMPLE> Google Pixel 7, 5G network, 8GB RAM, Tensor G2 processor, 128GB of storage, Lemongrass { "product": "Google Pixel 7", "network": "5G", "ram": "8GB", "processor": "Tensor G2", "storage": "128GB", "color": "Lemongrass" } |
この例では、XML のような形式を使用してプロンプトのコンポーネントを分離しています。XML のような形式を使用して少数ショット プロンプトをフォーマットする詳しい方法については、プロンプトを構造化するをご覧ください。
最適なサンプル数を求める
最も望ましい結果が得られるように、プロンプトに表示するサンプルの数をテストできます。PaLM や Gemini などのモデルでは、多くの場合、いくつかの例を使用してパターンを検出できますが、望ましい結果につながる例の数をテストすることが必要な場合があります。同時に、過剰に多くの例を追加すると、モデルが例に対するレスポンスを過学習し始める可能性があります。
次のステップ
- プロンプトの他の例については、プロンプト ギャラリーをご覧ください。