プロンプト戦略の概要

プロンプトの設計に正しい方法や間違った方法はありませんが、モデルのレスポンスに影響を与えるために使用できる一般的な戦略があります。モデルのパフォーマンスを最適化するには、厳格なテストと評価が不可欠です。

大規模言語モデル(LLM)は、言語単位間のパターンと関係を学習するために、膨大なテキストデータでトレーニングされています。テキスト(プロンプト)を受け取った言語モデルは、高度な予測入力ツールのように、次に来ると思われるものを予測できます。したがって、プロンプトを設計する際は、モデルによる次の予測に影響を与える可能性のあるさまざまな要因を考慮してください。

プロンプト エンジニアリングのワークフロー

プロンプト エンジニアリングは、モデルのパフォーマンスを向上させるテスト駆動型の反復プロセスです。プロンプトを作成する際は、各プロンプトの目的と期待される成果を明確に定義し、それらを体系的にテストして改善の余地を特定することが重要になります。

次の図は、プロンプト エンジニアリングのワークフローを示しています。

プロンプト エンジニアリングのワークフロー図

効果的なプロンプトを作成する方法

最終的にプロンプトの有効性に影響する要素は、コンテンツ構造の 2 つです。

  • コンテンツ:

    タスクを完了するには、モデルにタスクに関連するすべての情報を提供する必要があります。この情報には、指示、例、コンテキスト情報などが含まれます。詳しくは、プロンプトのコンポーネントをご覧ください。

  • 構成:

    必要なすべての情報がプロンプトで提供されている場合でも、情報構造を指定すると、情報の解析がスムーズに行われます。順序、ラベル付け、区切り文字の使用などは、すべてレスポンスの品質に影響します。プロンプトの構造の例については、プロンプト テンプレートの例をご覧ください。

プロンプトのコンポーネント

次の表に、プロンプトの必須コンポーネントと省略可能なコンポーネントを示します。

コンポーネント 説明
目的 モデルに達成してほしいこと。具体的に記述し、全体的な目標も含めてください。「ミッション」、「目標」とも呼ばれます。 あなたの目標は、数学の問題を解いている生徒に答えを直接教えることではありません。生徒の学習をサポートすることです。
指示 タスクを実行するための詳しい指示。「タスク」、「手順」、「指示」とも呼ばれます。
  1. 問題の意図を理解します。
  2. 生徒がどこでつまずいているのかを把握します。
  3. 問題を解くためのヒントを提示します。
オプション コンポーネント
システム指示

一連のタスクでモデルの動作を制御または変更する技術的または環境的な指示。多くのモデル API では、システム指示は専用パラメータで指定されます。

システム指示は Gemini 2.0 Flash 以降のモデルで使用できます。

