

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 測試您的防護機制
<a name="guardrails-test"></a>

建立防護機制後，即可使用*工作草稿* (`DRAFT`) 版本。工作草稿是防護機制的版本，您可以持續編輯和反覆執行，直到您達到滿意的使用案例組態為止。您可以測試工作草稿或其他版本的防護機制，確保組態符合您的使用案例需求。編輯工作草稿中的組態，並測試不同的提示，以查看防護機制評估及攔截提示或回應的程度。

當您對組態感到滿意時，可以建立防護機制的版本，做為建立版本時，工作草稿組態的快照。您可以在每次修改防護機制時，使用版本來簡化對生產應用程式的防護機制部署。除非您在應用程式中特別使用新版本，否則工作草稿或新建立版本的任何變更都不會反映在您的生成式 AI 應用程式中。

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

**測試防護機制，查看是否封鎖有害內容**

1.  AWS 管理主控台 使用具有使用 Amazon Bedrock 主控台之許可的 IAM 身分登入 。接著，開啟位於 [https://console.aws.amazon.com/bedrock](https://console.aws.amazon.com/bedrock) 的 Amazon 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`。

若要查看不同模型的請求內文，請參閱 [基礎模型的推論請求參數和回應欄位](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` – 每個回應都會傳回文字在 `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) 和 regex 篩選條件的評估：
      + `piiEntities` – 每個違反 PII 篩選條件的評估清單。每個篩選條件包含下列欄位：
        + `type` – 找到的 PII 類型。
        + `match` – 符合篩選條件的單字或片語。
        + `action` – 指定單字是否 `BLOCKED` 或取代為識別符 (`ANONYMIZED`)。
      + `regexes` – 每個違反 regex 篩選條件的評估清單。每個篩選條件包含下列欄位：
        + `name` – regex 篩選條件的名稱。
        + `regex` – 找到的 PII 類型。
        + `match` – 符合篩選條件的單字或片語。
        + `action` – 指定單字是否 `BLOCKED` 或取代為識別符 (`ANONYMIZED`)。
  + `outputs` – 有關防護機制對模型回應評估的詳細資訊清單。清單中的每個項目都是符合 `input` 物件格式的物件。如需詳細資訊，請參閱 `input` 欄位。

------