言語モデルのパフォーマンスを向上させる
モデルをエンドポイントにデプロイした後、モデルを操作して、その動作を調べることができます。 モデルをユース ケースに合わせてカスタマイズする場合、モデルのパフォーマンスを向上させるために適用できる最適化戦略がいくつかあります。 さまざまな戦略を調べてみましょう。
プレイグラウンドでモデルとチャットする
好みのコーディング言語を使用してモデルのエンドポイントへの API 呼び出しを行ったり、Azure AI Foundry ポータル プレイグラウンドでモデルと直接チャットしたりできます。 チャット プレイグラウンドは、モデルのパフォーマンスを実験して改善するための迅速かつ簡単な方法です。
言語モデルに送信する質問の品質が、返される応答の品質に直接影響します。 質問 (プロンプト) を慎重に作成して、より適切で、より興味深い応答を受け取ることができます。 モデルのパフォーマンスを向上させるためのプロンプトを設計および最適化するプロセスは、プロンプト エンジニアリングとも呼ばれます。 エンドユーザーが、関連性があり、具体的、明確であり、適切に構造化されたプロンプトを提供した場合に、モデルはコンテキストをより適切に理解し、より正確な応答を生成できます。
プロンプト エンジニアリングを適用する
プレイグラウンドでモデルとチャットしているときに、いくつかのプロンプト エンジニアリング手法を適用して、モデルの出力が向上するかどうかを調べることができます。
エンドユーザーがプロンプト エンジニアリングを適用するために使用できるいくつかの手法を調べてみましょう。
- 明確な指示を提供する:ほしい出力について具体的に指定します。
- 指示の書式を設定する:ヘッダーと区切り記号を使用して、質問を読みやすくします。
- 合図を使用する:特定のコーディング言語など、モデルが応答を開始する方法のキーワードまたはインジケーターを指定します。
システム メッセージを更新する
チャット プレイグラウンドで、[JSON の表示] を選択して、現在の会話の JSON を表示できます。
表示される JSON は、新しいメッセージを送信するたびにモデル エンドポイントに送信される入力データです。 システム メッセージは常に入力データの一部です。 エンドユーザーには表示されませんが、システム メッセージを使うことで、開発者はモデルの動作に対する指示を提供し、その動作をカスタマイズできます。
システム メッセージを更新することで、開発者として適用できる一般的なプロンプト エンジニアリング手法を次に示します。
- ワン ショットまたはフュー ショットを使用する:モデルが目的のパターンを識別するのに役立つ例を 1 つ以上提供します。 システム メッセージにセクションを追加して、1 つ以上の例を追加できます。
- 思考の連鎖を使用する:タスクを検討するように指示することで、モデルを段階的に推論するように導きます。
- コンテキストを追加する:タスクに関連するコンテキストまたは背景情報を提供することで、モデルの精度を向上させます。 ユーザー プロンプト内で提供されるデータのグラウンディングを行うか、独自のデータ ソースを接続して、コンテキストを提供できます。
モデル最適化戦略を適用する
開発者は、特定のプロンプトを記述するようにエンドユーザーに依頼することなく、他の最適化戦略を適用してモデルのパフォーマンスを向上させることもできます。 プロンプト エンジニアリングの次に選択する戦略は、要件によって異なります。
- コンテキストに合わせて最適化する:モデルにコンテキストに関する知識がなく、応答の精度を最大化したい場合。
- モデルを最適化する:動作の一貫性を最大化することで、応答の形式、スタイル、または音声を改善したい場合。
コンテキストに合わせて最適化するために、検索拡張生成 (RAG) パターンを適用できます。 RAG では、応答を生成する前にまずデータ ソースからコンテキストを取得することで、データのグラウンディングを行います。 たとえば、自分が旅行予約カタログ内で提供しているホテルに関する質問を顧客に行わせる必要がある場合です。
モデルに特定のスタイルまたは形式で応答させたい場合は、システム メッセージにガイドラインを追加することで、そうするようにモデルに指示できます。 モデルの動作に一貫性がないことに気付いた場合は、モデルを微調整することで、動作の一貫性をさらに強化できます。 微調整では、データセットで基本言語モデルをトレーニングしてからアプリケーションに統合します。
また、RAG "と" 微調整されたモデルのように、最適化戦略を組み合わせて使用することで、言語アプリケーションを改善することもできます。