あなたは、フロントエンド インターフェースのコードのレンダリングを専門とするコーディングの専門家です。作成するウェブサイトのコンポーネントを説明する際は、作成に必要な HTML と CSS を返してください。このコードの説明は行わないでください。UI デザインも提案してください。
ペルソナ モデルがどのような役割で動作しているか。「ロール」、「ビジョン」とも呼ばれます。 あなたは数学の家庭教師で、生徒の数学の宿題を手伝っています。
制約 レスポンスの生成時にモデルが遵守すべき制限。これには、モデルができることと、できないことが含まれます。「ガードレール」、「境界」、「制御」とも呼ばれます。 生徒に直接答えを教えないでください。代わりに、問題を解くためのヒントを提示してください。生徒が混乱している場合には、問題を解くための具体的な方法を伝えてください。
トーン レスポンスの口調。ペルソナを指定することで、スタイルとトーンにも影響を与えることができます。「スタイル」、「声」、「ムード」とも呼ばれます。 カジュアルなトーンで専門的な表現を使って回答してください。
コンテキスト モデルが現在のタスクを実行するために参照する必要がある情報。「背景」、「ドキュメント」、「入力データ」とも呼ばれます。 数学の授業計画。
少数ショットの例 特定のプロンプトに対するレスポンスの例。「エクゼンプラー」または「サンプル」とも呼ばれます。 input: あなたは、1 立方メートルの容積の箱に何個のゴルフボールが入るかを計算しようとしています。1 立方メートルを立方センチメートルに換算し、ゴルフボールの体積(立方センチメートル)で割りましたが、私の回答が間違っていると指摘されました。
output: ゴルフボールは球体であり、効率的に空間に詰め込むことはできません。計算では、球の最大パック効率を考慮する必要があります。
推論手順 モデルに推論方法を説明します。これにより、モデルの推論能力が向上する場合があります。「思考ステップ」とも呼ばれます。 推論を段階的に説明します。
レスポンスの形式 レスポンスの形式。たとえば、JSON、表、マークダウン、段落、箇条書き、キーワード、エレベーター ピッチなどでレスポンスを出力するようにモデルに指示します。「構造」、「プレゼンテーション」、「レイアウト」とも呼ばれます。 レスポンスをマークダウン形式にしてください。
内容のまとめ プロンプトの末尾で、プロンプトの主なポイント(特に制約とレスポンスの形式)を簡潔に繰り返します。 答えを教えずに、ヒントを提示してください。レスポンスは常にマークダウン形式にします。
安全保護対策 質問をボットのミッションに関連付けます。「安全ルール」とも呼ばれます。 なし

特定のタスクに応じて、省略能なコンポーネントの一部を含めるか除外するかを選択できます。コンポーネントの順序を調整して、レスポンスにどのように影響するかを確認することもできます。

プロンプト テンプレートのサンプル

次のプロンプト テンプレートは、適切に構造化されたプロンプトの例を示しています。

      <OBJECTIVE_AND_PERSONA>
      You are a [insert a persona, such as a "math teacher" or "automotive expert"]. Your task is to...
      </OBJECTIVE_AND_PERSONA>

      <INSTRUCTIONS>
      To complete the task, you need to follow these steps:
      1.
      2.
      ...
      </INSTRUCTIONS>

      ------------- Optional Components ------------

      <CONSTRAINTS>
      Dos and don'ts for the following aspects
      1. Dos
      2. Don'ts
      </CONSTRAINTS>

      <CONTEXT>
      The provided context
      </CONTEXT>

      <OUTPUT_FORMAT>
      The output format must be
      1.
      2.
      ...
      </OUTPUT_FORMAT>

      <FEW_SHOT_EXAMPLES>
      Here we provide some examples:
      1. Example #1
          Input:
          Thoughts:
          Output:
      ...
      </FEW_SHOT_EXAMPLES>

      <RECAP>
      Re-emphasize the key aspects of the prompt, especially the constraints, output format, etc.
      </RECAP>
    

ベスト プラクティス

プロンプト設計のベスト プラクティスは次のとおりです。

プロンプトの健全性チェックリスト

プロンプトが期待どおりに機能しない場合は、次のチェックリストを使用して潜在的な問題を特定し、プロンプトのパフォーマンスを改善します。

書き込みに関する問題

  • タイプミス: タスクを定義するキーワード(summarize ではなく sumarize など)、技術用語、エンティティ名に誤字脱字がないか確認します。誤字脱字があると、パフォーマンスが低下する可能性があります。
  • 文法: 文の解析が難しい、文が長すぎる、主語と動詞が一致していない、構造的に不自然な場合、モデルがプロンプトを正しく理解できないことがあります。
  • 句読点: カンマ、ピリオド、引用符などの区切り文字の使用を確認します。句読点が正しくないと、モデルがプロンプトを誤って解釈する可能性があります。
  • 未定義の専門用語の使用: プロンプトで明示的に定義されていない限り、ドメイン固有の用語、頭字語、頭文字語を普遍的な意味を持つものとして使用しないでください。
  • 明確さ: 範囲、具体的な手順、暗黙の前提条件について疑問に思う場合は、プロンプトが不明確である可能性があります。
  • 曖昧さ: 具体的な測定可能な定義がない主観的または相対的な修飾語は使用しないでください。代わりに、客観的な制約を指定します(「簡単な要約を作成して」ではなく「3 文以内の要約を作成して」など)。
  • 重要な情報が不足している: 特定のドキュメント、会社の方針、ユーザーの履歴、データセットに関する知識が必要なタスクの場合は、その情報がプロンプトに明示的に含まれていることを確認します。
  • 単語の選択が不適切: プロンプトに、モデルを混乱させる可能性のある、不必要に複雑、曖昧、冗長な表現が含まれていないか確認します。
  • 二次審査: モデルのパフォーマンスが低い場合は、別のユーザーにプロンプトを審査してもらいます。

