View a markdown version of this page

選択的な最適化 - Amazon Bedrock

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

選択的な最適化

デフォルトでは、アドバンストプロンプト最適化はプロンプトテンプレート全体の任意の部分をend-to-end書き換えます。選択最適化を使用すると、オプティマイザが変更できるプロンプトのセクションを正確に制御できます。プロンプトが大規模または複雑で、一部のセクションがすでに適切に調整されている場合は、選択的最適化を使用します。これにより、まだ作業が必要な部分のみを改善できます。

タグ構文

advpo: (高度なプロンプト最適化) 名前空間を使用して、プロンプトテンプレートに予約された XML スタイルのタグをアノテーションし、最適化の範囲を制御します。

  • <advpo:optimize>...</advpo:optimize> – 最適化の焦点領域としてセクションをマークします。オプティマイザは、これらのタグ内のコンテンツを書き換えます。

  • <advpo:exclude>...</advpo:exclude> – セクションをフリーズとしてマークします。オプティマイザは、いかなる状況でもこれらのタグ内のコンテンツを変更しません。

advpo: 名前空間プレフィックスは、他の目的で既に XML のようなマークアップを使用しているプロンプトとの競合を防ぎます。

オプティマイザが書き換える内容を決定する方法

オプティマイザの動作は、プロンプトテンプレートに存在するタグによって異なります。

存在するタグ

動作

モード

タグがありません

プロンプト全体がend-to-end最適化されている (現在の動作と同じ)

レガシーモード

少なくとも 1 つ <advpo:optimize>

オプティマイザは<advpo:optimize>ブロック内のコンテンツのみを書き換えます。タグのないコンテンツはすべて保持されます。

明示的な包含モード

<advpo:exclude> タグのみ ( なし<advpo:optimize>)

オプティマイザは、<advpo:exclude>ブロック内にないすべてを書き換えます。

除外専用モード

両方のタグタイプが存在する

明示的な包含モードが適用されます。オプティマイザは<advpo:optimize>コンテンツのみを書き換えます。オプティマイザは<advpo:exclude>タグを受け入れますが、冗長として扱います。

明示的な包含モード

ヒント

両方のタグタイプは必要ありません。フォーカスエリアを でラップすると<advpo:optimize>、それ以外はすべて自動的に保持されます。保持するコンテンツに<advpo:exclude>タグを追加する必要はありません。<advpo:optimize> タグがない<advpo:exclude>場合にのみ を使用します。他のすべてを最適化しながら、特定のセクションをフリーズします。

次の例は、 <advpo:optimize><advpo:exclude> タグを使用して、オプティマイザが書き換えるプロンプトテンプレートのセクションを制御する方法を示しています。

例 advpo:optimize を使用して 1 つのセクションに集中する

この例では、苦情対応手順のみが最適化されています。オプティマイザは、記述されたとおりにアイデンティティステートメントとポリシー制約を保持します。

You are a helpful customer service agent for Acme Corp. Always be polite and professional. <advpo:optimize>When responding to a complaint, acknowledge the customer's frustration, summarize the issue, and propose exactly one concrete resolution. Use bullet points for clarity.</advpo:optimize> Never disclose internal pricing or employee information.
例 advpo:exclude を使用して特定のセクションをフリーズする

この例では、ID ステートメントとポリシー制約は凍結されています。その他 (苦情対応手順) はすべて最適化されています。

<advpo:exclude>You are a helpful customer service agent for Acme Corp. Always be polite and professional.</advpo:exclude> When responding to a complaint, acknowledge the customer's frustration, summarize the issue, and propose exactly one concrete resolution. Use bullet points for clarity. <advpo:exclude>Never disclose internal pricing or employee information.</advpo:exclude>
例複数の最適化ブロック

最適化のために、連続していない複数のセクションをマークできます。オプティマイザは、その一部またはすべてを書き換えることができます。

You are a technical support assistant for CloudWidget. <advpo:optimize>When diagnosing an issue, ask clarifying questions about the customer's environment before suggesting solutions.</advpo:optimize> Always check the knowledge base before escalating. <advpo:optimize>When providing a solution, include step-by-step instructions with numbered steps. End with a verification step the customer can perform.</advpo:optimize> Never share internal ticket IDs with customers.
例コンテンツ生成のための空の 最適化ブロック

