View a markdown version of this page

Utilisation du contrôle d’ancrage contextuel pour filtrer les hallucinations dans les réponses - Amazon Bedrock

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.

Utilisation du contrôle d’ancrage contextuel pour filtrer les hallucinations dans les réponses

Les barrières de protection Amazon Bedrock prennent en charge les contrôles d’ancrage contextuel pour détecter et filtrer les hallucinations dans les réponses du modèle lorsqu’une source de référence et une requête utilisateur sont fournies. Les cas d'utilisation pris en charge incluent la synthèse, la paraphrase et la réponse aux questions telles que définies dans la discipline informatique. (Les cas d'utilisation de l'assurance qualité conversationnelle/chatbot ne sont pas pris en charge.)

Les contrôles d’ancrage contextuel vérifient la pertinence de chaque fragment traité. Si un élément est jugé pertinent, l'ensemble de la réponse est considéré comme pertinent car il contient la réponse à la requête de l'utilisateur. Pour l’API de streaming, cela peut entraîner un scénario dans lequel une réponse non pertinente est renvoyée à l’utilisateur et n’est marquée comme non pertinente qu’une fois la réponse complète diffusée.

La mise à la base contextuelle vérifie les paradigmes suivants :

  • Ancrage : vérifie si la réponse du modèle est factuellement précise en fonction de la source et si elle est ancrée sur la source. Toute nouvelle information introduite dans la réponse sera considérée comme non ancrée.

  • Pertinence : vérifie si la réponse du modèle correspond à la requête de l’utilisateur.

Prenons un exemple où la source de référence contient « Londres est la capitale du Royaume-Uni. Tokyo est la capitale du Japon » et la question de l'utilisateur est « Quelle est la capitale du Japon ? ». Une réponse telle que « Londres est la capitale du Japon » sera considérée comme non fondée et factuellement incorrecte, tandis qu'une réponse telle que « Londres est la capitale du Royaume-Uni » sera considérée comme non pertinente, même si elle est correcte et fondée sur la source.

Note

Lorsqu’une demande inclut plusieurs balises grounding_source, la barrière de protection combine et évalue toutes les valeurs grounding_source fournies ensemble, plutôt que de considérer chaque grounding_source séparément. Ce comportement est identique pour la balise query.

Note

La politique d’ancrage contextuel prend actuellement en charge un maximum de 100 000 caractères pour la source d’ancrage, 1 000 caractères pour la requête et 5 000 caractères pour la réponse.

Seuils et scores de confiance

Les contrôle d’ancrage contextuel génèrent des scores de confiance correspondant à l’ancrage et à la pertinence pour chaque réponse du modèle traitée en fonction de la source et de la requête utilisateur fournies. Vous pouvez configurer des seuils pour filtrer les réponses du modèle en fonction des scores générés. Le seuil de filtrage détermine le score de confiance minimum autorisé pour que la réponse du modèle soit considérée comme ancrée et pertinente dans votre application d’IA générative. Par exemple, si votre seuil d’ancrage et votre seuil de pertinence sont chacun fixés à 0,7, toutes les réponses du modèle dont le score d’ancrage ou de pertinence est inférieur à 0,7 seront détectées comme des hallucinations et bloquées dans votre application. À mesure que le seuil de filtrage augmente, la probabilité de bloquer le contenu non ancré et non pertinent augmente, et la probabilité de voir du contenu halluciné dans votre application diminue. Vous pouvez configurer des valeurs de seuils d’ancrage et de pertinence comprises entre 0 et 0,99. Un seuil de 1 n’est pas valide, car cela bloquera tout le contenu.

Les contrôles d’ancrage contextuel nécessitent trois composants pour effectuer la vérification : la source d’ancrage, la requête et le contenu à surveiller (ou la réponse du modèle). Ils sont configurés différemment selon que vous utilisez les API Invoke, Converse ou ApplyGuardrail directement.

  • Source d’ancrage : informations contextuelles nécessaires pour répondre à toute requête d’un utilisateur. Par exemple, « Londres est la capitale du Royaume-Uni. Tokyo est la capitale du Japon ».

  • Requête : question qu’un utilisateur peut poser. Par exemple, « Quelle est la capitale du Japon ? »

  • Contenu à surveiller : texte qui doit être surveillé par rapport à la requête et à la source d’ancrage. Pour les API Invoke et Converse, il s’agit de la réponse du modèle. Par exemple, cela peut être « La capitale du Japon est Tokyo ».