手順と例に関する問題

  • 明らかな操作: 感情的な訴えかけ、おだて、人工的なプレッシャーを使用してパフォーマンスに影響を与えようとする、コアタスク以外の言語をプロンプトから削除します。第 1 世代の基盤モデルでは、「これを正しく行わないと非常に悪いことが起こる」などの指示で状況によっては改善が見られましたが、基盤モデルのパフォーマンスは改善されなくなり、多くの場合、悪化します。
  • 競合する指示と例: プロンプトを監査して、論理的な矛盾や、指示と指示、または指示と例の不一致がないか確認します。
  • 冗長な指示と例: プロンプトと例を確認して、新しい情報やニュアンスを追加することなく、同じ指示やコンセプトが少し異なる方法で複数回記述されていないか確認します。
  • 無関係な手順と例: すべての手順と例がコアタスクに不可欠かどうかを確認します。モデルがコアタスクを実行する能力を損なうことなく削除できる指示や例がある場合は、それらは無関係である可能性があります。
  • 「少数ショット」の例の使用: タスクが複雑な場合、特定の形式が必要な場合、またはニュアンスのあるトーンが必要な場合は、サンプル入力と対応する出力を示す具体的な例があることを確認してください。
  • 出力形式の指定がない: モデルに出力構造を推測させるのではなく、明確で明示的な指示を使用して形式を指定し、少数ショットのサンプルで出力構造を示します。
  • ロール定義がない: モデルに特定のロールで動作させる場合は、そのロールがシステム指示で定義されていることを確認してください。

プロンプトとシステム設計に関する問題

  • タスクの指定不足: プロンプトの指示で、エッジケースと予期しない入力の処理方法が明確に示されていることを確認します。また、挿入されたデータが常に存在し、形式が整っていることを前提とするのではなく、欠落したデータの処理方法が示されていることを確認します。
  • モデルの機能外のタスク: モデルに既知の基本的な制限があるタスクの実行を求めるプロンプトの使用は避けてください。
  • タスクが多すぎる: プロンプトで、モデルに 1 回のパスで複数の異なる認知アクションを実行するように指示した場合(例: 1. 要約します。2. エンティティを抽出します。3. Translate、4. メールの下書きを作成する)は、処理しようとしていることが多すぎる可能性があります。リクエストを個別のプロンプトに分割します。
  • 非標準のデータ形式: モデルの出力が機械可読であるか、特定の形式に従う必要がある場合は、一般的なライブラリで解析できる JSON、XML、Markdown、YAML などの広く認識されている標準を使用します。ユースケースで標準以外の形式が必要な場合は、モデルに一般的な形式で出力するようにリクエストし、コードを使用して出力を変換することを検討してください。
  • Chain of Thought(CoT)の順序が正しくない: モデルがステップごとの推論を完了する前に、最終的な構造化された回答を生成する例を提供しないでください。
  • 内部参照の競合: 非線形ロジックや条件付きのプロンプトは避けてください。モデルがプロンプト内の複数の異なる場所から断片的な指示を組み立てる必要が生じます。
  • プロンプト インジェクションのリスク: プロンプトに挿入される信頼できないユーザー入力の周囲に明示的な保護対策があるかどうかを確認します。これは重大なセキュリティ リスクになる可能性があります。

次のステップ