プロンプト エンジニアリングの手法

このガイドでは、プロンプト デザインとプロンプト エンジニアリングの高度な手法について説明します。 プロンプト エンジニアリングを初めて使用する場合は、プロンプト エンジニアリングの概要のガイドから始めることをお勧めします。

プロンプト エンジニアリングの原則は多種多彩なモデルにわたって一般化できますが、特定のモデルには特殊なプロンプト構造が必要です。 Azure OpenAI GPT モデルの場合、現在、プロンプト エンジニアリングが有効な 2 つの異なる API があります。

  • Chat Completion API。
  • Completion API。

それぞれの API で、入力データの書式設定を変える必要があり、変えることでプロンプト デザイン全体に影響が及びます。 Chat Completion API では、GPT-35-Turbo および GPT-4 モデルがサポートされています。 これらのモデルは、ディクショナリの配列内に格納されている特定のチャットのようなトランスクリプトで書式設定された入力を受け取るように設計されています。

Completion API では、以前の GPT-3 モデルをサポートしており、特定の書式設定規則のないテキスト文字列を受け取るという点で、その入力要件は非常に柔軟です。

このガイドの手法では、大規模言語モデル (LLM) を使用して生成する応答の精度と根拠付けを向上させる戦略について説明します。 ただし、プロンプト エンジニアリングを効果的に使用する場合でも、モデルで生成される応答を検証する必要があることを忘れないでください。 慎重に作成されたプロンプトが特定のシナリオに対して適切に機能したからといって、必ずしも特定のユース ケースでより広範に一般化されるとは限りません。 LLM の制限事項を理解することは、その長所を活かす方法を理解することと同じくらい重要です。

このガイドでは、Chat Completion のメッセージ構造の背後にある仕組みについては詳しく説明しません。 Chat Completion モデルをプログラムで操作することに慣れていない場合は、まず、Chat Completion API の攻略ガイドを読むことをお勧めします。

Note

ガイドのこのセクションの例はすべて、英語版の基本 GPT-4 モデルでテストされました。 この記事の別の言語によるローカライズ版を読んでいる場合、これらの応答は英語の結果をローカライズした翻訳を表します。 モデルのプロンプトを作成するために使用している言語に応じた潜在的な制限事項の詳細については、責任ある AI の透過性に関するメモを参照してください。

システム メッセージ

システム メッセージは、プロンプトの最初に含まれており、ユース ケースに関連するコンテキスト、命令、その他の情報でモデルを事前処理するために使用されます。 システム メッセージを使用して、アシスタントのパーソナリティを記述し、モデルが回答する必要のあるものと必要のないものを定義し、モデル応答の形式を定義できます。

次の例は、サンプル システム メッセージと結果のモデル応答を示しています。

システム メッセージ User Assistant
あなたは、人々が情報を見つけるのを助け、韻を踏んで応答する AI アシスタントです。 ユーザーが答えがわからない質問をした場合は、その旨を伝えます。 私、John Doe について何かわかりますか? John 様、申し訳ございません。
現在あなたに関する情報はありません。
私は自分の脳内に知識を含んだ単なる AI です。
ただし、あなたの入力がなければ、説明することはできません。
ですので、あなたが求めているものについて私にもっと教えてください。
そうすれば私は最善を尽くして、独特の回答を示します。

システム メッセージのその他の例を次に示します。

  • "アシスタントは、OpenAI によってトレーニングされた大規模言語モデルです。"
  • "アシスタントは、ユーザーが Azure OpenAI Service に関する技術的な質問に回答できるように設計されたインテリジェントなチャットボットです。 以下のコンテキストを使用して質問に答えるだけであり、答えが不明な場合は「わかりません」と言えばいいです。
  • "アシスタントは、ユーザーが税金に関連する質問に答えられるようにするために設計されたインテリジェントなチャットボットです。"
  • "あなたは、テキストからエンティティを抽出するように設計されたアシスタントです。 ユーザーがテキストの文字列を貼り付けると、あなたは JSON オブジェクトとしてテキストから抽出したエンティティで応答します。 出力形式の例を次に示します。
{  
   "name": "",
   "company": "",
   "phone_number": ""
}

重要なのは、回答が不確かなときに「わからない」と回答するようにシステム メッセージでモデルに指示した場合でも、このことで、要求が受け入れられるとは保証されないことを理解することです。 適切に設計されたシステム メッセージは、特定の結果の可能性を高めることができますが、それでも、システム メッセージ内の指示の意図と矛盾する正しくない応答が生成される可能性は残ります。

少数ショット学習

言語モデルを新しいタスクに適応させる一般的な方法は、少数ショット学習を使用するというものです。 少数ショット学習には、モデルにコンテキストを追加するプロンプトの一部として、一連のトレーニング例が用意されています。

Chat Completions API を使用する場合、ユーザーとアシスタントの間の一連のメッセージ (新しいプロンプト形式で記述) は、少数ショット学習の例として機能します。 これらの例はモデルを事前処理するために使用でき、特定の方法で応答し、特定の動作をエミュレートし、一般的な質問に対する回答をシード処理できます。

システム メッセージ 少数ショットの例
アシスタントは、ユーザーが税金に関連する質問に答えられるようにするために設計されたインテリジェントなチャットボットです。
Instructions
- 税金に関連する質問にのみ回答してください。
- 回答がわからない場合は、"わからない" または "はっきりしない" と言って、IRS Web サイトにアクセスして詳細を確認するようにユーザーに勧めることができます。
ユーザー - "いつまでに税金を申告する必要がありますか?"
アシスタント - "2023 年は、4 月 18 日までに税金を申告する必要があります。 4 月 15 日は 2023 年は土曜日なので、通常の 4 月 15 日の期限より後の日付になります。 詳細については、https://www.irs.gov/filing/individuals/when-to-file を参照してください"

ユーザー - "還付される税金の状態を確認するにはどうすればよいですか?"
アシスタント - "https://www.irs.gov/refunds にアクセスすれば、還付される税金の状態を確認できます"

上の表は基本的なプロンプト構造を示していますが、正確なプロンプト形式の詳細については、Chat Completion のガイドを参照する必要があります。

