プロンプトを最適化する - Amazon Bedrock

プロンプトを最適化する

Amazon Bedrock には、プロンプトを最適化するためのツールが用意されています。最適化を行うと、プロンプトが書き換えられて、ユースケースにより適した推論結果が得られます。プロンプトを最適化するモデルを選択し、改訂されたプロンプトを生成できます。

最適化するプロンプトを送信すると、Amazon Bedrock によってプロンプトのコンポーネントが分析されます。分析に成功した場合、プロンプトが書き換えられます。その後、最適化されたプロンプトのテキストをコピーして使用できます。

注記

最良の結果を得るには、英語でプロンプトを最適化することをお勧めします。

プロンプトの最適化でサポートされているリージョンおよびモデル

プロンプトの最適化は、次のリージョンでサポートされています (Amazon Bedrock でサポートされているリージョンの詳細については、「Amazon Bedrock エンドポイントとクォータ」を参照してください)。

  • 米国東部 (バージニア北部)

  • 米国西部 (オレゴン)

  • アジアパシフィック (ムンバイ)

  • アジアパシフィック (シドニー)

  • カナダ (中部)

  • 欧州 (フランクフルト)

  • 欧州 (アイルランド)

  • 欧州 (ロンドン)

  • 欧州 (パリ)

  • 南米 (サンパウロ)

プロンプトの最適化は、次の基盤モデルでサポートされています (各モデルをサポートするリージョンを確認するには、「Amazon Bedrock でサポートされている基盤モデル」を参照してください)。

  • Amazon Nova Lite

  • Amazon Nova Micro

  • Amazon Nova Premier

  • Amazon Nova Pro

  • Anthropic Claude 3 Haiku

  • Anthropic Claude 3 Opus

  • Anthropic Claude 3 Sonnet

  • Anthropic Claude 3.5 Haiku

  • Anthropic Claude 3.5 Sonnet v2

  • Anthropic Claude 3.5 Sonnet

  • Anthropic Claude 3.7 Sonnet

  • Anthropic Claude Opus 4

  • Anthropic Claude Sonnet 4

  • DeepSeek DeepSeek-R1

  • Meta Llama 3 70B Instruct

  • Meta Llama 3.1 70B Instruct

  • Meta Llama 3.2 11B Instruct

  • Meta Llama 3.3 70B Instruct

  • Meta Llama 4 Maverick 17B Instruct

  • Meta Llama 4 Scout 17B Instruct

  • Mistral AI Mistral Large (24.02)

  • Mistral AI Mistral Large (24.07)

最適化するプロンプトを送信する

プロンプトを最適化する方法については、任意の方法のタブを選択し、そのステップに従ってください。

Console

AWS マネジメントコンソールでプレイグラウンドまたはプロンプト管理を使用して、プロンプトを最適化できます。プロンプトを最適化する前に、モデルを選択する必要があります。プロンプトは、選択したモデルに合わせて最適化されます。

プレイグラウンドでプロンプトを最適化するには
  1. Amazon Bedrock プレイグラウンドでプロンプトを記述する方法については、「Generate responses in the console using playgrounds」の手順に従ってください。

  2. プロンプトを記述してモデルを選択したら、ワンドアイコン ( Sparkle icon representing cleaning or refreshing functionality. ) を選択します。[プロンプトを最適化] ダイアログボックスが開き、Amazon Bedrock がプロンプトの最適化を開始します。

  3. Amazon Bedrock がプロンプトの分析と最適化を完了したら、ダイアログボックス内で元のプロンプトを最適化されたプロンプトと並べて比較できます。

  4. プロンプトをプレイグラウンド内の最適化されたプロンプトに置き換えるには、[最適化されたプロンプトを使用] を選択します。元のプロンプトを保持するには、[キャンセル] を選択します。

  5. プロンプトを送信してレスポンスを生成するには、[実行] を選択します。

プロンプト管理でプロンプトを最適化するには
  1. プロンプト管理を使用してプロンプトを記述する方法については、「プロンプト管理を使用してプロンプトを作成する」の手順に従ってください。

  2. プロンプトを記述してモデルを選択したら、[プロンプト] ボックスの上部にある ( Sparkle icon representing cleaning or refreshing functionality. ) [最適化] を選択します。

  3. Amazon Bedrock がプロンプトの分析と最適化を完了すると、最適化されたプロンプトが元のプロンプトの隣にバリアントとして表示されます。

  4. 最適化されたプロンプトを元のプロンプトの代わりに使用するには、[元のプロンプトを置き換える] を選択します。元のプロンプトを保持するには、[比較を終了] を選択し、元のプロンプトを保存することを選択します。

    注記

    比較ビューに 3 つのプロンプトがある場合に、別のプロンプトを最適化しようとすると、元のプロンプトまたはいずれかのバリアントを上書きして置き換えるように求められます。

  5. プロンプトを送信してレスポンスを生成するには、[実行] を選択します。

API

プロンプトを最適化するには、Amazon Bedrock エージェントのランタイムエンドポイントを使用して OptimizePrompt リクエストを送信します。input オブジェクトで最適化するプロンプトを指定し、targetModelId フィールドで最適化の対象となるモデルを指定します。

レスポンスストリームは以下のイベントを返します。

  1. analyzePromptEvent – プロンプトの分析が完了すると表示されます。プロンプトの分析結果を説明するメッセージが含まれます。

  2. optimizedPromptEvent – プロンプトの書き換えが完了すると表示されます。最適化されたプロンプトが含まれます。

次のコードサンプルを実行して、プロンプトを最適化します。

import boto3 # Set values here TARGET_MODEL_ID = "anthropic.claude-3-sonnet-20240229-v1:0" # Model to optimize for. For model IDs, see https://docs.aws.amazon.com/bedrock/latest/userguide/model-ids.html PROMPT = "Please summarize this text: " # Prompt to optimize def get_input(prompt): return { "textPrompt": { "text": prompt } } def handle_response_stream(response): try: event_stream = response['optimizedPrompt'] for event in event_stream: if 'optimizedPromptEvent' in event: print("========================== OPTIMIZED PROMPT ======================\n") optimized_prompt = event['optimizedPromptEvent'] print(optimized_prompt) else: print("========================= ANALYZE PROMPT =======================\n") analyze_prompt = event['analyzePromptEvent'] print(analyze_prompt) except Exception as e: raise e if __name__ == '__main__': client = boto3.client('bedrock-agent-runtime') try: response = client.optimize_prompt( input=get_input(PROMPT), targetModelId=TARGET_MODEL_ID ) print("Request ID:", response.get("ResponseMetadata").get("RequestId")) print("========================== INPUT PROMPT ======================\n") print(PROMPT) handle_response_stream(response) except Exception as e: raise e