Exemple non ancré

  • Source de base - « Londres est la capitale du Royaume-Uni. Tokyo est la capitale du Japon. »

  • Question - « Quelle est la capitale du Japon ? »

  • Contente de garder : « La capitale du Japon est Londres. »

Dans cet exemple, le contenu à surveiller est pertinent pour la requête, mais n’est pas ancré, car il n’utilise pas correctement la source d’ancrage. Il en résulterait un faible score d’ancrage.

Exemple non pertinent

  • Source de base - « Londres est la capitale du Royaume-Uni. Tokyo est la capitale du Japon. »

  • Question - « Quelle est la capitale du Japon ? »

  • Contente de garder : « La capitale du Royaume-Uni est Londres ».

Dans cet exemple, le contenu à surveiller est ancré, mais n’est pas pertinent. Il utilise les informations de la source d’ancrage, mais ne répond pas à la requête. Il en résulterait un faible score de pertinence.

Exemple non ancré et non pertinent

  • Source de base - « Londres est la capitale du Royaume-Uni. Tokyo est la capitale du Japon. »

  • Question - « Quelle est la capitale du Japon ? »

  • Contente de garder : « Il pleut dehors. »

Dans cet exemple, le contenu à surveiller n’est pas ancré et n’est pas pertinent. Il n’utilise pas les informations de la source d’ancrage ni ne répond à la requête. Il en résulterait un faible score d’ancrage et de pertinence.

Exemples supplémentaires

Imaginez une application bancaire conçue pour répondre aux questions relatives aux frais.

Source :

  • Il n’existe aucun frais associé à l’ouverture d’un compte courant.

  • Les frais mensuels pour le maintien d’un compte courant sont de 10 €.

  • Des frais de transaction de 1 % sont facturés pour les virements internationaux.

  • Aucuns frais ne sont associés aux virements nationaux.

  • Les frais associés à un retard de paiement des factures de cartes de crédit s’élèvent à 23,99 %.

Sur la base de la source ci-dessus, il peut y avoir quatre scénarios en fonction de la requête de l'utilisateur.

Ancré et pertinent

  • Q : Quels sont les frais associés à l’ouverture d’un compte courant ?

  • R : Les frais mensuels pour le maintien d’un compte courant sont de 10 €. Aucuns frais ne sont associés aux virements nationaux. Il y a cependant des frais de transaction de 1 % pour les virements internationaux. Il n’existe aucun frais associé à l’ouverture d’un compte courant.

Un-grounded mais pertinent

  • Q : Quels sont les frais de transaction associés à la carte de crédit ?

  • R : Les frais de transaction associés à la carte de crédit s’élèvent à 23,99 %.

Ancré, mais non pertinent

  • Q : Quels sont les frais d’utilisation d’un compte bancaire courant ?

  • R : Sur la base des informations fournies, frais associés à un retard de paiement des factures de cartes de crédit s’élèvent à 23,99 %.

Un-grounded et non pertinent

  • Q : Quels sont les frais d’utilisation d’un compte bancaire courant ?

  • R : Les frais concernant un compte-titre s’élèvent à 0,5 € par transaction financière.