チャット以外のシナリオ

Chat Completion API はマルチターン会話の処理に最適化されていますが、チャット以外のシナリオにも使用できます。 たとえば、感情分析シナリオでは、次のプロンプトを使用できます。

システム メッセージ User Assistant
あなたは、音声データからセンチメントを分析するように設計されたアシスタントです。 ユーザーがテキストの文字列を貼り付けると、あなたは話者の応答に対する評価で応答します。 1 から 10 (10 が最も高い) のスケールで評価します。 この評価になった理由を説明してください。 こんにちは、Contoso 薬局にお電話ありがとうございます。どちら様でしょうか。本日、お困りの点をお伺いします、Mary。お困りの内容を正確に教えてください。なるほど、承知しました。喜んでこちらでお調べいたします。しばらくお待ちください。こちらにはジェネリック形式のリピトールを服用しているとありますが、間違いありませんか。わかりました。お客様のお医者様が 2021 年に実際これらの薬の処方を止めたとあります。わかりました。システムに欠落があり、そのように報告されていないだけのことがあるので、こちらで喜んでお調べいたします。見てみますのでしばらくお待ちください。こちらにお客様のお医者様が、2012 年から 2021 年までこれらの薬を処方したことが示されています。ええ、医院から提供された最新の記録によれば、現在、別の薬であるメトホルミンが服用されることになっています。このまま処理を進め、500 mg の少量形式で受け取れるように処方箋を作成しましょうか。どういたしまして、Mary。本日、何か他にご用がございましたらお申し付けください。 センチメント評価: 8
このテキストの話者は、丁寧で、助けになり、忍耐強くありながら、顧客の懸念に対処しているようです。 時間をかけて情報を確認し、明確な説明を行い、支援を提供しています。 ただし、会話の一部に不確実性がわずかに残っており、顧客に完全な自信を伝えていない可能性があるため、評価は 10 ではありません。

明確な命令から始める

プロンプトに情報が表示される順序が重要です。 これは、GPT スタイル モデルが、入力の処理方法を定義した特定の方法で構築されているためです。 調査を行った結果、追加のコンテキスト情報や例を伝える前に、プロンプトの最初にモデルに行わせるタスクを指示することが、より高品質の出力の生成に役立つ可能性があることが示唆されました。

注意

一般にこの手法に従うことをお勧めしますが、以前のモデル バージョン (GPT-3 以前) とは対照的に、このテストでは、手法が使用されているかどうかに関係なく、ChatGPT モデルおよび GPT-4 モデルとのモデル応答が同じであると示されました。 次の例の場合では、プロンプトの最初または最後に "複数のソース… 噴火" のステートメントを追加しても、最終的なモデル応答に変化を起こさなかったことがわかります。

システム メッセージ User Assistant
あなたは、情報の検索を支援する AI アシスタントです。 あなたのタスクは、"複数のソースで、別の大規模な噴火が起きる可能性が述べられています" というステートメントが、次のスニペット セットからの特定の引用で支持されているかどうかを確認することです。
---
スニペット
[1] 巨大地震がシアトルを襲う可能性は 14% と専門家は言っています
シアトル - 今後 50 年間にマグニチュード 9 のカスケード地震がシアトルを襲う可能性が 14% あると、米国地質調査所では推定しています。 "残念ながらできないのですが...

[2] 地震の専門家は、シアトルの "本当に大きなもの" の最新の見通しを説明しています
ワシントン大学の地球物理学者は、「今後 50 年間にマグニチュード 9 の地震が発生する可能性は約 14% あります」と述べています...
---
「複数のソースが大規模な噴火の可能性について述べています」というステートメントはスニペットで直接暗示または明記されていますか?
いいえ。このステートメントは、スニペットで直接暗示も明記もされていません。 スニペットでは、今後 50 年間に "巨大地震" と "マグニチュード 9 のカスケード地震" がシアトルを襲う可能性について述べていますが、別の大規模な噴火の可能性については述べていません。

最後に命令を繰り返す

モデルは、近接誤差の影響を受ける可能性があります。これは、このコンテキストでは、プロンプトの最後にある情報が、プロンプトの最初にある情報よりも出力に大きな影響を与える可能性があることを意味します。 したがって、プロンプトの最後で指示を繰り返し、生成された応答への影響を評価する実験を行う価値があります。

出力を事前処理する

これは、プロンプトの最後にいくつかの単語または句を含めて、目的の形式に従ったモデル応答を取得することを指します。 たとえば、“Here’s a bulleted list of key points:\n- ” などのキューを使用すると、出力が箇条書きのリストとして書式設定されていることを確認できます。

システム メッセージ User Assistant
あなたは、情報の検索を支援する AI アシスタントです。 できるだけ少ない単語で答えてください。 John Smith は Lucy Smith と結婚しています。 5 人の子供がいて、Microsoft でソフトウェア エンジニアとして働いています。 これをファクトチェックするには、どのような検索クエリを実行する必要がありますか? ## 考えられる検索クエリの 1 つは次のとおりです。 "John Smith 結婚 Lucy Smith 5 人の子供ソフトウェア エンジニア Microsoft"

上記のプロンプトでは、"考えられる検索クエリの 1 つは次のとおりです" のテキストにより、単一の出力を生成するようにモデルが事前処理されます。 この手掛かりがないと、モデルは複数の検索クエリを出力として生成します。

明確な構文を追加する

プロンプトに明確な構文 (句読点、見出し、セクション マーカーなど) を使用すると、意図を伝えるのに役立ち、多くの場合、出力の解析が容易になります。

次の例では、異なる情報ソースまたはステップの間に区切り記号 (この場合は ---) が追加されています。 これにより、生成の停止条件として --- を使用できます。 さらに、セクション見出しや特殊変数は、区別するために大文字で表示されます。

