

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

# ユーザー入力にタグを適用してコンテンツをフィルタリングする
<a name="guardrails-tagging"></a>

入力タグを使用して、入力テキスト内の特定のコンテンツをガードレールによる処理対象としてマークすることができます。入力の特定の部分にだけガードレールを適用し、他の部分は未処理のままにする場合に便利です。

例えば、RAG アプリケーションの入力プロンプトには、システムプロンプト、信頼できるドキュメントソースからの検索結果、ユーザークエリが含まれている場合があります。システムプロンプトは開発者、検索結果は信頼できるソースがそれぞれ提供元であるため、この場合、ユーザークエリだけをガードレールで評価すれば十分です。

別の例として、会話型アプリケーションの入力プロンプトに、システムプロンプト、会話履歴、現在のユーザー入力が含まれている場合があります。システムプロンプトは開発者固有の指示であり、会話履歴に含まれている過去のユーザー入力とモデルレスポンスは、既にガードレールで評価されている可能性があります。このような場合は、現在のユーザー入力のみを評価することができます。

入力タグを使用すれば、入力プロンプトのどの部分をガードレールで処理および評価するかを細かく制御し、ユースケースに合わせて保護対策をカスタマイズできます。また、入力プロンプト全体ではなく、入力の比較的短く、関連性の高い部分だけを柔軟に評価できるため、パフォーマンスの向上とコスト削減にも役立ちます。

**ガードレール用にコンテンツにタグを付ける**

ガードレールで処理するコンテンツにタグを付けるには、予約済みのプレフィックスとカスタムの `tagSuffix` を組み合わせた XML タグを使用します。例えば、次のようになります。

```
{
    "text": """
        You are a helpful assistant.
        Here is some information about my account:
          - There are 10,543 objects in an S3 bucket.
          - There are no active EC2 instances.
        Based on the above, answer the following question:
        Question: 
        <amazon-bedrock-guardrails-guardContent_xyz>
        How many objects do I have in my S3 bucket? 
        </amazon-bedrock-guardrails-guardContent_xyz>
         ...
        Here are other user queries:
        <amazon-bedrock-guardrails-guardContent_xyz>
        How do I download files from my S3 bucket?
        </amazon-bedrock-guardrails-guardContent_xyz>    
    """,
    "amazon-bedrock-guardrailConfig": {
        "tagSuffix": "xyz"
    }
}
```

前の例では、コンテンツ「*How many objects do I have in my S3 bucket?*」と「*How do I download files from my S3 bucket?*」 に、タグ `<amazon-bedrock-guardrails-guardContent_xyz>` を使用して、ガードレール処理用のタグが付いています。プレフィックス `amazon-bedrock-guardrails-guardContent` はガードレールによって予約されています。

**タグのサフィックス**

入力のタグ付けを使用する場合、タグのサフィックス (前の例では `xyz`) として、`amazon-bedrock-guardrailConfig` の `tagSuffix` フィールドに動的な値を指定する必要があります。リクエストごとに新しいランダムな文字列を `tagSuffix` として使用することをお勧めします。そうすることで、タグの構造が予測不能になり、潜在的なプロンプトインジェクション攻撃を軽減できます。静的なタグを使用すると、悪意のあるユーザーが XML タグを閉じ、タグを閉じた後に悪意のあるコンテンツを追加することが可能になり、*インジェクション攻撃*につながるおそれがあります。1～20 文字長の英数字のみ使用できます。先ほどのサフィックスの例 `xyz` の場合、保護対象のすべてのコンテンツをサフィックス付きの XML タグで囲む必要があります (例: `<amazon-bedrock-guardrails-guardContent_xyz>`*コンテンツ*`</amazon-bedrock-guardrails-guardContent_xyz>`)。リクエストごとに動的な一意の識別子をタグのサフィックスとして使用することをお勧めします。

**複数のタグ**

入力テキストで同じタグ構造を複数回使用して、コンテンツの異なる部分をガードレールによる処理対象としてマークすることができます。タグをネスト構造にすることはできません。

**タグの付いていないコンテンツ**

入力タグの外側のコンテンツは、ガードレールによって処理されません。そのおかげで、安全だとわかっていて、ガードレールで処理する必要のない指示、会話例、ナレッジベース、その他のコンテンツを含めることができます。入力プロンプトにタグがない場合、プロンプト全体がガードレールによって処理されます。唯一の例外は[Amazon Bedrock ガードレールでプロンプト攻撃を検出する](guardrails-prompt-attack.md)フィルターで、この場合は入力タグが必須です。