プロンプトとは - Amazon Bedrock

プロンプトとは

プロンプトとは、Amazon Bedrock の LLM が特定のタスクまたは指示に対して適切なレスポンスまたは出力を生成するように支援するために、ユーザーが提供する特定の入力セットです。

User Prompt: Who invented the airplane?

このプロンプトでクエリを実行すると、Titan は次の出力を提供します。

Output: The Wright brothers, Orville and Wilbur Wright are widely credited with inventing and manufacturing the world's first successful airplane.

(プロンプトの出典: AWS、使用モデル: Amazon Titan Text)

プロンプトのコンポーネント

1 つのプロンプトには複数のコンポーネントが含まれます。コンポーネントとしては、LLM に実行させたいタスクや指示、タスクのコンテキスト (関連ドメインの説明など)、デモンストレーション例、Amazon Bedrock の LLM にレスポンスで使用させたい入力テキストなどがあります。ユースケース、データの可用性、タスクに応じて、プロンプトではこれらのコンポーネントのうち、1 つを使用するか複数個を組み合わせる必要があります。

Titan にレビューの要約を求める次のプロンプトの例を考えてみましょう。

User Prompt: The following is text from a restaurant review: “I finally got to check out Alessandro’s Brilliant Pizza and it is now one of my favorite restaurants in Seattle. The dining room has a beautiful view over the Puget Sound but it was surprisingly not crowded. I ordered the fried castelvetrano olives, a spicy Neapolitan-style pizza and a gnocchi dish. The olives were absolutely decadent, and the pizza came with a smoked mozzarella, which was delicious. The gnocchi was fresh and wonderful. The waitstaff were attentive, and overall the experience was lovely. I hope to return soon." Summarize the above restaurant review in one sentence.

(プロンプトの出典: AWS)

このプロンプトをもとに、Titan は、短く 1 行に要約したレストランのレビューで応答します。この要約した口コミでは、希望したとおりに、重要な事実を記載し、要点を伝えています。

Output: Alessandro's Brilliant Pizza is a fantastic restaurant in Seattle with a beautiful view over Puget Sound, decadent and delicious food, and excellent service.

(使用したモデル: Amazon Titan Text)

このタイプの出力には、口コミのテキスト「I finally got to check out ...」と指示「Summarize the above restaurant review in one sentence」が両方とも必要でした。どちらか一方が欠けても、モデルが、意味のある要約を作成するのに十分な情報を得ることができなかったでしょう。指示は LLM に何をすべきかを伝え、テキストは LLM が作用するための入力となります。コンテキスト(「The following is text from a restaurant review」) は、出力を定式化する際にモデルが入力を使用するように導く追加の情報やキーワードを提供しています。

以下の例では、テキスト「Context: Climate change threatens people with increased flooding ...」は、LLM が質問「Question: What organization calls climate change the greatest threat to global health in the 21st century?”」に回答するというタスクを実行するために使用できる入力となっています。

User prompt: Context: Climate change threatens people with increased flooding, extreme heat, increased food and water scarcity, more disease, and economic loss. Human migration and conflict can also be a result. The World Health Organization (WHO) calls climate change the greatest threat to global health in the 21st century. Adapting to climate change through efforts like flood control measures or drought-resistant crops partially reduces climate change risks, although some limits to adaptation have already been reached. Poorer communities are responsible for a small share of global emissions, yet have the least ability to adapt and are most vulnerable to climate change. The expense, time required, and limits of adaptation mean its success hinge on limiting global warming. Question: What organization calls climate change the greatest threat to global health in the 21st century?

