

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 测试护栏
<a name="guardrails-test"></a>

创建护栏后，系统会提供一个*工作草稿*（`DRAFT`）版本。工作草稿是护栏的一个版本，您可以不断对其进行编辑和迭代，直到实现满足应用场景需求的配置。您可以对工作草稿或其他版本的护栏进行功能测试和基准测试，以确保配置满足您的使用案例要求。编辑工作草稿中的配置并测试不同的提示，以了解护栏在评估和拦截提示或响应方面的效果如何。

如果您确定配置正确无误，则可以创建护栏的版本，该版本作为创建版本时工作草稿配置的快照。每次修改护栏时，您都可以使用版本来简化将护栏部署到生产应用程序中的流程。除非您在应用程序中明确使用新版本，否则对工作草稿或创建的新版本的任何修改都不会反映在您的生成式人工智能应用程序中。

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

**测试护栏是否能屏蔽有害内容**

1. 使用有权使用 Amazon Bedrock 控制台的 IAM 身份登录。 AWS 管理控制台 然后，在 [https://console.aws.amazon.com/](https://console.aws.amazon.com/bedrock)bedrock 上打开 Amazon Bedrock 控制台。

1. 从左侧导航窗格中选择**护栏**。然后，在**护栏**部分选择一项护栏。

1. 右侧会显示一个测试窗口。您可以在该窗口中选择以下选项：

   1. 默认情况下，测试窗口中使用的是护栏的工作草稿。要测试其他版本的护栏，请在测试窗口顶部选择**工作草稿**，然后选择版本。

   1. 使用**选择模型**来选择一个模型。做出选择后，选择**应用**。要更改模型，请选择**更改**。

   1. 在**提示**框中输入提示。

   1. 要获取模型响应，请选择**运行**。

   1. 模型会在**最终响应**框中返回响应（该响应可能会被护栏修改）。如果护栏屏蔽或筛除了提示或模型响应，您会在**护栏检查**下会看到一条消息，告知您护栏检测到的违规数量。

   1. 要查看提示或响应中已被识别的主题或有害内容类别，并确定哪些被筛选条件放行，哪些被屏蔽，请选择**查看跟踪**。

   1. 使用**提示**和**模型响应**选项卡查看被筛除或被屏蔽的主题或有害内容类别。

您还可以在**文本操场**中测试护栏。在测试提示之前，选择操场并在**配置**窗格中选择**护栏**。

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

要在模型调用中使用护栏，请发送或请求。[InvokeModel[InvokeModelWithResponseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html)](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)或者，如果您正在构建对话应用程序，可以使用 [Converse API](guardrails-use-converse-api.md)。

**请求格式**

调用模型的请求端点（无论是否使用流式传输）如下所示。*modelId*替换为要使用的模型的 ID。
+ `InvokeModel`— POST /model/ /inv *modelId* oke HTTP/1.1
+ `InvokeModelWithResponseStream`— POST /model//*modelId*HTTP/1.1 invoke-with-response-stream 

这两个 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`。

要查看不同模型的请求正文，请参阅[基础模型的推理请求参数和响应字段](model-parameters.md)。

**注意**  
对于 Cohere Command 模型，如果使用护栏，您只能在 `num_generations` 字段中指定一个生成结果。

如果您启用了护栏及其跟踪功能，则调用模型的响应格式如下所示（无论是否使用流式传输）。要查看每个模型的 `body` 的其余部分的格式，请参阅[基础模型的推理请求参数和响应字段](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` – 每个响应都会返回一个 `chunk`，其文本位于 `bytes` 字段中，并包含出现的任何异常。护栏跟踪信息仅在最后一个数据块中返回。

  ```
  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` 字段。

------