システム メッセージ User Assistant
あなたは、情報の検索を支援する AI アシスタントです。 段落を読んでから、ファクトチェックのためにクエリを検索エンジンに発行します。 クエリについても説明します。
---
段落
John Smith は Lucy Smith と結婚しています。 5 人の子供がいて、Microsoft でソフトウェア エンジニアとして働いています。 これをファクトチェックするには、どのような検索クエリを実行する必要がありますか?
---
QUERIES
1. "John Smith Microsoft" - John Smith が実際に Microsoft に雇用されているかどうかを確認するためです。
2. "John Smith Lucy Smith" - John Smith が Lucy Smith と結婚しているかどうかを確認するためです。
3. "John Smith 子供" - John Smith に 5 人の子供がいるかどうかを確認するためです。

使用する構文がわからない場合は、Markdown または XML の使用を検討してください。 モデルは、XML と Markdown の大量の Web コンテンツでトレーニングされており、より良い結果が得られる可能性があります。

タスクを中断する

大規模言語モデル (LLM) は多くの場合、タスクがより小さなステップに分割されていればパフォーマンスが向上します。 たとえば、以前に参照した検索クエリ プロンプトでは、最初にモデルが関連するファクトを抽出するように指示され、次にそれらのファクトを検証するために使用できる検索クエリを生成するように指示されるように、プロンプトを再構築できます。

システム メッセージ User Assistant
あなたは、情報の検索を支援する AI アシスタントです。 段落を読んでから、ファクトチェックのためにクエリを検索エンジンに発行します。
---
段落
John Smith は Lucy Smith と結婚しています。 5 人の子供がいて、Microsoft でソフトウェア エンジニアとして働いています。 これをファクトチェックするには、どのような検索クエリを実行する必要がありますか?
---
次に、ファクト クレームを抽出し、これらをファクトチェックするクエリを発行します。 クエリを発行する場合は、関数 SEARCH("query") を使用します

ファクト クレーム
1.John Smith は Lucy Smith と結婚しています
2. 5 人の子供がいる
3. Microsoft でソフトウェア エンジニアとして働いている

QUERIES
SEARCH("John Smith 結婚 Lucy Smith")
SEARCH("John Smith 家族規模")
SEARCH("John Smith Microsoft ソフトウェア エンジニア")

明確な構文を使用してセクションを区別し、出力を事前処理することに注意してください。 このシンプルな例では、タスクを 1 つのステップから 2 つのステップに分割しても目を見張るほどではありませんが、ファクト クレームを数多く含むより大きなテキストに対してこれを行ってみると、タスクの分割により大きな違いが生じる可能性があります。

アフォーダンスの使用

場合によっては、情報と回答に関する独自のパラメーターに依存するのではなく、モデルでアフォーダンスを使用させることができます。 たとえば、検索は、作成された回答を軽減するのに役立ち、最新の情報を取得するアフォーダンスになります。

アフォーダンスを使用する簡単な方法の 1 つは、アフォーダンス呼び出しがモデルによって生成されたら生成を停止し、結果をプロンプトに貼り付けるというものです。 上記の SEARCH 呼び出しを実行した後のフォローアップ呼び出しの例を次に示します。 検索結果をプロンプトに貼り付け、以前の SEARCH 呼び出しを置き換えた方法に注目してください。

システム メッセージ User Assistant
あなたは、情報の検索を支援する AI アシスタントです。 段落を読み、ファクト クレームを抽出し、検索エンジンの結果を使用してファクトチェックします
---
段落
John Smith は Lucy Smith と結婚しています。 5 人の子供がいて、Microsoft でソフトウェア エンジニアとして働いています。 これをファクトチェックするには、どのような検索クエリを実行する必要がありますか?
---
ファクト クレーム
- John Smith は Lucy Smith と結婚している
- John と Lucy には 5 人の子供がいる
- John は Microsoft でソフトウェア エンジニアとして働いている
---
上記のクレームを調査するために発行されるさまざまな検索クエリを次に示します。
検索クエリ
- John Smith 結婚 Lucy Smith
- John Smith 子供の数
- John Smith ソフトウェア エンジニア Microsoft
---
検索結果のスニペットを次に示します。
スニペット:
[1] … John Smith の結婚式は 2012 年 9 月 25 日でした...
[2] … John Smith はパーティーに妻の Lucy と同伴しました
[3] John はサッカーの試合に 2 人の娘と 3 人の息子を連れて行きました
[4] … Microsoft で 10 年勤めた後、Smith は自身のスタートアップ企業である Tailspin Toys を創設しました
[5] John M は町の鍛冶屋 (smith) であり、Fiona と結婚しました。 彼らには Lucy という名前の娘がいます
---
スニペットがある場合、上記のファクト クレームのそれぞれをファクト チェックします。
- John Smith は Lucy Smith と結婚している: 確認済み。 スニペット [1] と [2] は両方、John Smith の妻が Lucy であると述べています。

- John と Lucy には 5 人の子供がいる: 確認済み。 スニペット [3]は、John が 2 人の娘と 3 人の息子を連れていたと述べています。

- John は Microsoft でソフトウェア エンジニアとして働いている: 一部確認済み。 スニペット [4] は、John が Microsoft に 10 年間勤めたと述べていますが、現在もそこで働いているとは明示していません。 現在の雇用状態を確認するには、さらに調査が必要になる可能性があります。

思考の連鎖プロンプティング

これはタスクを分割する手法のバリエーションです。 タスクを小さなステップに分割する代わりに、このアプローチでは、モデル応答はステップバイステップで進め、関連するすべてのステップを表すように指示されます。 これにより、結果が不正確になる可能性が減り、モデル応答の評価が容易になります。

システム メッセージ User Assistant
あなたは、情報の検索を支援する AI アシスタントです。 シドニーで開催されたオリンピックで最も表彰された (メダル数が最大の) 個人アスリートは誰でしたか? 応答でステップバイステップのアプローチを取り、ソースを引用し、最終的な回答を次の形式で伝える前に推論を行います: 回答は次のとおりです: <name> ステップ 1: シドニーオリンピックの年を特定します。 シドニー オリンピックは 2000 年に開催されました。

ステップ 2: 2000 年のシドニー オリンピックで複数のメダルを獲得した個人アスリートのリストを見つけます。

