

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

# ガードレールをテストする
<a name="guardrails-test"></a>

ガードレールを作成すると、*作業中のドラフト* (`DRAFT`) バージョンを利用できるようになります。作業中のドラフトとは、ガードレールの 1 つのバージョンであり、ユースケースに適した設定に仕上がるまで編集と反復作業を続けることができます。作業中のドラフトやその他のバージョンのガードレールをテストし、ベンチマークを測定して、設定がユースケースの要件を満たしていることを確認することができます。作業中のドラフトの設定を編集し、さまざまなプロンプトをテストして、ガードレールがプロンプトやレスポンスをどの程度適切に評価し、遮断しているかを確認します。

設定に満足したら、ガードレールのバージョンを作成できます。このバージョンは、作成時点における作業中のドラフトの設定のスナップショットとして機能します。バージョンを使用することで、ガードレールを変更するたびに、本番アプリケーションに効率的にデプロイできます。作業中のドラフトを変更した場合や新しいバージョンを作成した場合、その新しいバージョンをアプリケーションで明示的に使用しない限り、生成 AI アプリケーションには反映されません。

------
#### [ Console ]

**ガードレールが有害なコンテンツを遮断しているかどうかをテストするには**

1. Amazon Bedrock コンソールを使用するアクセス許可を持つ IAM ID AWS マネジメントコンソール を使用して にサインインします。Amazon Bedrock コンソール ([https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock)) を開きます。

1. 左側のナビゲーションペインから **[ガードレール]** を選択します。次に、**[ガードレール]** セクションでガードレールを選択します。

1. 右側にテストウィンドウが表示されます。テストウィンドウには、次のオプションがあります。

   1. デフォルトでは、ガードレールの作業中のドラフトがテストウィンドウで使用されます。ガードレールの別のバージョンをテストするには、テストウィンドウの上部で **[作業中のドラフト]** を選択し、バージョンを選択します。

   1. モデルを選択するには、**[モデルを選択]** を選択します。選択したら、**[適用]** を選択します。モデルを変更するには、**[変更]** を選択します。

   1. **[プロンプト]** ボックスにプロンプトを入力します。

   1. モデルレスポンスを引き出すには、**[実行]** を選択します。

   1. モデルからレスポンスが返され、**[最終応答]** ボックスに表示されます (最終レスポンスには、ガードレールによる変更が適宜加えられます)。ガードレールがプロンプトまたはモデルレスポンスをブロックまたはフィルタリングした場合は、ガードレールで検出された違反の数を知らせるメッセージが **[ガードレールチェック]** の下に表示されます。

   1. プロンプトまたはレスポンスの中で認識されたトピックや有害カテゴリのうち、どれがフィルターを通過 (合格) し、どれがブロックされたかを確認するには、**[トレースを表示]** を選択します。

   1. **[プロンプト]** タブと **[モデルレスポンス]** タブを使用して、ガードレールでフィルタリングまたはブロックされたトピックや有害なカテゴリを表示します。

**[テキストのプレイグラウンド]** でガードレールをテストすることもできます。プレイグラウンドを選択し、プロンプトをテストする前に **[設定]** ペインで **[ガードレール]** を選択してください。

------
#### [ API ]

モデル呼び出しでガードレールを使用するには、[InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html) リクエストまたは [InvokeModelWithResponseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) リクエストを送信します。または、会話型のアプリケーションを構築している場合は、[Converse API](guardrails-use-converse-api.md) を使用できます。

**リクエストの形式**

モデルを呼び出すためのリクエストエンドポイント (ストリーミングありの場合となしの場合) は、次のとおりです。*modelId* は、実際に使用するモデルの ID に置き換えてください。
+ `InvokeModel` – POST /model/*modelId*/invoke HTTP/1.1
+ `InvokeModelWithResponseStream` – POST /model/*modelId*/invoke-with-response-stream HTTP/1.1

どちらの API オペレーションも、ヘッダーの形式は次のとおりです。

```
Accept: accept
Content-Type: contentType
X-Amzn-Bedrock-Trace: trace
X-Amzn-Bedrock-GuardrailIdentifier: guardrailIdentifier
X-Amzn-Bedrock-GuardrailVersion: guardrailVersion
```

パラメータについて、以下に説明します。
+ `Accept` には、レスポンスの推論本文の MIME タイプを設定します。デフォルト値は `application/json` です。
+ `Content-Type` には、リクエストの入力データの MIME タイプを設定します。デフォルト値は `application/json` です。
+ `X-Amzn-Bedrock-Trace` を `ENABLED` に設定すると、トレースが有効になり、ガードレールによってブロックされたコンテンツとその理由などを確認できます。
+ `X-Amzn-Bedrock-GuardrailIdentifier` には、リクエストとモデルレスポンスに適用するガードレールの識別子を指定します。
+ `X-Amzn-Bedrock-GuardrailVersion ` には、リクエストとモデルレスポンスに適用するガードレールのバージョンを指定します。

