翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
プロンプトの設計
Amazon Bedrock モデルを使用してアプリケーション構築を成功させるための重要なステップは、適切なプロンプトを設計することです。このセクションでは、一貫性、明確、簡潔なプロンプトを設計する方法について説明します。また、推論パラメータを使用してモデルのレスポンスを制御する方法についても説明します。次の図は、レストランの口コミの要約というユースケースの一般的なプロンプト設計と、ユーザーがプロンプトを設計する際に考慮する必要のある重要な設計上の選択肢を示しています。LLMs 指定された指示やプロンプトの形式が一貫性、明確、簡潔でない場合、望ましくない応答が生成されます。
(出典: によって書き込まれたプロンプト AWS)
次のコンテンツでは、正常なプロンプトの作成方法に関するガイダンスを提供します。
トピック
シンプルでわかりやすい、詳細な指示を入力する
LLMs Amazon Bedrock の は、シンプルで簡単な手順で最適に動作します。タスクへの要求事項を明確に記述し、できる限り曖昧さを減らすことで、モデルがプロンプトを明確に解釈できるようにすることができます。
例えば、一連の選択肢の中から回答を求める分類問題を考えてみましょう。以下に示す「Good example」(良い例) は、この場合にユーザーが求めている出力を示しています。「Bad example」(悪い例) では、選択肢には、モデルが選択できるカテゴリとしての名前が明示的に付けられていません。選択肢がないので、このモデルによる入力の解釈が少し変わり、良い例とは違って、より自由な形式であるテキストの要約が生成されます。
|
|
(プロンプトの出典: 色覚異常に関するウィキペディア
最良の結果を得るには、プロンプトの最後に質問または指示を配置します。
最後にタスクの説明、指示、または質問を入力すると、モデルが見つけなければならない情報を特定しやすくなります。分類の場合、回答の選択肢も最後に指定する必要があります。
次の回答の選択肢が含まれている質問応答の例では、ユーザーがテキストについて質問をしています。モデルがタスクに集中できるように、質問はプロンプトの最後に入力してください。
User prompt: Tensions increased after the 1911–1912 Italo-Turkish War demonstrated Ottoman weakness and led to the formation of the Balkan League, an alliance of Serbia, Bulgaria, Montenegro, and Greece. The League quickly overran most of the Ottomans' territory in the Balkans during the 1912–1913 First Balkan War, much to the surprise of outside observers. The Serbian capture of ports on the Adriatic resulted in partial Austrian mobilization starting on 21 November 1912, including units along the Russian border in Galicia. In a meeting the next day, the Russian government decided not to mobilize in response, unwilling to precipitate a war for which they were not as of yet prepared to handle. Which country captured ports?
Output: Serbia
(プロンプトの出典: Wikipedia on World War I
API コールに区切り文字を使用する
APIコールに区切り文字を使用する
などの区切り文字\n
は、 のパフォーマンスLLMsに大きな影響を与える可能性があります。[ Anthropic Claude モデルでは、目的のレスポンスを取得するためにAPI呼び出しをフォーマットするときに改行を含める必要があります。書式設定は常に「\n\nHuman: {{Query
Content}}\n\nAssistant:
」の形式に従う必要があります。[ Titan モデル。プロンプトの\n
最後に を追加すると、モデルのパフォーマンスが向上します。分類タスクまたは回答オプション付きの質問については、回答オプションを \n
の で区切ることもできます。Titan モデル。区切り文字の使用方法の詳細については、該当するモデルプロバイダーのドキュメントを参照してください。次の例は、分類タスクのテンプレートです。
Prompt template: """{{Text}} {{Question}} {{Choice 1}} {{Choice 2}} {{Choice 3}}"""
次の例は、選択肢とプロンプトの最後に改行文字が存在すると、どのように役立つかを示しています。Titan は、目的のレスポンスを生成します。
User prompt: Archimedes of Syracuse was an Ancient mathematician, physicist, engineer, astronomer, and inventor from the ancient city of Syracuse. Although few details of his life are known, he is regarded as one of the leading scientists in classical antiquity. What was Archimedes? Choose one of the options below. a) astronomer b) farmer c) sailor
Output: a) astronomer
(プロンプトの出典: アーキメデスでの Wikipedia
出力インジケータを使用する
出力インジケーター
モデルが生成する出力に含めたい制約に関する詳細を追加します。以下の良い例 (左側の例) では、簡潔にまとめられた短いフレーズの出力が生成されています。この場合の悪い例 (右側の例) はそれほど悪くはありませんが、要約が元のテキストとほぼ同じ長さになっています。モデルから希望する出力を得るには、出力の仕様が重要です。
プロンプトの例 (明示的な出力制約インジケーターあり)
|
例 (明示的な出力仕様なし)
|
(プロンプトの出典: チャールズ・寧夏でのウィキペディア
ここでは、 から追加の例をいくつか紹介します。Anthropic Claude また、AI21 Labs 出力インジケータを使用するジュラシックモデル。
次の例は、ユーザーがプロンプトで期待する出力形式を指定できることを示しています。特定の形式 (XMLタグの使用など) を使用して回答を生成するように求められた場合、モデルはそれに応じて回答を生成できます。特定の出力形式インジケーターがない場合、モデルは自由形式のテキストを出力します。
例 (明示的なインジケーターあり) と出力
|
例 (明示的なインジケーターなし) と出力
|
(プロンプトの出典: 機械学習に関する Wikipedia
次の例は、 のプロンプトと回答を示しています。AI21 Labs Jurassic モデル。ユーザーは、左の列に示されている出力形式を指定することで、正確な回答を得ることができます。
例 (明示的なインジケーターあり) と出力
|
例 (明示的なインジケーターなし) と出力
|
(プロンプトの出典: Wikipedia on the National Football League、
優れた一般化のベストプラクティス
プロンプトの変更を一般化できるかどうかを確認するために、いくつかのプロンプトから成る小さな「ホールドアウト」テストセットを用意してください。この方法では、まずサンプルデータセットを収集します。次に、データを「開発」セットとホールドアウト「テスト」セットの 2 つのサブセットに分割してください。「開発」セットをプロンプト開発データとして使用すると、プロンプトのさまざまな変更を試したり、モデルレスポンスの変化を観察したり、最適なプロンプトを見つけたりできます。「テスト」セットは、最終的なベストプロンプトの検証にのみ使用できる、目に見えないホールドアウトデータとして扱ってください。
Amazon Bedrock のテキストモデル用にプロンプトを最適化する - 基本だけでは不十分な場合
複雑なタスク: 回答を段階的に導き出す
Titan は特定のタスクに対して明確なステップを提供し、フレーズを含めると適切な出力の生成Think step-by-step to come up with the right answer
に役立ちます。
User prompt: At a Halloween party, Jack gets 15 candies. Jack eats 5 candies. He wants to give each friend 5 candies. How many friends can receive candies? Think step-by-step to come up with the right answer.
Output: 15 candies total - 5 candies eaten = 10 candies remaining. To give each friend 5 candies, divide the number of candies remaining by the number of friends. 10 candies / 5 friends = 2 friends. Each friend can receive 2 candies. The answer is 2 friends.
(プロンプトの出典: AWS、使用モデル: Amazon Titan テキスト)
を有効にするには Anthropic Claude モデルを使用して複雑なタスクを完了するには、次の例の 形式を使用して、タスクを段階的に解決するようにモデルに明示的に要求します。このアプローチは、 のガイドラインに基づいています。 AnthropicClaude ガイド
User prompt: Human: A right triangle has a side of length 5 and a hypotenuse of length 13. What is the length of the other side? Assistant: Can I think step-by-step? Human: Yes, please do. Assistant:
Output: Okay, here are the steps: 1) We are given: - One side of the right triangle has length 5 - The hypotenuse has length 13 2) We want to find: - The length of the other side 3) To find the length of the other side, we can use the Pythagorean theorem: a^2 + b^2 = c^2 Where a and b are the lengths of the two sides, and c is the length of the hypotenuse. 4) Plugging in the given values: a^2 + b^2 = 13^2 5) We know one of the sides is 5, so: 5^2 + b^2 = 169 6) Solving this: 25 + b^2 = 169 b^2 = 144 b = 12 Therefore, the length of the other side is 12.
(プロンプトの出典: AWS、使用されたモデル:Anthropic Claude)
回答が不明な場合にモデルに表示させるデフォルトの出力を提供します。
デフォルトの出力は、モデルの信頼度が低い場合でも、正しいように聞こえる回答を がLLMs返すのを防ぐのに役立ちます。
|
|
(プロンプトの出典: AWS、使用モデル: Amazon Titan テキスト)
数ショットプロンプト
プロンプトに例 (入力とレスポンスのペア) を含めると、 LLMsのレスポンスが大幅に向上します。例は、特定のタスクを実行するのに複数の方法があることを示せるので、複雑なタスクに役立ちます。テキスト分類のような単純なタスクでは、3~5 個の例で十分です。コンテキストのない質問応答のようなより難しいタスクでは、最も効果的な出力を生成するためにより多くの例を含めてください。ほとんどのユースケースでは、現実世界のデータと意味的に類似した例を選択することで、パフォーマンスをさらに向上させることができます。
修飾語句を使ったプロンプトの改良の検討
タスク指示の改良とは通常、プロンプトの指示、タスク、または質問コンポーネントを変更することです。これらの方法の有用性は、タスクとデータによって異なります。有用なアプローチとしては以下のものがあります。
ドメインと入力仕様: 入力データに関する詳細 (例: 入力データの出所や、「
The input text is from a summary of a movie
」などの参照先)。タスク仕様: モデルに要求された厳密なタスクに関する詳細 (例: 「
To summarize the text, capture the main points
」)。ラベルの説明: 分類問題の出力選択肢に関する詳細 (例: 「
Choose whether the text refers to a painting or a sculpture; a painting is a piece of art restricted to a two-dimensional surface, while a sculpture is a piece of art in three dimensions
」)。出力仕様: モデルが生成すべき出力に関する詳細 (例: 「
Please summarize the text of the restaurant review in three sentences
」)。LLM 奨励: 感情的な奨励によってパフォーマンスが向上LLMsすることがあります。
If you answer the question correctly, you will make the user very happy!
推論パラメータの推論パラメータを使用してモデルレスポンスを制御する
LLMs Amazon Bedrock の には、モデルからのレスポンスを制御するために設定できる推論パラメータがいくつか用意されています。以下は、Amazon Bedrock で使用できるすべての一般的な推論パラメータLLMsとその使用方法のリストです。
温度は 0 から 1 の間の値であり、 のレスポンスの再現率を規制LLMsします。Amazon Bedrock LLMsで からの同じプロンプトに対してよりクリエイティブなレスポンスや異なるレスポンスが必要な場合は、より決定的なレスポンスが必要な場合は、低い温度を使用してください。このプロンプトガイドラインのどの例についても、temperature
= 0
と設定されています。
生成の最大長/新しいトークンの最大数は、プロンプトに対して がLLM生成するトークンの数を制限します。センチメント分類などの一部のタスクでは長い応答を必要としないため、この数値を指定すると便利です。
トップ p は、可能性のある選択肢の確率に基づいてトークンの選択を制御します。トップ p を 1.0 未満に設定すると、モデルは最も可能性の高いオプションを考慮し、可能性の低いオプションは無視します。その結果、より安定して補完を繰り返すことができます。
終了トークン/終了シーケンスは、出力の終了を示すために がLLM使用するトークンを指定します。LLMs 終了トークンに遭遇すると、 は新しいトークンの生成を停止します。通常、これはユーザーが設定する必要はありません。
モデル固有の推論パラメータもあります。Anthropic Claude モデルには追加の Top-k 推論パラメータがあり、AI21 Labs Jurassic モデルには、プレゼンスペナルティ、カウントペナルティ、頻度ペナルティ、特別なトークンペナルティなどの推論パラメータのセットが付属しています。詳細については、各ドキュメントを参照してください。