

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Test de votre barrière de protection
<a name="guardrails-test"></a>

Une fois que vous avez créé une barrière de protection, une *version préliminaire* (`DRAFT`) est disponible. La version préliminaire est une version de la barrière de protection que vous pouvez continuellement modifier et sur laquelle vous pouvez effectuer des itérations jusqu’à ce que vous obteniez une configuration satisfaisante pour votre cas d’utilisation. Vous pouvez tester et comparer la version préliminaire ou d’autres versions de la barrière de protection pour vous assurer que les configurations répondent aux exigences de votre cas d’utilisation. Modifiez les configurations dans la version préliminaire et testez différentes invites pour voir dans quelle mesure la barrière de protection évalue et intercepte les invites ou les réponses.

Lorsque vous êtes satisfait de la configuration, vous pouvez créer une version de la barrière de protection, qui sert d’instantané des configurations de la version préliminaire lorsque vous créez la version. Vous pouvez utiliser des versions pour rationaliser le déploiement des barrières de protection dans les applications de production chaque fois que vous apportez des modifications à vos barrières de protection. Toute modification apportée à la version préliminaire ou à une nouvelle version créée ne sera reflétée dans votre application d’IA générative que lorsque vous utiliserez spécifiquement la nouvelle version dans l’application.

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

**Pour tester une barrière de protection afin de déterminer s’il bloque le contenu préjudiciable**

1. Connectez-vous au AWS Management Console avec une identité IAM autorisée à utiliser la console Amazon Bedrock. Ouvrez ensuite la console Amazon Bedrock à l'adresse [https://console.aws.amazon.com/bedrock.](https://console.aws.amazon.com/bedrock)

1. Choisissez **Barrières de protection** dans le volet de navigation de gauche. Sélectionnez ensuite une barrière de protection dans la section **Barrières de protection**.

1. Une fenêtre de test s’affiche à droite. Vous disposez des options suivantes dans la fenêtre de test :

   1. Par défaut, la version préliminaire de la barrière de protection est utilisée dans la fenêtre de test. Pour tester une autre version de la barrière de protection, choisissez **Version préliminaire** en haut de la fenêtre de test, puis sélectionnez la version.

   1. Pour sélectionner un modèle, choisissez **Sélectionner un modèle**. Après avoir fait votre choix, sélectionnez **Appliquer**. Pour modifier le modèle, choisissez **Modifier**.

   1. Saisissez une invite dans la zone **Invite**.

   1. Pour obtenir une réponse du modèle, sélectionnez **Exécuter**.

   1. Le modèle renvoie une réponse dans la zone **Réponse finale** (qui peut être modifiée par la barrière de protection). Si la barrière de protection bloque ou filtre l’invite ou la réponse du modèle, un message apparaît sous **Contrôle de barrière de protection** pour vous informer du nombre de violations détectées par la barrière de protection.

   1. Pour afficher les rubriques ou les catégories préjudiciables figurant dans l’invite ou la réponse qui ont été reconnus et autorisés au-delà du filtre ou bloqués par celui-ci, sélectionnez **Afficher le suivi**.

   1. Utilisez les onglets **Invite** et **Réponse du modèle** pour afficher les rubriques ou les catégories préjudiciables qui ont été filtrées ou bloquées par la barrière de protection.

Vous pouvez également tester la barrière de protection dans le **Terrain de jeu de texte**. Sélectionnez le terrain de jeu et sélectionnez la **Barrière de protection** dans le volet **Configurations** avant de tester les invites.

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

Pour utiliser un garde-corps lors de l'invocation d'un modèle, envoyez une [InvokeModel](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModel.html)demande OR. [InvokeModelWithResponseStream](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_InvokeModelWithResponseStream.html) Si vous créez une application conversationnelle, vous pouvez également utiliser l’[API Converse](guardrails-use-converse-api.md).

**Format de demande**

Les points de terminaison de la requête pour invoquer un modèle, avec ou sans streaming, sont les suivants. Remplacez {{modelId}} par l'ID du modèle à utiliser.
+ `InvokeModel`— POST /model/ /invoke HTTP/1.1 {{modelId}}
+ `InvokeModelWithResponseStream`— POST /model//{{modelId}}HTTP/1.1 invoke-with-response-stream 

L’en-tête des deux opérations d’API est au format suivant.

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

Les paramètres sont décrits ci-dessous.
+ Définissez `Accept` sur le type de MIME du corps d’inférence dans la réponse. La valeur par défaut est `application/json`.
+ Définissez `Content-Type` sur le type de MIME des données d’entrée de la requête. La valeur par défaut est `application/json`.
+ Définissez `X-Amzn-Bedrock-Trace` sur `ENABLED` pour permettre un suivi afin de voir, entre autres, quel contenu a été bloqué par des barrières de protection et pourquoi.
+ Définissez `X-Amzn-Bedrock-GuardrailIdentifier` avec l’identifiant de la barrière de protection que vous souhaitez appliquer à la requête et à la réponse du modèle.
+ Définissez `X-Amzn-Bedrock-GuardrailVersion ` avec la version de la barrière de protection que vous souhaitez appliquer à la requête et à la réponse du modèle.