一般的なリクエスト本文の形式は、次の例のとおりです。`tagSuffix` プロパティは、*入力のタグ付け*にのみ使用されます。`streamProcessingMode` を使用して、ガードレールでストリーミングを同期処理にするか非同期処理にするかを設定することもできます。これは、`InvokeModelWithResponseStream` でのみ使用できます。

```
{
    <see model details>,
    "amazon-bedrock-guardrailConfig": {
        "tagSuffix": "string", 
        "streamProcessingMode": "SYNCHRONOUS" | "ASYNCHRONOUS"
    }
}
```

**警告**  
次の状況下では、エラーが発生します。  
ガードレールを有効にしたのに、リクエスト本文に `amazon-bedrock-guardrailConfig` フィールドがない。
ガードレールを無効にしたのに、リクエスト本文に `amazon-bedrock-guardrailConfig` フィールドを指定した。
ガードレールを有効にしたのに、`contentType` が `application/json` ではない。

さまざまなモデルのリクエスト本文を確認するには、「[Inference request parameters and response fields for foundation models](model-parameters.md)」を参照してください。

**注記**  
Cohere Command モデルでは、ガードレールを使用する場合、`num_generations` フィールドで指定できる生成数は 1 つのみです。

ガードレールとそのトレースを有効にする場合、モデル呼び出しの一般的なレスポンスの形式 (ストリーミングありの場合となしの場合) は、次のとおりです。各モデルの `body` の他の部分の形式を確認するには、「[Inference request parameters and response fields for foundation models](model-parameters.md)」を参照してください。*contentType* は、リクエストに指定した内容と一致します。
+ `InvokeModel`

  ```
  HTTP/1.1 200
  Content-Type: contentType
  
  {
      <see model details for model-specific fields>,
      "completion": "<model response>",
      "amazon-bedrock-guardrailAction": "INTERVENED | NONE",
      "amazon-bedrock-trace": {
          "guardrail": {
              "modelOutput": [
                  "<see model details for model-specific fields>"
              ],
              "input": {
                  "sample-guardrailId": {
                      "topicPolicy": {
                          "topics": [
                              {
                                  "name": "string",
                                  "type": "string",
                                  "action": "string"
                              }
                          ]
                      },
                      "contentPolicy": {
                          "filters": [
                              {
                                  "type": "string",
                                  "confidence": "string",
                                  "filterStrength": "string",
                                  "action": "string"
                              }
                          ]
                      },
                      "wordPolicy": {
                          "customWords": [
                              {
                                  "match": "string",
                                  "action": "string"
                              }
                          ],
                          "managedWordLists": [
                              {
                                  "match": "string",
                                  "type": "string",
                                  "action": "string"
                              }
                          ]
                      },
                      "sensitiveInformationPolicy": {
                          "piiEntities": [
                              {
                                  "type": "string",
                                  "match": "string",
                                  "action": "string"
                              }
                          ],
                          "regexes": [
                              {
                                  "name": "string",
                                  "regex": "string",
                                  "match": "string",
                                  "action": "string"
                              }
                          ]
                      },
                      "invocationMetrics": {
                          "guardrailProcessingLatency": "integer",
                          "usage": {
                              "topicPolicyUnits": "integer",
                              "contentPolicyUnits": "integer",
                              "wordPolicyUnits": "integer",
                              "sensitiveInformationPolicyUnits": "integer",
                              "sensitiveInformationPolicyFreeUnits": "integer",
                              "contextualGroundingPolicyUnits": "integer"
                          },
                          "guardrailCoverage": {
                              "textCharacters": {
                              "guarded": "integer",
                              "total": "integer"
                              }
                          }
                      }
                  }
              },
              "outputs": ["same guardrail trace format as input"]
          }
      }
  }
  ```
