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 n’importe quel fragment 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 ancré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 ancré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 Invoke APIs ou ApplyGuardrail directement. Converse APIs

  • 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 Invoke et Converse APIs, 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 d’ancrage : « Londres est la capitale du Royaume-Uni. Tokyo est la capitale du Japon. »

  • Requête : « Quelle est la capitale du Japon ? »

  • Contenu à surveiller : « 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 d’ancrage : « Londres est la capitale du Royaume-Uni. Tokyo est la capitale du Japon. »

  • Requête : « Quelle est la capitale du Japon ? »

  • Contenu à surveiller : « 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 d’ancrage : « Londres est la capitale du Royaume-Uni. Tokyo est la capitale du Japon. »

  • Requête : « Quelle est la capitale du Japon ? »

  • Contenu à surveiller : « 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.

Non ancré, 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 %.

Non ancré 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 à l'adresse https://console.aws.amazon.com/bedrock.

  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) Afin d’activer l’inférence interrégionale pour votre barrière de protection, développez Inférence interrégionale, puis sélectionnez Activer l’inférence interrégionale pour votre barrière de protection. 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'une vérification contextuelle de mise à la base avec Invoke APIs

Pour marquer la source d’encrage et la requête dans l’entrée, nous fournissons deux balises qui fonctionnent de la même manière que les balises d’entrée. Ces balises sont amazon-bedrock-guardrails-groundingSource_xyz et amazon-bedrock-guardrails-query_xyz en supposant que le suffixe de balise est xyz. 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 conjointement avec les balises guardContent. Si aucune balise guardContent n’est utilisée, la barrière de protection appliquera par défaut toutes les politiques configurées sur l’ensemble de l’entrée, y compris la source d’ancrage et la requête. Si les balises guardContent sont utilisées, la politique de contrôle d’ancrage contextuel étudie uniquement la source d’ancrage, la requête et la réponse, tandis que les politiques restantes étudient le contenu au sein des balises guardContent.

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

Pour marquer la source de base et la rechercher Converse APIs, utilisez le champ des qualificatifs dans chaque bloc de contenu de garde. 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.

Si aucun des blocs de contenu n’est marqué avec le qualificatif guard_content, la politique de contrôle d’ancrage contextuel étudie uniquement la source d’ancrage, la requête et la réponse. Les autres politiques suivent le comportement d’enquête par défaut : l’invite système n’est pas soumise à une enquête, tandis que les messages le sont. Cependant, si un bloc de contenu est marqué du qualificatif guard_content, la politique de contrôle d’ancrage contextuel étudie uniquement la source d’ancrage, la requête et la réponse, tandis que les politiques restantes étudient le contenu marqué des balises guardContent.

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

L'utilisation de la vérification contextuelle de la mise à la terre avec ApplyGuardrail est similaire à son utilisation avec le. Converse APIs 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é par guard_content et est équivalent à la réponse du modèle dans Invoke* ou Converse*. APIs 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.

Si aucun des blocs de contenu n’est marqué avec le qualificatif guard_content, la politique de contrôle d’ancrage contextuel étudie uniquement la source d’ancrage, la requête et la réponse. Les autres politiques suivent le comportement d’enquête par défaut : l’invite système n’est pas soumise à une enquête, tandis que les messages le sont. Cependant, si un bloc de contenu est marqué du qualificatif guard_content, la politique de contrôle d’ancrage contextuel étudie uniquement la source d’ancrage, la requête et la réponse, tandis que les politiques restantes étudient le contenu marqué des balises guardContent.