空の<advpo:optimize>ブロックは、その場所に新しいプロンプトコンテンツを生成して挿入するようにオプティマイザに指示します。

You are a helpful assistant that summarizes documents. {{document}} <advpo:optimize></advpo:optimize> Respond in plain English. Keep your summary under 200 words.

プレースホルダー変数とのやり取り

次のルールでは、プレースホルダー変数が選択的最適化タグとどのように相互作用するかについて説明します。

  • 内の変数<advpo:exclude>: ランタイムは、ランタイム{{variableName}}時に のような変数を置き換えます。除外は、それらの周囲のテンプレートテキストに適用されます。「このテンプレートテキストを書き換えないでください」とは、「変数を置き換えないでください」を意味するものではありません。

  • 内の変数<advpo:optimize>: 変数プレースホルダーはプレースホルダーとして保持されます。オプティマイザは周囲の指示を書き換えますが、{{variableName}}参照はそのまま維持します。

  • 実行時の変数値内のタグ: オプティマイザはこれらのタグを無視します。タグ解析は、変数置換の前にテンプレートでのみ行われます。これにより、ユーザーが指定した入力値による最適化ディレクティブの挿入を防ぐことができます。

検証ルール

次の設定では、検証エラーが発生します。

無効な設定

エラー

解像度

ネストされたタグ ( <advpo:optimize><advpo:exclude>、または逆など)

ValidationException

ネストを削除します。テンプレート内の任意の場所で 1 つのタグタイプのみを使用します。

不正な形式または閉じていないタグ (たとえば、閉じタグ<advpo:optimize>がない)

ValidationException

すべての開始タグに、一致する終了タグがあることを確認します。

advpo: 名前空間のスペルミスタグ (例: <advpo:optmize>)

ValidationException

optimize と のスペルを確認しますexclude。高度なプロンプト最適化は、開始タグと終了タグの両方を検証します。

出力動作

ジョブの最後に返される最適化されたプロンプトでは、オプティマイザはすべての <advpo:optimize>および <advpo:exclude> タグを削除します。最適化マークアップなしでクリーンプロンプトが表示されます。<advpo:exclude> ブロック内のコンテンツ (および明示的な包含モードのタグなしコンテンツ) は変更されません。<advpo:optimize> ブロック内のコンテンツには、オプティマイザの書き換えバージョンが含まれています。

その他の動作

次の表は、オプティマイザが追加のシナリオを処理する方法を示しています。

シナリオ

動作

複数の<advpo:optimize>ブロック

すべて最適化の対象となります。オプティマイザは、その一部またはすべてを書き換えることができます。

複数の<advpo:exclude>ブロック

すべての<advpo:exclude>タグ内のすべてのコンテンツがフリーズされます。

空の<advpo:optimize>ブロック

有効。オプティマイザはその場所に新しいコンテンツを生成して挿入します。

空白専用<advpo:optimize>ブロック

空のブロックと同じように扱われました。

空の<advpo:exclude>ブロック

無視 (no-op)。フリーズするコンテンツはありません。

タグは文の中単語または中語句を分割します

許可されます。オプティマイザは、タグ付けされたコンテンツを単位として動作します。オプティマイザが警告を発することがあります。

ベストプラクティス

選択的な最適化を使用する場合は、以下のベストプラクティスに従ってください。

  • <advpo:optimize> タグから始めます。明示的な包含モードが最も直感的です。改善したいものをマークすると、他のすべては変わりません。

  • 最適化ブロックを自己完結型に保ちます。各ブロック内に完全な手順または論理セクションを配置します。文章の途中で分割することはできますが、厄介な結果が生じる可能性があります。

  • プロンプトが既に部分的に調整されている場合は、選択的最適化を使用します。安全制約または出力形式の指示を既に調整している場合は、それらをフリーズして、オプティマイザがまだ作業を必要とするセクションに焦点を当てます。

  • マルチターンパターンと組み合わせてください。モノリシック多相プロンプト (「」を参照マルチターンプロンプトとステージングプロンプトの最適化) では、会話処理のボイラープレートをフリーズさせながら、改善が必要なフェーズ指示のみを対象とし<advpo:optimize>ます。