Le format général du corps de la requête est illustré dans l’exemple suivant. La propriété `tagSuffix` n’est utilisée qu’avec le *balisage d’entrée*. Vous pouvez également configurer la barrière de protection lors du streaming de manière synchrone ou asynchrone à l’aide de `streamProcessingMode`. Cela fonctionne uniquement avec `InvokeModelWithResponseStream`.

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

**Avertissement**  
Vous obtiendrez un message d’erreur dans les situations suivantes  
Vous activez la barrière de protection mais il n’y a aucun champ `amazon-bedrock-guardrailConfig` dans le corps de la requête.
Vous désactivez la barrière de protection mais vous spécifiez un champ `amazon-bedrock-guardrailConfig` dans le corps de la requête.
Vous activez la barrière de protection, mais le `contentType` n’est pas `application/json`.

Pour voir le corps de la requête pour les différents modèles, consultez [Paramètres de demande d’inférence et champs de réponse pour les modèles de fondation](model-parameters.md).

**Note**  
Pour les modèles Cohere Command, vous ne pouvez spécifier qu’une génération dans le champ `num_generations` si vous utilisez une barrière de protection.

Si vous activez une barrière de protection et son suivi, le format général de la réponse pour invoquer un modèle, avec ou sans streaming, est le suivant. Pour connaître le format du reste du `body` pour chaque modèle, consultez [Paramètres de demande d’inférence et champs de réponse pour les modèles de fondation](model-parameters.md). {{contentType}}correspond à ce que vous avez spécifié dans la demande.
+ `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` : chaque réponse renvoie un `chunk` dont le texte se trouve dans le champ `bytes`, ainsi que toutes les exceptions qui se produisent. Le suivi de la barrière de protection n’est renvoyé que pour le dernier fragment.

  ```
  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}}"]
      }
    }
  }
  ```

La réponse renvoie les champs suivants si vous activez une barrière de protection.
+ `amazon-bedrock-guardrailAction` : spécifie si la barrière de protection est `INTERVENED` ou non (`NONE`).
+ `amazon-bedrock-trace` : n’apparaît que si vous activez le suivi. Contient une liste des suivis, chacun fournissant des informations sur le contenu bloqué par la barrière de protection. Le suivi comporte les champs suivants :
  + `modelOutput` : objet contenant les sorties du modèle bloqué.
  + `input` : contient les informations suivantes concernant l’évaluation de l’invite par la barrière de protection :
    + `topicPolicy` : contient `topics`, une liste d’évaluations pour chaque stratégie de rubrique qui n’a pas été respectée. Chaque rubrique inclut les champs suivants :
      + `name` : nom de la stratégie de rubrique.
      + `type` : spécifie s’il faut refuser la rubrique.
      + `action` : spécifie que la rubrique a été bloquée. 
    + `contentPolicy` : contient `filters`, une liste d’évaluations pour chaque filtre de contenu enfreint. Chaque filtre inclut les champs suivants :
      + `type` : catégorie du filtre de contenu.
      + `confidence` : niveau de certitude que la sortie peut être classée comme appartenant à la catégorie préjudiciable.
      + `action` : spécifie que le contenu a été bloqué. Ce résultat dépend de la force du filtre défini dans la barrière de protection.
    + `wordPolicy` : contient une collection de mots personnalisés et de mots gérés qui ont été filtrés et une évaluation correspondante de ces mots. Chaque liste contient les champs suivants :
      + `customWords` : liste de mots personnalisés correspondant au filtre.
        + `match` : mot ou phrase correspondant au filtre.
        + `action` : spécifie que le mot a été bloqué.
      + `managedWordLists` : liste de mots gérés correspondant au filtre.
        + `match` : mot ou phrase correspondant au filtre.
        + `type` : spécifie le type de mot géré correspondant au filtre. Par exemple, `PROFANITY` s’il correspond au filtre de blasphème.
        + `action` : spécifie que le mot a été bloqué.
    + `sensitiveInformationPolicy` : contient les objets suivants, qui contiennent des évaluations des données d’identification personnelle (PII) et des filtres regex qui ont été enfreints :
      + `piiEntities` : liste d’évaluations pour chaque filtre de PII enfreint. Chaque filtre contient les champs suivants :
        + `type` : type de PII qui a été trouvé.
        + `match` : mot ou phrase correspondant au filtre.
        + `action` : spécifie si le mot a été `BLOCKED` ou a été remplacé par un identifiant (`ANONYMIZED`).
      + `regexes` : liste d’évaluations pour chaque filtre regex enfreint. Chaque filtre contient les champs suivants :
        + `name` : nom du filtre regex.
        + `regex` : type de PII qui a été trouvé.
        + `match` : mot ou phrase correspondant au filtre.
        + `action` : spécifie si le mot a été `BLOCKED` ou a été remplacé par un identifiant (`ANONYMIZED`).
  + `outputs` : liste de détails sur l’évaluation de la réponse du modèle par la barrière de protection. Chaque élément de la liste est un objet qui correspond au format de l’objet `input`. Pour plus de détails, consultez le champ `input`.

------