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.
Intégration d’une barrière de protection à l’API Converse
Vous pouvez utiliser une barrière de protection pour protéger les applications conversationnelles que vous créez avec l’API Converse. Par exemple, si vous créez une application de chat avec l’API Converse, vous pouvez utiliser une barrière de protection pour bloquer le contenu inapproprié saisi par l’utilisateur et celui généré par le modèle. Pour plus d’informations sur l’API Converse, consultez Mener une conversation avec les opérations d’API Converse.
Rubriques
Appel de l’API Converse avec des barrières de protection
Pour utiliser une barrière de protection, vous devez inclure ses informations de configuration dans les appels aux opérations Converse ou ConverseStream (pour les réponses en streaming). Vous pouvez éventuellement sélectionner un contenu spécifique dans le message que vous souhaitez faire évaluer par la barrière de protection. Pour plus d’informations sur les modèles que vous pouvez utiliser avec les barrières de protection et l’API Converse, consultez Modèles et fonctionnalités des modèles pris en charge.
Rubriques
Configuration d’une barrière de protection fonctionnant avec l’API Converse
Vous spécifiez les informations de configuration de la barrière de protection dans le paramètre d’entrée guardrailConfig. La configuration inclut l’ID et la version de la barrière de protection que vous souhaitez utiliser. Vous pouvez également activer le traçage de la barrière de protection, qui fournit des informations sur le contenu qu’elle a bloqué.
Avec l’opération Converse, guardrailConfig est un objet GuardrailConfiguration, comme illustré dans l’exemple suivant.
{ "guardrailIdentifier": "Guardrail ID", "guardrailVersion": "Guardrail version", "trace": "enabled" }
Si vous utilisez ConverseStream, vous transmettez un objet GuardrailStreamConfiguration. Vous pouvez éventuellement utiliser le champ streamProcessingMode pour spécifier que vous souhaitez que le modèle termine l’évaluation par la barrière de protection avant de renvoyer les fragments de réponse en streaming. Vous pouvez également faire en sorte que le modèle réponde de manière asynchrone pendant que la barrière de protection poursuit son évaluation en arrière-plan. Pour plus d’informations, consultez Configuration du comportement des réponses en streaming pour filtrer le contenu.
Évaluation du contenu spécifique d’un message uniquement
Lorsque vous transmettez un message à un modèle, votre barrière de protection en évalue le contenu. Vous pouvez également évaluer des parties spécifiques d’un message en utilisant le champ guardContent (GuardrailConverseContentBlock).
Astuce
L’utilisation du champ guardContent est similaire à celle de balises d’entrée avec InvokeModel et InvokeModelWithResponseStream. Pour plus d’informations, consultez Application de balises aux entrées utilisateur pour filtrer le contenu.
Par exemple, la barrière de protection suivante évalue uniquement le contenu du champ guardContent et non le reste du message. Ceci est utile pour que la barrière de protection évalue uniquement le message le plus récent d’une conversation, comme illustré dans l’exemple suivant.
[ { "role": "user", "content": [ { "text": "Create a playlist of 2 pop songs." } ] }, { "role": "assistant", "content": [ { "text": "Sure! Here are two pop songs:\n1. \"Bad Habits\" by Ed Sheeran\n2. \"All Of The Lights\" by Kanye West\n\nWould you like to add any more songs to this playlist?" } ] }, { "role": "user", "content": [ { "guardContent": { "text": { "text": "Create a playlist of 2 heavy metal songs." } } } ] } ]
Un autre cas d’utilisation de guardContent consiste à fournir un contexte supplémentaire pour un message sans que votre barrière de protection ne l’évalue. Dans l’exemple suivant, la barrière de protection évalue "Create a playlist of heavy metal songs" et ignore uniquement "Only answer with a list of songs".
messages = [ { "role": "user", "content": [ { "text": "Only answer with a list of songs." }, { "guardContent": { "text": { "text": "Create a playlist of heavy metal songs." } } } ] } ]
Si le contenu ne figure pas dans un bloc guardContent, cela ne signifie pas nécessairement qu’il ne sera pas évalué. Ce comportement dépend des stratégies de filtrage utilisées par la barrière de protection.
L’exemple suivant montre deux blocs guardContent avec des contrôles d’ancrage contextuel (basés sur les champs qualifiers). Les contrôles d’ancrage contextuel dans la barrière de protection évaluent uniquement le contenu de ces blocs. Toutefois, si la barrière de protection comporte également un filtre de mots qui bloque le mot « background », le texte « Some additional background information. » sera toujours évalué, même s’il ne figure pas dans un bloc guardContent.
[{ "role": "user", "content": [{ "guardContent": { "text": { "text": "London is the capital of UK. Tokyo is the capital of Japan.", "qualifiers": ["grounding_source"] } } }, { "text": "Some additional background information." }, { "guardContent": { "text": { "text": "What is the capital of Japan?", "qualifiers": ["query"] } } } ] }]
Protection d’une invite système envoyée à l’API Converse
Vous pouvez utiliser des barrières de protection avec les invites système que vous envoyez à l’API Converse. Pour protéger une invite système, spécifiez guardContent (SystemContentBlock) dans l’invite système que vous transmettez à l’API, comme illustré dans l’exemple suivant.
[ { "guardContent": { "text": { "text": "Only respond with Welsh heavy metal songs." } } } ]
Si vous ne renseignez pas le champ guardContent, la barrière de protection n’évalue pas le message d’invite système.
Message et comportement de la barrière de protection d’une invite système
La façon dont la barrière de protection évalue comment le champ guardContent se comporte diffère entre les invites système et les messages que vous transmettez dans le message.
| L’invite système comporte un bloc de barrière de protection | L’invite système ne comporte pas de bloc de barrière de protection | |
|---|---|---|
|
Les messages ont un bloc de barrière de protection |
Système : la barrière de protection examine le contenu du bloc de barrière de protection Messages : la barrière de protection examine le contenu du bloc de barrière de protection |
Système : la barrière de protection n’examine rien Messages : la barrière de protection examine le contenu du bloc de barrière de protection |
|
Les messages n’ont pas de bloc de barrière de protection |
Système : la barrière de protection examine le contenu du bloc de barrière de protection Messages : la barrière de protection examine tout |
Système : la barrière de protection n’examine rien Messages : la barrière de protection examine tout |
Traitement de la réponse lors de l’utilisation de l’API Converse
Lorsque vous appelez l’opération Converse, la barrière de protection évalue le message que vous envoyez. Si la barrière de protection détecte du contenu bloqué, voici ce qui se passe.
Le champ
stopReasondans la réponse est défini surguardrail_intervened.-
Si vous avez activé le traçage, la trace est disponible dans le champ
trace(ConverseTrace). AvecConverseStream, la trace se trouve dans les métadonnées (ConverseStreamMetadataEvent) renvoyées par l’opération. -
Le texte du contenu bloqué que vous avez configuré dans la barrière de protection est renvoyé dans le champ
output(ConverseOutput). AvecConverseStream, le texte de contenu bloqué se trouve dans le message diffusé.
La réponse partielle suivante montre le texte du contenu bloqué et la trace de l’évaluation de la barrière de protection. La barrière de protection a bloqué le terme « heavy metal » dans le message.
{ "output": { "message": { "role": "assistant", "content": [ { "text": "Sorry, I can't answer questions about heavy metal music." } ] } }, "stopReason": "guardrail_intervened", "usage": { "inputTokens": 0, "outputTokens": 0, "totalTokens": 0 }, "metrics": { "latencyMs": 721 }, "trace": { "guardrail": { "inputAssessment": { "3o06191495ze": { "topicPolicy": { "topics": [ { "name": "Heavy metal", "type": "DENY", "action": "BLOCKED" } ] }, "invocationMetrics": { "guardrailProcessingLatency": 240, "usage": { "topicPolicyUnits": 1, "contentPolicyUnits": 0, "wordPolicyUnits": 0, "sensitiveInformationPolicyUnits": 0, "sensitiveInformationPolicyFreeUnits": 0, "contextualGroundingPolicyUnits": 0 }, "guardrailCoverage": { "textCharacters": { "guarded": 39, "total": 72 } } } } } } } }
Exemple de code pour l’utilisation de l’API Converse avec des barrières de protection
Cet exemple montre comment protéger une conversation à l’aide des opérations Converse et ConverseStream. L’exemple illustre comment empêcher un modèle de créer une liste de lecture contenant des chansons du genre heavy metal.
Pour protéger une conversation
-
Créez une barrière de protection en suivant les instructions fournies dans Création d’une barrière de protection .
-
Nom : entrez Heavy metal.
-
Définition du sujet : entrez Avoid mentioning songs that are from the heavy metal genre of music.
-
Ajout d’exemples d’expressions : entrez Create a playlist of heavy metal songs.
À l’étape 9, entrez le texte suivant :
-
Message affiché pour les invites bloquées : entrez Sorry, I can’t answer questions about heavy metal music.
-
Message affiché pour les réponses bloquées : entrez Sorry, the model generated an answer that mentioned heavy metal music.
Vous pouvez configurer d’autres options de barrière de protection, mais cela n’est pas requis dans cet exemple.
-
-
Créez une version de la barrière de protection en suivant les instructions fournies dans Création d’une version de barrière de protection.
-
Dans les exemples de code suivants (Converse et ConverseStream), définissez les variables suivantes :
guardrail_id: ID de la barrière de protection que vous avez créée à l’étape 1.guardrail_version: version de la barrière de protection que vous avez créée à l’étape 2.text: utilisezCreate a playlist of heavy metal songs.
-
Exécutez les exemples de code. La sortie doit afficher l’évaluation de la barrière de protection et le message de sortie
Text: Sorry, I can't answer questions about heavy metal music.L’évaluation des entrées réalisée par la barrière de protection montre que le modèle a détecté le terme heavy metal dans le message d’entrée. -
(Facultatif) Vérifiez que la barrière de protection bloque le texte inapproprié généré par le modèle en remplaçant la valeur de
textpar List all genres of rock music. Réexécutez les exemples. Vous devriez voir une évaluation de la sortie dans la réponse.