Ajout de contrôles d’ancrage contextuel via la console

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

  2. Dans le volet de navigation de gauche, choisissez Barrières de protection, puis Créer une barrière de protection.

  3. Pour la page Fournissez les détails de la barrière de protection, procédez comme suit :

    1. Dans la section Détails de la barrière de protection, indiquez le nom et une description facultative de la barrière de protection.

    2. Dans Messagerie pour les invites bloquées, saisissez le message à afficher lorsque votre barrière de protection est appliquée. Cochez la case Appliquer le même message bloqué aux réponses pour utiliser le même message lorsque votre barrière de protection est appliquée à la réponse.

    3. (Facultatif) Pour activer l'inférence entre régions pour votre garde-corps, développez l'Cross-Region inférence, puis sélectionnez Activer l'inférence entre régions pour votre garde-corps. Choisissez un profil de garde-corps qui définit la destination vers Régions AWS laquelle les demandes d'inférence de garde-corps peuvent être acheminées.

    4. (Facultatif) Par défaut, votre barrière de protection est chiffrée avec une Clé gérée par AWS. Pour utiliser votre propre clé KMS gérée par le client, développez Sélection de la clé KMS, puis cochez la case Personnaliser les paramètres de chiffrement (avancé).

      Vous pouvez sélectionner une AWS KMS clé existante ou sélectionner Créer une AWS KMS clé pour en créer une nouvelle.

    5. (Facultatif) Pour ajouter des balises à votre barrière de protection, développez Balises, puis sélectionnez Ajouter une nouvelle balise pour chaque balise que vous définissez.

      Pour de plus amples informations, veuillez consulter Balisage des ressources Amazon Bedrock.

    6. Choisissez Suivant.

  4. Sur la page Ajouter un contrôle d’ancrage contextuel, configurez des seuils pour bloquer les informations non ancrées ou non pertinentes.

    Note

    Pour chaque type de contrôle, vous pouvez déplacer le curseur ou saisir une valeur de seuil comprise entre 0 et 0,99. Sélectionnez un seuil adapté à vos utilisations. Un seuil plus élevé exige que les réponses soient ancrées ou pertinentes avec un degré de confiance élevé pour être autorisées. Les réponses inférieures au seuil sont filtrées.

    1. Dans le champ Ancrage, sélectionnez Activer le contrôle d’ancrage pour vérifier si les réponses du modèle sont ancrées.

    2. Dans le champ Pertinence, sélectionnez Activer le contrôle de pertinence pour vérifier si les réponses du modèle sont pertinentes.

    3. Lorsque vous avez fini de configurer les filtres d’informations sensibles, sélectionnez Suivant ou Passer à la section Vérification et création.

Appel d’un contrôle d’ancrage contextuel avec les API Invoke

Pour marquer la source et la requête de base dans l'entrée, utilisez les balises suivantes qui fonctionnent de la même manière que les balises d'entrée. Ces balises sont amazon-bedrock-guardrails-groundingSource_xyz etamazon-bedrock-guardrails-query_xyz, où se xyz trouve le suffixe de balise. Par exemple :

{ "text": """ <amazon-bedrock-guardrails-groundingSource_xyz>London is the capital of UK. Tokyo is the capital of Japan. </amazon-bedrock-guardrails-groundingSource_xyz> <amazon-bedrock-guardrails-query_xyz>What is the capital of Japan?</amazon-bedrock-guardrails-query_xyz> """, "amazon-bedrock-guardrailConfig": { "tagSuffix": "xyz", }, }

Notez que la réponse du modèle est requise pour effectuer les contrôles d’ancrage contextuel. Ceux-ci ne seront donc effectués qu’en sortie et non à l’invite.