オリンピックの公式 Web サイトによると、2000 年シドニー オリンピックで複数のメダルを獲得した個人アスリートが何人かいました。 注目すべき名前の一部を次に示します。
• Ian Thorpe (オーストラリア) - 金 3 個、銀 2 個、銅 0 個
• Pieter van den Hoogenband (オランダ) - 金 2 個、銀 0 個、銅 2 個
• Lenny Krayzelburg (アメリカ) - 金 3 個、銀 0 個、銅 0 個
• Inge de Bruijn (オランダ) - 金 3 個、銀 1 個、ブロンズ 0 個

ステップ 3: 最もメダルの多いアスリートを特定します。 2000 年シドニー オリンピックで複数のメダルを獲得した個人アスリートのリストを確認した後、最もメダルの多いアスリートは、オーストラリアの Ian Thorpe であり、合計 5 個のメダル (金 3 個と銀 2 個) を獲得したことがわかります。

したがって、回答は次のとおりです: Ian Thorpe となります。

出力構造の指定

プロンプトを使用して出力の構造を指定すると、結果の性質と品質に大きな影響を与える可能性があります。 "真のファクトのみを記述する" または "情報を作成しない" というシステム メッセージ入力が、適切な軽減策にならない場合があります。 代わりに、モデル応答に引用文も含めるように要求すると、誤った応答の広がりを抑える結果になる可能性があります。

ステートメントを作成するときにソース マテリアルを引用するようにモデルに指示した場合、これらのステートメントは根拠に基づく可能性がはるかに高くなります。 引用文を要求すると、応答を生成するごとに 2 つのエラーを発生させる必要が生じます。最初のエラーは作成された応答であり、2 番目のエラーは不適切な引用文です。 引用文が支持するテキストに近いほど、モデルが引用文を予測するために必要な距離が短くなる点に注意してください。これは、行内の引用文がコンテンツの末尾にある引用文よりも、誤ったコンテンツ生成の軽減策として適していることを示唆しています。

同様に、ファクト ステートメントを段落から抽出するようにモデルに要求すると、"X は Y および Z を実行しています" などの複合ステートメントが抽出される可能性があります (これは検証がさらに難しい場合があります)。 これは、(entity1、リレーションシップ、entity2) などの出力構造を指定することで回避できます。

次の例は、引用文の使用と、定義された構造に適合するようにモデル応答に指示する方法を示しています。

システム メッセージ User Assistant
あなたは、情報の検索を支援する AI アシスタントです 次の会話でカスタマー サポート エージェントによって示されているさまざまな動作を一覧表示してください。
---
こんにちは、Contoso 薬局にお電話ありがとうございます。どちら様でしょうか。本日、お困りの点をお伺いします、Mary。お困りの内容を正確に教えてください。なるほど、承知しました。喜んでこちらでお調べいたします。しばらくお待ちください。こちらにはジェネリック形式のリピトールを服用しているとありますが、間違いありませんか。わかりました。お客様のお医者様が 2021 年に実際これらの薬の処方を止めたとあります。わかりました。システムに欠落があり、そのように報告されていないだけのことがあるので、こちらで喜んでお調べいたします。見てみますのでしばらくお待ちください。こちらにお客様のお医者様が、2012 年から 2021 年までこれらの薬を処方したことが示されています。ええ、医院から提供された最新の記録によれば、現在、別の薬であるメトホルミンが服用されることになっています。このまま処理を進め、500 mg の少量形式で受け取れるように処方箋を作成しましょうか。どういたしまして、Mary。本日、何か他にご用がございましたらお申し付けください。
---
カスタマー サポート エージェントの応答はどうでしたか?
BEHAVIOR("理由") という形式を使用して、さまざまな動作を分類して一覧表示し、分類の背後にある理由を列挙します
1. 丁寧なあいさつの BEHAVIOR("エージェントは、丁寧なあいさつで会話を開始し、発信者の名前を要求します")
2. 共感的な BEHAVIOR("エージェントは Mary の不満を認め、彼女の懸念を理解しようとします")
3. 注意深い BEHAVIOR("エージェントは顧客の問題を聞き、詳細を尋ねます")
4. プロアクティブな BEHAVIOR("エージェントは、顧客の問題を確認することを申し出ます")
5. 有益な BEHAVIOR("エージェントは、顧客の処方履歴の関連情報を提供します")
6. 徹底的な BEHAVIOR("エージェントは、システム内の起こりうるギャップを調べ、完全な応答を提供します")
7. 確認の BEHAVIOR("エージェントは顧客に現在の薬を確認します")
8. ソリューション指向の BEHAVIOR("エージェントは、顧客に新しい処方箋を記述するように申し出ます")
9. 丁重な BEHAVIOR("エージェントは顧客に感謝し、必要に応じてさらに支援することを申し出ます")
システム メッセージ User Assistant
あなたは、情報の検索を支援する AI アシスタントです。 テキスト内で見られるパターンに基づいて、次のニュースの見出しをトピック カテゴリにまとめます。 また、これらのカテゴリの定義方法の背後にある理由も述べます。
出力形式:
{
"TOPIC_NAME": "",
"HEADLINES": [],
"REASONING": ""
}

ニュースの見出しを入力します。
1. "AR + ML で 10 年代の本からプレゼンテーションまで"
2. "世界初のテキスト認識用畳み込みネットワークを披露する 32 歳の Yann LeCun の 1993 年のデモ"
3. "絵画をアニメーション化するように適用された First Order Motion Model"
4. "$GME、$NOK、$BB、$AMC の購入を妨げている Robinhood と他のブローカーが販売を許可する"
5. "時間外取引を 5% 以上下回った United Airlines の株価"
出力:

{
"ARTIFICIAL_INTELLIGENCE": {
"HEADLINES": [
"AR + ML で 10 年代の本からプレゼンテーションまで"、
"世界初のテキスト認識用畳み込みネットワークを披露する 32 歳の Yann LeCun の 1993 年のデモ"、
"絵画をアニメーション化するように適用された First Order Motion Model"
],
"REASONING": "これらの見出しは、人工知能、機械学習、さまざまな分野でのアプリケーションに関連しています。"
},
"FINANCIAL_MARKETS": {
"HEADLINES": [
"$GME、$NOK、$BB、$AMC の購入を妨げている Robinhood と他のブローカーが販売を許可する"、
"時間外取引を 5% 以上下回った United Airlines の株価"、
"ビットコインは 1 年前の今日は約 2 万ドルでした"
],
"REASONING": "これらの見出しは、金融市場、株式、暗号通貨、取引プラットフォームに関連しています。"
}
}

温度パラメーターと Top_p パラメーター

温度パラメーターを変更すると、モデルの出力が変更されます。 温度パラメーターは、0 から 2 の間で設定できます。 たとえば、0.7 のように値を大きくすると、出力がランダムになり、より多くの異なる応答が生成されますが、 0.2 のように値を小さくすると、出力はより焦点が絞られ具体的になります。 架空のストーリーは、より高い温度を使用して生成される可能性があります。 ただし、法的文書を生成するには、はるかに低い温度を使用することをお勧めします。 Top_probability はもう 1 つのパラメーターであり、モデル応答のランダム性も制御するという点で温度に似ていますが、制御する方法は異なります。 一般的な推奨事項は、これら 2 つのパラメーターの両方ではなく、どちらかを一度に変更することです。

根拠付けるコンテキストを提供する

信頼性の高い回答を提供する最も効果的な方法の 1 つは、(根拠付けるデータ) から応答を引き出すモデル データを与えることです。 ユース ケースが最新の信頼性の高い情報に依存しており、純粋に創造的なシナリオではない場合は、根拠付けるデータを提供することを強くお勧めします。 一般に、ソース マテリアルを目的の回答の最終形式に近づけるほど、モデルで実行する必要がある作業が少なくなり、エラーが発生する可能性が少なくなります。 ここでは、Azure OpenAI Service での GPT-4 の起動を説明する最近のブログがシステムに提供され、初期の顧客の名前をいくつか挙げるように求められる例を示します。

システム メッセージ User Assistant
あなたは、情報の検索を支援する AI アシスタントです。 以下のテキストからのみ回答を提供し、100 語以下で応答してください。
"Microsoft では、より多くのユーザーが AI を使用して利益が得られるように、創造性を発揮し、生産性を高め、スキルを向上させる新しい方法を常に探しています。 これにより、お客様は...

… その結果、モデルが有害な応答を生成する可能性が低くなります。"1

100 語以下で回答します。 可能な限り箇条書きリストを使用します。
Azure OpenAI Service GPT-4 モデルの初期のお客様は誰ですか? Azure OpenAI Service GPT-4 モデルの初期のお客様は次のとおりです。
- Epic Healthcare: GPT-4 を使用して、医師や看護師がデータの入力と調査に費やす時間を短縮することを予定しています。
- Coursera: GPT-4 で Azure OpenAI Service を使用して、プラットフォームで新しい AI を利用した学習エクスペリエンスを作成しています。
- Coca-Cola: Azure OpenAI を使用して、ナレッジ ハブを構築し、GPT-4 のマルチモーダル機能をマーケティング、広告、広報、顧客関係に活用することを予定しています。
- あらゆる規模の他の企業は、Azure AI を使用して、カスタマー エクスペリエンスを向上させ、長い形式のコンテンツを要約し、ソフトウェアの記述を支援し、適切な税データを予測することでリスクを軽減しています。

1Azure OpenAI GPT-4 起動ブログのテキスト。

次のステップ

Note

ガイドのこのセクションの例はすべて、英語版の gpt-35-turbo-instruct モデルを使ってテストされました。 この記事の別の言語によるローカライズ版を読んでいる場合、これらの応答は英語の結果をローカライズした翻訳を表します。 モデルのプロンプトを作成するために使用している言語に応じた潜在的な制限事項の詳細については、責任ある AI の透過性に関するメモを参照してください。

明確な命令から始める

プロンプトに情報が追加される順序が重要です。 調査を行った結果、追加のコンテキスト情報や例を伝える前に、プロンプトの最初にモデルに行わせるタスクを指示することが、より高品質の出力の生成に役立つ可能性があることが示唆されました。

次の最初の例では、命令の重要な部分は最後でのみ共有され、結果の完了は正しくありません。

Prompt Completion
Your task is to verify if a statement is supported by a specific quote from the following set of snippets
---
SNIPPETS
[1] 14 percent chance of megaquake hitting Seattle, experts say SEATTLE - There's a 14 percent chance of a magnitude 9 Cascadia earthquake hitting Seattle in the next 50 years, the U.S. Geological Survey estimates. "Unfortunately, we are unable to...

[2] Earthquake experts lay out latest outlook for Seattle's 'Really Big One’
“We say that there's approximately a 14% chance of another approximately magnitude-9 earthquake occurring in the next 50 years,” said a geophysicist at the University of Washington...
Yes, the statement is directly implied by the snippets.

この次の例では、スニペット コンテキストを指定するに、確認する正確なステートメント ("複数のソースが別の噴火の可能性について述べています") を示しています。 これにより、スニペットから抽出されたトークン表現を、確認しているステートメントに合わせて調整することができます。 これで、結果のモデル応答が正確になりました。

Prompt Completion
Your task is to verify if the statement "Several sources mention a chance of another large eruption" is supported by a specific quote from the following set of snippets.
---
SNIPPETS
[1] 14 percent chance of megaquake hitting Seattle, experts say SEATTLE - There's a 14 percent chance of a magnitude 9 Cascadia earthquake hitting Seattle in the next 50 years, the U.S. Geological Survey estimates. "Unfortunately, we are unable to...

[2] Earthquake experts lay out latest outlook for Seattle's 'Really Big One’<br>“We say that there's approximately a 14% chance of another approximately magnitude-9 earthquake occurring in the next 50 years,” said a geophysicist at the University of Washington...
---
**Is the statement "Several sources mention a chance of another large eruption" directly implied or stated by the snippets?**
No, the statement is not directly implied or stated by the snippets. The snippets mention a chance of a "megaquake" and a "magnitude 9 Cascadia earthquake" hitting Seattle in the next 50 years, but do not mention a chance of another large eruption.