(プロンプトの出典: https://en.wikipedia.org/wiki/Climate_change)

AI21 Labs Jurassic は、プロンプトに入力されたコンテキストに従って、正しい組織名で応答します。

Output: The World Health Organization (WHO) calls climate change the greatest threat to global health in the 21st century.

(使用されたモデル: AI21 Labs Jurassic-2 Ultra v1)

数ショットプロンプトとゼロショットプロンプト

LLM が期待に沿えるように出力をより適切に調整できるように、いくつかの例を提供すると助けになる場合があります。これは、「数ショットプロンプト」または「コンテキスト内学習」とも呼ばれます。1 つのショットは、例の入力と希望する出力のペアを意味しています。まず、センチメント分類に関するゼロショットプロンプトの例を示します。このプロンプトのテキストには、入力と出力のペアの例が指定されていません。

User prompt: Tell me the sentiment of the following headline and categorize it as either positive, negative or neutral: New airline between Seattle and San Francisco offers a great opportunity for both passengers and investors.

(プロンプトの出典: AWS)

Output: Positive

(使用したモデル: Amazon Titan Text)

次には、センチメント分類プロンプトの数ショット版を示します。

User prompt: Tell me the sentiment of the following headline and categorize it as either positive, negative or neutral. Here are some examples: Research firm fends off allegations of impropriety over new technology. Answer: Negative Offshore windfarms continue to thrive as vocal minority in opposition dwindles. Answer: Positive Manufacturing plant is the latest target in investigation by state officials. Answer:

(プロンプトの出典: AWS)

Output: Negative

(使用したモデル: Amazon Titan Text)

次に、AnthropicClaude モデルを使用した例を示します。AnthropicClaude モデルを使用するときは、<example></example> タグを使用してデモンストレーションの例を含めることをお勧めします。また、例では、プロンプト全体で Human:Assistant: などの区切り文字と混同しないように、H:A: などの異なる区切り文字を使用することもお勧めします。最後の数ショットの例では、最後の A: が省略されて Assistant: に置き換えられ、代わりに AnthropicClaude が回答を生成するよう促していることに注目してください。

User prompt: Human: Please classify the given email as "Personal" or "Commercial" related emails. Here are some examples. <example> H: Hi Tom, it's been long time since we met last time. We plan to have a party at my house this weekend. Will you be able to come over? A: Personal </example> <example> H: Hi Tom, we have a special offer for you. For a limited time, our customers can save up to 35% of their total expense when you make reservations within two days. Book now and save money! A: Commercial </example> H: Hi Tom, Have you heard that we have launched all-new set of products. Order now, you will save $100 for the new products. Please check our website. Assistant: Output: Commercial

(プロンプトの出典: AWS、使用モデル: Anthropic Claude)

プロンプトテンプレート

プロンプトのテンプレートは、コンテンツが交換可能な、プロンプト書式設定を指定するものです。プロンプトテンプレートは、分類、要約、質問への回答など、さまざまなユースケースで LLM を使用するための「レシピ」です。プロンプトテンプレートには通常、特定のユースケースに適した指示、数ショット (いくつか) の例、特定のコンテキストや質問が含まれています。以下の例は、Amazon Bedrock テキストモデルを使用して数ショットセンチメント分類を実行するために使用できるテンプレートです。

Prompt template: """Tell me the sentiment of the following {{Text Type, e.g., “restaurant review”}} and categorize it as either {{Sentiment A}} or {{Sentiment B}}. Here are some examples: Text: {{Example Input 1}} Answer: {{Sentiment A}} Text: {{Example Input 2}} Answer: {{Sentiment B}} Text: {{Input}} Answer:"""

Amazon Bedrock で LLM を使用する場合、ユーザーはこのテンプレートをコピーして貼り付け、独自のテキストと数ショットの例を入力してプロンプトを完成させることができます。このセクションではさらに多くのテンプレートを示します。

注記

二重中括弧 {{ and }} はテンプレート内のデータ固有の情報を入力する場所を示しているので、プロンプトテキストには含めないでください。

Amazon Bedrock 推論リクエストに対するリコールを維持する

API コールを使用して Amazon Bedrock のモデルにアクセスする場合、以前のやり取りを現在のプロンプトに含めない限り、以前のプロンプトや以前のリクエストは呼び出されないことに注意してください。リクエストに以前のプロンプトを含めると、会話形式のやり取りを行ったり、フォローアップリクエストを行ったりできます。

Amazon Bedrock テキストプレイグラウンドではなく API コールを使用して AnthropicClaude モデルにアクセスする場合は、必要なレスポンスが得られるようにプロンプトを会話形式にラップします (Titan テキスト および AI21 Labs Jurassic モデルファミリーの場合はそうする必要はありません)。次の例は、会話形式のプロンプトを示しています。

User prompt: Human: Describe where sea otters live in two sentences. Assistant: Output: Here is a two sentence description of where sea otters live: Sea otters live in the northern Pacific Ocean along the coasts of Russia, Alaska, Canada, and the continental United States. They prefer coastal habitats like rocky shores, kelp forests, and estuaries where they have access to shallow, nearshore waters.

(プロンプトの出典: AWS、使用モデル: Anthropic Claude)

プロンプトのメインコンテンツが「\n\nHuman: {{Main Content}}\n\nAssistant:」というようにラップされていることに注目してください。AnthropicClaude モデルの場合、API 経由で送信するプロンプトには「\n\nHuman:」と「 \n\nAssistant:」を含める必要があります。

Titan で会話モードを使用するには、モデルにプロンプトを出す際に「User: {{}} \n Bot: 」という形式を使用できます。