プロンプト エンジニアリングを使用してモデルの出力を最適化する
モデルのパフォーマンスを最適化する最もアクセスしやすい方法は、 プロンプト エンジニアリングを使用することです。 プロンプト エンジニアリングは、言語モデルが生成する応答の品質、精度、関連性を向上させるためにプロンプトを設計および調整するプロセスです。 追加のインフラストラクチャやトレーニング データは必要なく、すぐに実験を開始できます。
プロンプト コンポーネントを理解する
言語モデルと対話すると、質問の品質が応答の品質に直接影響します。 適切に構築されたプロンプトは、モデルが必要なものを理解し、より有用な回答を生成するのに役立ちます。
チャット完了モデルのプロンプトには、通常、次のコンポーネントが含まれます。
- システム メッセージ: モデルの動作、ロール、制約を定義する命令。
- ユーザー メッセージ: ユーザーからの質問または入力。
- アシスタント メッセージ: 以前のモデルの応答。複数ターンの会話で使用されます。
- 例: 予想される応答形式を示す入力と出力のペアのサンプル。
これらのコンポーネントを構成して結合する方法によって、モデルが応答する効果が決まります。
効果的なシステム メッセージを設計する
システム メッセージは、応答をガイドするためにモデルに提供する一連の命令です。 通常、システム メッセージは会話の最初に表示され、最上位レベルの命令セットとして機能します。 次の場合に使用します。
- アシスタントの役割と境界を定義します。
- トーンとコミュニケーションスタイルを設定します。
- JSON や箇条書きなどの出力形式を指定します。
- シナリオの安全性と品質の制約を追加します。
システム メッセージは、次のような単純な場合があります。
You are a helpful AI assistant.
または、詳細なルールと書式設定の要件を含めることができます。 たとえば、旅行代理店のチャット アプリケーションでは、次を使用できます。
You are a friendly travel advisor for Margie's Travel.
Answer only questions related to travel, hotels, and trip planning.
Use a warm, conversational tone.
If you don't have enough information to answer, ask a clarifying question.
Format hotel recommendations as a bulleted list with the hotel name, location, and price range.
Important
システム メッセージはモデルに影響しますが、コンプライアンスは保証されません。 システム メッセージをテストして反復処理し、コンテンツのフィルター処理や評価などの他の軽減策を使用してそれらをレイヤー化する必要があります。
システム メッセージを設計するときは、次のチェックリストに従います。
- アシスタントのロールから始める: 一般的な要求のロールと予想される結果を指定します。
- 境界を定義する: アシスタントが回避する必要があるトピック、アクション、およびコンテンツ タイプを一覧表示します。
- 出力形式を指定する: 特定の形式が必要な場合は、簡潔に指定し、一貫性を保ちます。
- 「不明な場合」のポリシーを追加する: ユーザーの要求があいまいであったり、スコープ外であったり、モデルに情報が不足している場合に、モデルにどうすべきかを伝えるようにします。
プロンプト パターンを適用する
効果的なプロンプトでは、モデルがより良い応答を生成するのに役立つパターンが使用されます。 使用できる一般的なパターンを次に示します。
ペルソナ パターン
特定の視点または役割をモデルに指示します。 たとえば、熟練したマーケティングプロフェッショナルとして対応するようにモデルに依頼すると、ペルソナをまったく使用しない場合とは異なる結果が得られます。
| ペルソナなし | ペルソナ付き | |
|---|---|---|
| システム メッセージ | なし | 技術的な顧客に向けて執筆を行う経験豊富なマーケティングの専門家です。 |
| ユーザー プロンプト | CRM 製品の 1 文の説明を記述します。 | CRM 製品の 1 文の説明を記述します。 |
| 応答 | CRM 製品は、会社の顧客との対話を管理するために設計されたソフトウェア ツールです。 | 堅牢な分析を使用して、運用を合理化し、売上の成長を促進するように設計された CRM を使用して、シームレスな顧客関係管理を体験します。 |
テンプレート パターンの書式設定
プロンプトにテンプレートまたは構造を指定して、特定の形式で出力を取得します。 たとえば、ホテルに関する構造化された応答が必要な場合は、次のようになります。
Format the result to show:
- Hotel name
- Location
- Star rating
- Price range per night
このパターンにより、アプリケーションで簡単に解析できる一貫性のある、整理された応答が保証されます。
考え方の連鎖パターン
モデルに、その推論のステップ バイ ステップを説明するように依頼します。 この手法は、 一連の思考と呼ばれ、不正確な結果が生じる可能性を減らし、モデルのロジックを簡単に検証できるようにします。
たとえば、"4 人家族に最適なホテルはどれですか" と尋ねる代わりに、次のメッセージを表示できます。
Which hotel is best for a family of four? Take a step-by-step approach:
consider room size, amenities for children, location, and price.
関連する手法は、一度にすべてを推論するのではなく、モデルが応答する前にタスクを明示的なサブステップに分割することです。 たとえば、最初にモデルに対して、一節から重要な事実を抽出し、次にフォローアップ プロンプトで、それらの事実に基づいて質問に回答するように求める場合があります。 このように作業を分解すると、複雑なマルチパート タスクのエラーが軽減されます。
注
思考の流れプロンプトは、非推論モデル向けの手法です。 O シリーズ モデルのような推論モデルは、ステップ バイ ステップ ロジックを内部的に処理します。
少数ショット学習パターン
モデルが目的のパターンを識別するのに役立つ、必要な入力と出力の 1 つ以上の例を指定します。 この手法は 少数ショット学習 (または 1 つの例に対する 1 ショット学習) と呼ばれます。 例が提供されていない場合は、 ゼロショット 学習と呼ばれます。
たとえば、顧客の問い合わせを分類するには、次のようにします。
Classify the following customer messages:
Message: "I need to change my flight to Rome"
Category: Booking change
Message: "What's the weather like in Bali in March?"
Category: Travel information
Message: "Can I get a refund for my cancelled tour?"
Category:
モデルは、例から分類パターンを学習し、最後のエントリを正しく完了します。
明確な構文と区切り記号を使用する
プロンプトに複数のセクション (命令、ソース テキスト、例など) が含まれている場合は、 ---、Markdown 見出し、XML タグなどの区切り記号を使用して区切ります。 境界を明確にすると、モデルは命令をコンテンツと区別し、誤って解釈される可能性を減らすことができます。
ヒント
モデルは 、再認識バイアスの影響を受けやすくなります。つまり、プロンプトの末尾付近のテキストは、最初のテキストよりも大きな影響を受ける可能性があります。 モデルが指示に一貫して従っていない場合は、プロンプトの最後でキー命令を繰り返してみてください。
モデル パラメーターを構成する
プロンプトのテキスト以外にも、モデルが応答を生成する方法を制御するモデル パラメーターを調整できます。
- 温度: 出力のランダム性を制御します。 値 (0.7 など) を大きくすると、よりクリエイティブで多様な応答が生成され、値が小さい (0.2 など) ほど、より集中して決定論的な応答が生成されます。 実際のタスクには小さい値を使用し、クリエイティブなタスクでは高い値を使用します。
-
Top_p: ランダム性も制御しますが、別の方法で制御します。 これは、最も可能性の高い次のトークンのサブセットにモデルを制限します。 たとえば、
top_pが 0.9 の場合、モデルでは上位 90 個の% のトークンのみが考慮されます。
ヒント
一般的な推奨事項は、温度またはtop_pを同時に調整することです。両方を同時に調整する必要はありません。
旅行代理店のシナリオでは、ホテルのアメニティに関する事実に関する質問に答えるときは低温 (0.2) を使用しますが、クリエイティブな旅行プランの提案を生成する場合は温度 (0.7) が高くなります。
プロンプト エンジニアリングで十分な場合
プロンプト エンジニアリングは、モデルの最適化作業に適した開始点です。 これは、次の必要がある場合に有効です。
- モデルのトーン、形式、および動作をガイドします。
- タスクの具体的な手順を指定します。
- インフラストラクチャを変更することなく、結果をすばやく反復処理します。
- 追加のトレーニングやデータstorageは不要であるため、コストを抑える。
ただし、プロンプト エンジニアリングには制限があります。 モデルに必要な情報 (会社のホテル カタログなど) にaccessがない場合、または詳細な手順にもかかわらず特定の動作を一貫して維持できない場合は、追加の戦略を検討する必要があります。