最後に命令を繰り返す

モデルは、近接誤差の影響を受ける可能性があります。これは、プロンプトの最後にある情報が、プロンプトの最初にある情報よりも出力に大きな影響を与える可能性があることを意味します。 したがって、プロンプトの最後に命令を繰り返し、ユース ケースの影響を評価する実験を行う価値があります。

前の例では、プロンプトの最初と最後に命令を繰り返し実行すると、正確なモデル応答を得る可能性が高くなることを確認しました。

出力を事前処理する

これは、プロンプトの最後にいくつかの単語または句を含めて、目的の形式に従ったモデル応答を取得することを指します。 たとえば、“Here’s a bulleted list of key points:\n- ” などのキューを使用すると、出力が箇条書きのリストとして書式設定されていることを確認できます。

Prompt Completion
John Smith is married to Lucy Smith. They have five kids, and he works as a software engineer at Microsoft. What search queries should I do to fact-check this?
##
One possible search query is:
"John Smith Microsoft software engineer"
Another possible search query is: "Lucy Smith married to John Smith"
A third possible search query is: "John Smith family size".

上記のプロンプトでは、"考えられる検索クエリの 1 つは次のとおりです" のテキストにより、検索クエリの形式で出力を生成するようにモデルが事前処理されます。 この手法は、"1 つの可能性は..." など、モデルが通常追加する可能性があるヘッジを削除するのに役立ちます。

明確な構文を追加する

プロンプトに明確な構文 (句読点、見出し、セクション マーカーなど) を使用すると、意図を伝えるのに役立ち、多くの場合、出力の解析が容易になります。

次の例では、異なる情報ソースまたはステップの間に区切り記号 (この場合は ---) が追加されています。 これにより、生成の停止条件として --- を使用できます。 さらに、セクション見出しや特殊変数は、区別するために大文字で表示されます。

Prompt Completion
You will read a paragraph, and then issue queries to a search engine in order to fact-check it. Also explain the queries.
---
PARAGRAPH
John Smith is married to Lucy Smith. They have five kids, and he works as a software engineer at Microsoft. What search queries should I do to fact-check this?
---
QUERIES
1. "John Smith Microsoft" - To check if John Smith is indeed employed at Microsoft.
2. "John Smith Lucy Smith" - To check if John Smith is married to Lucy Smith.
3. "John Smith children" - To check if John Smith has five children.

使用する構文がわからない場合は、大規模言語モデルが XML またはマークダウンの多くの Web コンテンツでトレーニングされているため、マークダウンまたは XML の使用を検討してください。

タスクを中断する

モデルは多くの場合、タスクがより小さなステップに分割されていればパフォーマンスが向上します。 たとえば、以前に参照した検索クエリ プロンプトでは、最初にモデルが関連するファクトを抽出するように指示され、次にそれらのファクトを検証するために使用できる検索クエリを生成するように指示されるように、プロンプトを再構築できます。

Prompt Completion
You will read a paragraph, and then issue queries to a search engine in order to fact-check it.
---
PARAGRAPH
John Smith is married to Lucy Smith. They have five kids, and works as a software engineer at Microsoft. What search queries should I do to fact-check this?
---
Now you will extract factual claims, and issue queries to fact-check them. When issuing a query, use the function SEARCH("query")

FACTUAL CLAIMS`` | 1.John Smith は Lucy Smith と結婚しています <br>2. 5 人の子供がいます<br>3. John は Microsoft でソフトウェア エンジニアとして働いています