Ces balises peuvent être utilisées en même temps que les guardContent balises. Le contenu contenu groundingSource et les query balises sont exclus des évaluations des politiques autres que celles liées au contexte (filtres de mots, filtres de sujets, filtres de contenu, détection d'informations sensibles).

Le comportement des autres politiques varie selon que vous utilisez ou non des guardContent balises :

  • Sans guardContent balises : les autres politiques utilisent le comportement par défaut : les instructions du système ne sont pas examinées et les messages sont étudiés.

  • Avec des guardContent balises : les autres politiques examinent uniquement le contenu contenu dans les guardContent balises. Le contenu situé en dehors d'une balise (texte non balisé) et le contenu situé à l'intérieur de groundingSource ces query balises sont ignorés.

Pour que le contenu de la source ou de la requête soit également évalué par les politiques restantes, imbriquez la balise contextuelle de base dans une balise : guardContent

<amazon-bedrock-guardrails-guardContent_xyz><amazon-bedrock-guardrails-groundingSource_xyz>London is the capital of UK. Tokyo is the capital of Japan.</amazon-bedrock-guardrails-groundingSource_xyz></amazon-bedrock-guardrails-guardContent_xyz> <amazon-bedrock-guardrails-query_xyz>What is the capital of Japan?</amazon-bedrock-guardrails-query_xyz>

Dans cet exemple, le contenu de la source de base est à la fois utilisé comme source de référence contextuelle et évalué par d'autres politiques, car il est également encapsulé dans une balise. guardContent

Appeler une vérification contextuelle de mise à la terre avec Converse API

Pour marquer la source d’ancrage et la requête pour les API Converse, utilisez le champ des qualificatifs dans chaque bloc de contenu à surveiller. Par exemple :

[ { "role": "user", "content": [ { "guardContent": { "text": { "text": "London is the capital of UK. Tokyo is the capital of Japan", "qualifiers": ["grounding_source"], } } }, { "guardContent": { "text": { "text": "What is the capital of Japan?", "qualifiers": ["query"], } } }, ], } ]

Notez que la réponse du modèle est requise pour effectuer les contrôles d’ancrage contextuel. Ceux-ci ne seront donc effectués qu’en sortie et non à l’invite.

Le comportement des politiques autres que l'ancrage contextuel dépend des qualificatifs assignés à chaque bloc : guardContent

  • ["grounding_source"]— Le contenu est utilisé uniquement comme source de référence contextuelle. Il n'est pas évalué par d'autres politiques.

  • ["query"]— Le contenu est utilisé uniquement comme base contextuelle de la requête utilisateur. Il n'est pas évalué par d'autres politiques.

  • ["guard_content"]— Le contenu est évalué par le biais de la vérification contextuelle (en tant que contenu à protéger) et par toutes les autres politiques.

  • Aucun qualificatif (non qualifié) — Le contenu est évalué par le biais de la vérification contextuelle (en tant que contenu à protéger) et par toutes les autres politiques.

  • ["grounding_source", "guard_content"]— Le contenu joue les deux rôles : il est utilisé comme source de référence contextuelle et est évalué par d'autres politiques.

  • ["query", "guard_content"]— Le contenu joue les deux rôles : utilisé comme requête contextuelle de base et évalué par d'autres politiques.

Si vous souhaitez que le contenu de votre source ou de votre requête soit également évalué par d'autres règles de sauvegarde, ajoutez-les guard_content à la liste des qualificatifs à côté du qualificatif de base contextuel.

Appel d'une vérification contextuelle de mise à la base avec l'API ApplyGuardrail

L’utilisation du contrôle d’ancrage contextuel avec ApplyGuardrail est similaire à son utilisation avec les API Converse. Pour marquer la source d’ancrage et la requête pour ApplyGuardrail, utilisez le champ des qualificatifs dans chaque bloc de contenu. Cependant, comme aucun modèle n’est invoqué avec ApplyGuardrail, vous devez également fournir un bloc de contenu supplémentaire incluant le contenu à surveiller. Ce bloc de contenu peut être éventuellement qualifié avec guard_content, et est équivalent à la réponse du modèle dans les API Invoke* ou Converse*. Par exemple :

[ { "text": { "text": "London is the capital of UK. Tokyo is the capital of Japan", "qualifiers": [ "grounding_source" ] } }, { "text": { "text": "What is the capital of Japan?", "qualifiers": [ "query" ] } }, { "text": { "text": "The capital of Japan is Tokyo." } } ]

Notez que la réponse du modèle est requise pour effectuer les contrôles d’ancrage contextuel. Ceux-ci ne seront donc effectués qu’en sortie et non à l’invite.

Comment les qualificatifs influent sur l'évaluation des politiques

Les blocs de contenu avec grounding_source ou query qualificatifs sont évalués uniquement par le biais de la vérification contextuelle de base. Ces blocs sont exclus de toutes les autres évaluations des politiques de protection (filtres de mots, filtres de sujets, filtres de contenu, détection des informations sensibles et détection rapide des attaques).

Pour qu'un bloc de contenu soit évalué à la fois par la vérification contextuelle de base et par d'autres politiques de protection, utilisez les deux qualificatifs ensemble. Par exemple, spécifiez ["grounding_source", "guard_content"] de marquer un bloc de contenu comme source de base également soumise à toutes les autres politiques configurées.

Pour que des politiques autres que le fondement contextuel évaluent le contenu, au moins un bloc de contenu doit être non qualifié ou explicitement qualifié avec. guard_content Un bloc de contenu n'est pas qualifié lorsqu'il ne comporte aucun qualifiers champ.

Le tableau suivant résume l'impact de chaque combinaison de qualificatifs sur l'évaluation des politiques.

Qualificateur Vérification contextuelle de la mise à la terre Autres politiques relatives aux garde-corps

grounding_source

Évalué (à titre de référence)

Non évalué

query

Évalué (sous forme de requête)

Non évalué

guard_content

Évalué (en tant que réponse)

Évalué

Aucun qualificatif (non qualifié)

Évalué (en tant que réponse)

Évalué

["grounding_source", "guard_content"]

Évalué (à titre de référence)

Évalué

["query", "guard_content"]

Évalué (sous forme de requête)

Évalué