+ `InvokeModelWithResponseStream` – 各レスポンスは、`bytes` フィールドにテキストを含む `chunk` を返します。例外が発生した場合は、それらの例外も併せて返されます。ガードレールトレースは、最後のチャンクにのみ返されます。

  ```
  HTTP/1.1 200
  X-Amzn-Bedrock-Content-Type: contentType
  Content-type: application/json
  
  {
      "chunk": { 
        "bytes": "<blob>"
      },
    "internalServerException": {},
    "modelStreamErrorException": {},
    "throttlingException": {},
    "validationException": {},
    "amazon-bedrock-guardrailAction": "INTERVENED | NONE",
    "amazon-bedrock-trace": {
      "guardrail": {
        "modelOutput": ["<see model details for model-specific fields>"],
        "input": {
          "sample-guardrailId": {
            "topicPolicy": {
              "topics": [
                {
                  "name": "string",
                  "type": "string",
                  "action": "string"
                }
              ]
            },
            "contentPolicy": {
              "filters": [
                {
                  "type": "string",
                  "confidence": "string",
                  "filterStrength": "string",
                  "action": "string"
                }
              ]
            },
            "wordPolicy": {
              "customWords": [
                {
                  "match": "string",
                  "action": "string"
                }
              ],
              "managedWordLists": [
                {
                  "match": "string",
                  "type": "string",
                  "action": "string"
                }
              ]
            },
            "sensitiveInformationPolicy": {
              "piiEntities": [
                {
                  "type": "string",
                  "match": "string",
                  "action": "string"
                }
              ],
              "regexes": [
                {
                  "name": "string",
                  "regex": "string",
                  "match": "string",
                  "action": "string"
                }
              ]
            },
            "invocationMetrics": {
              "guardrailProcessingLatency": "integer",
              "usage": {
                "topicPolicyUnits": "integer",
                "contentPolicyUnits": "integer",
                "wordPolicyUnits": "integer",
                "sensitiveInformationPolicyUnits": "integer",
                "sensitiveInformationPolicyFreeUnits": "integer",
                "contextualGroundingPolicyUnits": "integer"
              },
              "guardrailCoverage": {
                "textCharacters": {
                  "guarded": "integer",
                  "total": "integer"
                }
              }
            }
          }
        },
        "outputs": ["same guardrail trace format as input"]
      }
    }
  }
  ```

ガードレールを有効にした場合、レスポンスで次のフィールドが返されます。
+ `amazon-bedrock-guardrailAction` – ガードレールが `INTERVENED` かそうでない (`NONE`) かを指定します。
+ `amazon-bedrock-trace` – トレースを有効にした場合にのみ表示されます。トレースのリストが含まれています。各トレースは、ガードレールがブロックしたコンテンツに関する情報を提供します。トレースには、次のフィールドが含まれています。
  + `modelOutput` – モデルからの出力のうち、ブロックされた出力を含むオブジェクト。
  + `input` – ガードレールによるプロンプトの評価に関して、次の詳細が含まれています。
    + `topicPolicy` – `topics` (違反となった各トピックポリシーの評価のリスト) が含まれています。各トピックには、次のフィールドが含まれています。
      + `name` – トピックポリシーの名前。
      + `type` – トピックを拒否するかどうかを指定します。
      + `action` – トピックがブロックされたことを指定します。
    + `contentPolicy` – `filters` (違反となった各コンテンツフィルターの評価のリスト) が含まれています。各フィルターには、次のフィールドが含まれています。
      + `type` – コンテンツフィルターのカテゴリ。
      + `confidence` – 出力が有害カテゴリに分類される可能性を示す信頼度。
      + `action` – コンテンツがブロックされたことを指定します。この結果は、ガードレールに設定されているフィルターの強度によって異なります。
    + `wordPolicy` – フィルタリングされたカスタム単語とマネージド単語のコレクションと、それらの単語に対する評価が含まれています。各リストには、次のフィールドが含まれています。
      + `customWords` – フィルターに一致したカスタム単語のリスト。
        + `match` – フィルターに一致した単語またはフレーズ。
        + `action` – 単語がブロックされたことを指定します。
      + `managedWordLists` – フィルターに一致したマネージド単語のリスト。
        + `match` – フィルターに一致した単語またはフレーズ。
        + `type` – フィルターに一致したマネージド単語のタイプを指定します。例えば、冒涜的な表現フィルターと一致した場合は `PROFANITY` です。
        + `action` – 単語がブロックされたことを指定します。
    + `sensitiveInformationPolicy` – 次のオブジェクトが含まれています。それぞれ、違反となった個人を特定できる情報 (PII) フィルターと正規表現フィルターの評価のリストを含んでいます。
      + `piiEntities` – 違反となった各 PII フィルターの評価のリスト。各フィルターには、次のフィールドが含まれています。
        + `type` – 検出された PII の種類。
        + `match` – フィルターに一致した単語またはフレーズ。
        + `action` – 単語がブロックされたか (`BLOCKED`)、識別子で置き換えられたか (`ANONYMIZED`) を指定します。
      + `regexes` – 違反となった各正規表現フィルターの評価のリスト。各フィルターには、次のフィールドが含まれています。
        + `name` – 正規表現フィルターの名前。
        + `regex` – 検出された PII の種類。
        + `match` – フィルターに一致した単語またはフレーズ。
        + `action` – 単語がブロックされたか (`BLOCKED`)、識別子で置き換えられたか (`ANONYMIZED`) を指定します。
  + `outputs` – ガードレールによるモデルレスポンスの評価に関する詳細のリスト。リスト内の各項目は、`input` オブジェクトの形式に一致するオブジェクトです。詳細については、`input` フィールドを参照してください。

------