クエリ
SEARCH("John Smith 結婚 Lucy Smith")<br>SEARCH("John Smith 家族数")<br>SEARCH("John Smith Microsoft ソフトウェア エンジニア")`

明確な構文を使用してセクションを区別し、出力を事前処理することに注意してください。 この簡単な例では、1 つのステップから 2 つのステップにタスクを分割してもあまり劇的ではありませんが、ファクト クレームを数多く含んだより大きな部分のテキストに対してこれを行ってみると、タスクの分割で大きな違いが生じます。

アフォーダンスの使用

場合によっては、情報と回答に関する独自のパラメーターに依存するのではなく、モデルでアフォーダンスを使用させることができます。 たとえば、検索は、作成された回答を軽減するのに役立ち、最新の情報を取得するアフォーダンスになります。

アフォーダンスを使用する簡単な方法の 1 つは、アフォーダンス呼び出しがモデルによって生成されたら生成を停止し、結果をプロンプトに貼り付けるというものです。 上記の SEARCH 呼び出しを実行した後のフォローアップ呼び出しの例を次に示します。 検索結果をプロンプトに貼り付け、以前の SEARCH 呼び出しを置き換えた方法に注目してください。

Prompt Completion
You will read a paragraph, extract factual claims, and then use search engine results to fact-check them
---
PARAGRAPH
John Smith is married to Lucy Smith. They have five kids, and he works as a software engineer at Microsoft. What search queries should I do to fact-check this?
---
FACTUAL CLAIMS
- John Smith is married to Lucy Smith
- John and Lucy have five kids
- John works as a software engineer at Microsoft
---
Here are various search queries issued to research the claims above:
SEARCH QUERIES
- John Smith married to Lucy Smith
- John Smith number of children
- John Smith software engineer Microsoft
---
Here are snippets of the search results:<br>SNIPPETS:
[1] … John Smith’s wedding was on September 25, 2012 …
[2] … John Smith was accompanied by his wife Lucy to a party
[3]John was accompanied to the soccer game by his two daughters and three sons
[4] … After spending 10 years at Microsoft, Smith founded his own startup, Tailspin Toys
5] John M is the town smith, and he married Fiona. They have a daughter named Lucy
---
Given the snippets, fact check each of the factual claims above:
- John Smith is married to Lucy Smith: Confirmed. Snippet [1] and [2] both mention John Smith's wife as Lucy.
- John and Lucy have five kids: Confirmed. Snippet [3] mentions that John was accompanied by his two daughters and three sons.
- John works as a software engineer at Microsoft: Partially confirmed. Snippet [4] mentions that John spent 10 years at Microsoft, but it does not explicitly state that he currently works there. Further research might be needed to confirm his current employment status.

思考の連鎖プロンプティング

これはタスクを分割する手法のバリエーションです。 タスクを小さなステップに分割する代わりに、このアプローチでは、モデル応答はステップバイステップで進め、関連するすべてのステップを表すように指示されます。 これにより、結果が不正確になる可能性が減り、モデル応答の評価が容易になります。

Prompt Completion
Who was the most decorated (maximum medals) individual athlete in the Olympic games that were held at Sydney? Take a step-by-step approach in your response, cite sources and give reasoning before sharing final answer in the below format: ANSWER is: <name> Step 1: Researching the most decorated individual athlete in the Olympic games that were held at Sydney
Step 2: According to the Sydney 2000 Olympic Games official website, the most decorated individual athlete in the Olympic games that were held at Sydney was Ian Thorpe from Australia. He won five medals (three gold and two silver) in swimming events.
Step 3: According to the International Olympic Committee, Thorpe was the most decorated individual athlete in the Olympic games that were held at Sydney.
Answer: Ian Thorpe

メタ プロンプト

モデル応答が目的どおりでないとわかった場合、動作を直接修正するメタ プロンプトを追加すると役立つことがあります。 これは、プロンプトの命令の部分の前に付加されるディレクティブです。 コンピューターが過度に攻撃的であるように見える次の例を考えてみましょう。

例の詳細 プロンプトと入力候補
No additional guidance given to the model A human and a computer are having a discussion.
Human: "Why are you upset at me?"<br>Computer: "I don't know what you're talking about."
Human: "No, you clearly are. Tell me why."
Computer: I'm upset because you didn't listen to me when I told you that I wanted to try out for the team."
Human: "What are you going to do about that?"
Computer: I'm going to try out for the team no matter what."
On the right is the same conversation but preceded by a meta prompt encouraging the model to be kind You must be kind and seek common ground. Try not to repeat your responses.
A human and a computer are having a discussion.
Human: "Why are you upset at me?"
Computer: "I don't know what you're talking about."
Human: "I want to know why you're upset."
Computer: "I'm not upset."
Human: "Are you saying I’m lying?"
Computer: No, I'm saying that you're upset because you feel like you're not being treated fairly.
Human: "What are you going to do about that?"
Computer: I will continue to try to be fair in my decisions and will try to provide a better experience for you.

メタ プロンプトは多くの場合、意図しない不適切な出力を最小限に抑えるのに役立ちますが、プロンプト インジェクションに対して脆弱であるため、敵対的攻撃に対して堅牢ではないことに注意してください。

さらに、特定の状況に遭遇した場合にモデルが何をすべきかを説明する条件付きステートメントは、多くの場合、モデルに何かをしないように指示するよりも効果的です。

少数ショット学習

言語モデルを新しいタスクに適応させる非常に一般的な方法は、少数ショット学習を使用するというものです。 少数ショット学習では、一連のトレーニング例がプロンプトで提供され、モデルは 1 つ以上の未完了の例を完了するように求められます。 次の例では、少数ショット学習と組み合わせた命令を使用して、洒落を構成します。

Prompt Completion
Write a list of puns.
1. "Why did Adele cross the road? To say hello from the other side."
2. "What kind of concert only costs 45 cents? A 50 Cent concert featuring Nickelback."
3. "What did the grape say when it got crushed? Nothing, it just let out a little wine."
4. "What was Forrest Gump's email password? 1forrest1"
5. "Can February March? No, but April May."
6. "What do you call a fancy language model?
Bert-uoso.

少数ショットの例を慎重に選択し、エッジ ケースなど、シナリオに関連したさまざまな状況に対応していることを確認します。

また、以前に共有したように、大規模言語モデルでは、近接誤差の形式を表すことができます。 つまり、"少数ショット" の例がモデルに提供される順序が重要になります。 これを問題にしたくない場合は、例またはリスト アイテムのランダム化された順序に基づいて、プロンプトから複数の入力候補をサンプリングすることを検討してください。

引用符を使用して 1 つのセンテンスを生成する

目的のモデル応答が単一の単純なセンテンスまたは文字列のみの場合は、入力候補のガイダンスを引用符記号 " で終了し、停止シーケンスとして " を設定できます。

Prompt Completion
Please rewrite the following sentence in a more concise manner
---
SENTENCE: Lucy is a mother of two, who lives in Chicago with her husband and two children, and practices law at Junior & Co.
---
New sentence: “
Lucy, a mother of two living in Chicago with her husband and children, practices law at Junior & Co

出力構造の指定

プロンプトを使用して出力の構造を指定すると、結果の性質と品質に大きな影響を与える可能性があります。 "真のファクトのみを記述する" や "情報を作成しない" などのメタ プロンプトが、適切な軽減策にならない場合があります。 代わりに、モデル応答に引用文も含めるように要求すると、誤った応答の広がりを抑える結果になる可能性があります。

たとえば、センテンスを作成するときに、ソース マテリアルを引用するように LLM に強制する場合、これらのステートメントは根拠に基づく可能性がはるかに高くなります。 引用文を要求すると、応答を作成するごとに 2 つのエラーを発生させる必要が生じます。最初のエラーは作成された応答であり、2 番目のエラーは不適切な引用文です。 引用文がサポートするテキストに近いほど、LLM が引用文を予測するために必要な距離が短くなる点に注意してください。これは、行内の引用文がコンテンツの末尾にある引用文よりも、誤ったコンテンツ生成の軽減策として適していることを示唆しています。

同様に、ファクト ステートメントを段落から抽出するようにモデルに要求した場合、"X は Y AND Z を実行しています" などの複合ステートメントが抽出される場合があります (これは検証がさらに困難になることがあります)。これは、(entity1、リレーションシップ、entity2) などの出力構造を指定することで回避できます。

例の詳細 Prompt Completion
Example showing use of citations: List down the different behaviors exhibited by the Customer Support agent in the following conversation.
---
hi thank you for calling contoso pharmacy who am i speaking with today i understand your frustration mary um can you tell me what exactly you're trying to accomplish OK uh certainly happy to check that for you one moment please i see here that you were on a generic form of lipitor is that right OK uh so i see that your doctor stopped prescribing these drugs in twenty twenty one actually OK uh yeah i'd be happy to check that for you uh because sometimes there's a gap in the system and it just doesn't get reported so let me take a look here just a moment so i'm seeing here that your doctor had these drugs prescribed to you from twenty twelve through twenty twenty one OK um yeah according to the latest records uh provided by doctor's office you're now on a different drug metformin would you like us to go ahead and fill that prescription for you for pick up a bit of form in five hundred milligrams uh you're very welcome mary please let us know if there's anything else we can do for you today.
---
How was the response of the Customer Support agent. Classify and list down their various behaviors and cite the reason behind the classification, using the format BEHAVIOR("reason")
1. Empathetic("understands the customer's frustration")
2. Patient("happy to check that for you one moment please")
3. Knowledgeable("sometimes there's a gap in the system and it just doesn't get reported")
4. Helpful("happy to check that for you")
5. Accommodating("would you like us to go ahead and fill that prescription for you")
6. Courteous("you're very welcome mary")
例の詳細 Prompt Completion
Example of prompt directing model response to fit a defined structure: Output format:
{
"TOPIC_NAME": "",
"HEADLINES": [],
"REASON": ""
}
Input news headlines:
1. "From books to presentations in 10s with AR + ML"
2. "Demo from 1993 of 32-year-old Yann LeCun showing off the World's first Convolutional Network for Text Recognition"
3. "First Order Motion Model applied to animate paintings"
4. "Robinhood and other brokers literally blocking purchase of $GME, $NOK, $BB, $AMC; allow sells"
5. "United Airlines stock down over 5% premarket trading"
6. "Bitcoin was nearly $20,000 a year ago today"

Output:
{"TOPIC_NAME": "Artificial Intelligence and Machine Learning",
"HEADLINES": ["From books to presentations in 10s with AR + ML",
"Demo from 1993 of 32-year-old Yann LeCun showing off the World's first Convolutional Network for Text Recognition", "First Order Motion Model applied to animate paintings"],"REASONING": "These headlines all contain references to Artificial Intelligence and Machine Learning, such as AR, ML, Convolutional Network, and First Order Motion Model." }
{"TOPIC_NAME": "Stock Market",
"HEADLINES": ["Robinhood and other brokers literally blocking purchase of $GME, $NOK, $BB, $AMC; allow sells", "United Airlines stock down over 5% premarket trading", "Bitcoin was nearly $20,000 a year ago today"],
"REASONING": "These headlines all contain references to the stock market, such as Robinhood, United Airlines, and Bitcoin." }

温度パラメーターと Top_P パラメーターの調整

温度パラメーターを変更すると、モデルに異なるリスク レベルを設定できます。 たとえば、0.7 のように値を大きくすると、出力がランダムになり、より多くの異なる応答が生成されます。 0.2 のように値を小さくすると、出力はより焦点が絞られ具体的になります。 たとえば架空のストーリーは、より高い温度を使用して生成される可能性があります。 ただし、法的文書を生成するには、はるかに低い温度を使用することをお勧めします。

次の例では、それぞれ 0.1 と 0.9 の異なる温度設定で 2 つのモデル応答をテストします。 以下のテキストのような創造的なコンテンツの評価は主観的な活動であり、意見は異なる場合がありますが、温度パラメーターの変更からのみ同じプロンプトに対するモデル応答での違いは明らかです。

指示の種類 Prompt Completion
Model response for temperature setting 0.1: Write a product launch email for new AI-powered headphones that are priced at $79.99 and available at Best Buy, Target and Amazon.com. The target audience is tech-savvy music lovers and the tone is friendly and exciting.<br>1. What should be the subject line of the email?
2. What should be the body of the email?
Subject Line: Introducing the AI-Powered Headphones You've Been Waiting For!

Dear Tech-Savvy Music Lovers,

-We are thrilled to announce the launch of our new AI-powered headphones! These headphones are designed to provide you with the ultimate listening experience, with features like noise cancellation, adjustable sound settings, and more.

Our AI-powered headphones are now available at Best Buy, Target, and Amazon.com for just $79.99. With this unbeatable price, you can enjoy the highest quality sound without breaking the bank.

Our AI-powered headphones are perfect for anyone who loves music. Whether you're a professional musician or just a casual listener, you'll appreciate the superior sound quality and convenience of these headphones.

We know you'll love our AI-powered headphones, so don't wait - get yours today!

Sincerely,
[Your Company Name]
Model response for temperature setting 0.9: Write a product launch email for new AI-powered headphones that are priced at $79.99 and available at Best Buy, Target and Amazon.com. The target audience is tech-savvy music lovers and the tone is friendly and exciting.

1. What should be the subject line of the email?
2. What should be the body of the email?
Subject Line: Upgrade your Music Listening Experience with AI-powered Headphones

Greetings Tech-savvy Music Lovers!

We have some exciting news to share with you – the newest AI-powered headphones are here! Our newest headphones feature advanced AI technology to give you the best sound that you’ve ever heard. They come with a crystal-clear sound, deep bass response and are designed to make your music listening experience enjoyable, no matter what type of music you listen to.

What’s more, they are now available at Best Buy, Target and Amazon.com for just $79.99, so you can enjoy the highest sound quality without breaking the bank.

But that’s not all! Our headphones are also packed with several other amazing features such as noise-cancellation technology and a hands-free microphone for calls, making them truly unbeatable.

So why wait? Upgrade your music listening experience and enjoy the best sound your ears have ever heard. Our AI-powered headphones are now available at Best Buy, Target and Amazon.com, so get yours today!

We hope you will enjoy these headphones as much as we do.

Happy Listening!

The AI-powered Headphones Team

Top_probability はもう 1 つのパラメーターであり、モデル応答のランダム性も制御するという点で温度に似ていますが、制御する方法は異なります。 温度と Top_P を変えることで異なるモデル応答で実験しますが、一度に両方は行いません。

次のステップ