プロンプトを理解して入力候補の品質を向上させる
プロンプトの構築は難しい場合があります。 実際には、プロンプトは目的のタスクを完了するためにモデルの重みを構成するように機能しますが、これは科学というより芸術であり、多くの場合、成功するプロンプトを作成するには経験と直感が必要になります。
適切に構築されたプロンプトをモデルに送信すると、モデルから返される入力候補が良くなります。
今回のハイキング推奨ボットでは、優れたシステム プロンプトによってモデルは適切なハイキングを推奨できます。 そして、ユーザー プロンプトが優れていれば、さらに洗練された推奨がモデルから返されます。
このユニットでは、プロンプトの作成に利用できる一般的な概念とパターンについて話し、入力候補の品質向上に利用できるテクニックをいくつか見ていきます。
基本操作
テキスト プロンプトは、ユーザーが GPT モデルと対話する方法です。 生成言語モデルは、前のテキストから続く可能性が最も高い次の一連の単語を生成しようするものです。 "「<プロンプト>」と私が言ったら、何が最初に思いつきますか?" と言っているようなものです。
作成するプロンプトがますます複雑になるとき、この基本的なふるまいを頭に入れておくと役立ちます。 プロンプトに関係なく、モデルは単純に、プロンプトから続く可能性が最も高いと判断したもので応答します。
プロンプトの構成要素
入力候補 API を使用するとき、プロンプトのさまざまな箇所を区別するものはありませんが、目標はプロンプトの構築について考えることであるため、プロンプトをその構成部品に分割することは役に立ちます。
手順
指示 (Instruction) は、最も一般的に使用されるプロンプトの構成要素です。 その構成部品は、モデルに何をすべきか伝えるプロンプトの一部であり、単純なものから複雑なものまでさまざまあります。 たとえば、"ハイキングをすすめる" というものがあれば、"あなたはハイキング愛好家であり、各地の楽しいハイキング スポットを紹介しています。あなたは陽気で親切です。初めて「こんにちは」というとき、自己紹介します。ハイキング スポットを紹介するときはいつも、住んでいる地域と希望するハイキング難易度を尋ねてからおすすめを伝えます" というものもあります。
プライマリ コンテンツ
プライマリ コンテンツとは、モデルによって処理または変換された何らかのテキストを指します。 通常、指示と組み合わせて使用されます。 たとえば、"その情報を受け取った後、近場のハイキング スポットについて、長さの異なる 3 つの提案をします" のようになります。
プライマリ コンテンツは、Wikipedia 記事を要約するようにモデルに要求するなど、はるかに長くなる可能性があります。
例
優れたプロンプトは多くの場合、"ワンショット" 学習または "フューショット" 学習の実践に左右されます。 これは、モデルに望むふるまいの例を 1 つかそれ以上含めることを意味します。一般的には、入力と出力のペアを含めます。 これは、モデルが永続的に変更されるという意味での学習ではありません。現在の推論に対してのみ望ましくなるよう、モデルの応答を例によってより良く調整します。
例なしでプロンプトを使用することは、"ゼロショット" 学習と呼ばれることがあります。
Hike request: I live near Seattle and would like an easy hike.
Recommendation: That's great to hear, the Seattle area has some of the best hikes in the nation! You should try Little Si, you'll love it.
Hike request: I want to go on a hike in the North Cascades that will blow my mind.
Recommendation: You won't find a bad hike in the North Cascades. However, I hear the Sahale Arm stops people in their tracks with its beauty.
Hike request: I'd like to find a strenuous hike that's just like the Enchantments, but without as many people.
Recommendation:
キュー
キュー (Cue) は、モデルの出力の "ジャンプスタート" として機能し、モデルを目的の出力に誘導するのに役立ちます。 多くの場合、これはプレフィックスであり、それに基づきモデルを構築できます キューでは、主要な要素を含めるように入力候補に指示できます。 多くの場合、指示と共に使用されます。
次の例では、ハイキング コースに関するたくさんのレビューを 1 つのキューで要約しています。
Prompt | Completion |
---|---|
ハイキング コース レビューは、ハイキングに行くかどうかを決める重要な考慮事項です。レビューには、コースの現在の状態がリストアップされるからです。 [...] 上記のハイキング コース レビューを要約します。 ハイキング コース レビューから読み取れる重要な事項: |
現在、Mailbox Peak のハイキング コースは泥道になっており、樹木限界線を超えると蚊がひどいことになります。 また、午前の中頃から、ハイキング コースには人があふれています。 |
関連する参照先
サポート コンテンツ (Supporting content) は、モデルが何らかの方法で出力に影響を与えるために利用できる情報です。 これは、メインのターゲットでもタスクでもないという点でプライマリ コンテンツとは異なっていますが、通常、プライマリ コンテンツと共に使用されます。 一般的な例としては、現在の日付、ユーザーの名前、ユーザーの好みなどのコンテキスト情報があります。
ベスト プラクティス
- 具体的にする。 解釈の幅をできるだけ狭めます。 操作領域を制限します。
- わかりやすくする。 例示を使用します。
- 繰り返す。 場合により、モデルに対して繰り返し対話する必要があります。 プライマリ コンテンツの前後に指示を指定し、指示、キューなどを使用します。
- 順序が重要。 モデルに情報を提示する順序が出力に影響を与えることがあります。 指示をコンテンツの前に配置するか ("summarize the following…" (以下を要約してください))、コンテンツの後に配置するか ("summarize the above…" (上記を要約してください)) によって、出力が異なる場合があります。 少数ショットの例の順序も重要です。 この手法は最新性バイアスと呼ばれています。
- 出力を事前処理します。 プロンプトの最後にいくつかの単語または句を含めて、目的の形式に従ったモデル応答を取得します。
- モデルに "out" (アウト) を指定する。 モデルが割り当てられたタスクを完了できない場合、モデルに代替パスを指定すると役立つ場合があります。 たとえば、テキストで質問するとき、"回答がない場合は、「見つかりませんでした」と応答してください" という内容を含めることができます。この手法は、モデルが誤った応答を生成することを回避するのに役立ちます。
- 思考の連鎖プロンプティング 段階的に進め、関係あるすべての手順を提示するようにモデルは指示されます。 そうすることで、結果が不正確になる可能性が減り、モデル応答の評価が簡単になります。