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.
Résoudre les problèmes et affiner votre politique de raisonnement automatique
Lorsqu'un test de stratégie de raisonnement automatisé échoue (le résultat réel ne correspond pas au résultat attendu), le problème réside soit dans la traduction (le langage naturel a été mappé sur les mauvaises variables ou valeurs), soit dans les règles (la logique de la politique ne correspond pas à votre domaine). Cette page propose une approche systématique pour diagnostiquer et résoudre les deux types de problèmes.
Avant de commencer le dépannage, assurez-vous de bien comprendre le processus de validation en deux étapes (traduire, puis valider) décrit dansTraduction : du langage naturel à la logique formelle. Cette distinction est la clé d'un débogage efficace.
Note
Tutoriel vidéo : Pour découvrir step-by-step comment affiner et résoudre les problèmes liés à une politique de raisonnement automatique, regardez le didacticiel suivant :
Didacticiel de démonstration 3 : Affiner la politique de raisonnement automatisé
Flux de travail de débogage
Lorsqu'un test échoue, utilisez le résultat réel pour identifier le type de problème et passez à la section correspondante.
| Résultat réel | Cause probable | Où chercher |
|---|---|---|
TRANSLATION_AMBIGUOUS |
Les modèles de traduction n'étaient pas d'accord sur la façon d'interpréter les données d'entrée. Cela est généralement dû au chevauchement de variables, à des descriptions vagues ou à un texte de saisie ambigu. | Résoudre les problèmes de traduction |
NO_TRANSLATIONS |
L'entrée n'a pu être mappée à aucune variable de politique. Soit l'entrée est hors sujet, soit la politique manque de variables pour les concepts mentionnés. | Résoudre les problèmes de traduction |
TOO_COMPLEX |
La saisie ou la politique dépasse les limites de traitement. Cela est souvent dû à une arithmétique non linéaire ou à des politiques comportant trop de règles interactives. | Limites et considérations |
IMPOSSIBLE |
Les prémisses se contredisent ou la politique elle-même contient des règles contradictoires. | Corriger les résultats impossibles |
VALIDINVALID, ou SATISFIABLE (mais pas ce à quoi vous vous attendiez) |
Vérifiez d'abord la traduction dans le résultat. Si les bonnes variables sont associées aux bonnes valeurs, le problème réside dans vos règles. Si la traduction est incorrecte, le problème réside dans les descriptions de vos variables. | Mauvaise traduction :Résoudre les problèmes de traduction. Règles erronées :Résoudre les problèmes liés aux règles. |
Astuce
Vérifiez toujours d'abord la traduction. Dans la plupart des cas, la validation mathématique (étape 2) est correcte. Le problème réside dans la manière dont le langage naturel a été traduit en logique formelle (étape 1). La correction des descriptions de variables est plus rapide et moins risquée que la modification des règles.
Résoudre les problèmes de traduction
Des problèmes de traduction surviennent lorsque les contrôles de raisonnement automatisés ne peuvent pas associer de manière fiable le langage naturel aux variables de votre politique. Le symptôme le plus visible est le TRANSLATION_AMBIGUOUS résultat, mais les problèmes de traduction peuvent également entraîner des erreurs ou des SATISFIABLE résultats lorsque des variables ou des valeurs incorrectes VALID sont attribuées. INVALID
Diagnostiquer les résultats de TRANSLATION_AMBIGUI
Une TRANSLATION_AMBIGUOUS constatation inclut deux champs clés qui vous aident à comprendre le désaccord :
-
options— Les interprétations logiques concurrentes (jusqu'à 2). Chaque option contient sa propre traduction assortie de prémisses, de revendications et de confiance. Comparez les options pour voir où les modèles de traduction étaient en désaccord. -
differenceScenarios— Des scénarios (jusqu'à 2) qui illustrent les différences de sens entre les différentes interprétations, avec des assignations de variables mettant en évidence l'impact pratique de l'ambiguïté.
Examinez ces champs pour identifier la source spécifique d'ambiguïté, puis appliquez le correctif approprié dans la liste suivante.
Définitions de variables qui se chevauchent
Lorsque plusieurs variables peuvent raisonnablement représenter le même concept, les modèles de traduction ne sont pas d'accord sur celle à utiliser.
Symptôme : Les options TRANSLATION_AMBIGUOUS résultats montrent le même concept attribué à différentes variables. Par exemple, une option attribue « 2 ans de service » tenureMonths = 24 tandis que l'autre l'attribue à. monthsOfService = 24
Correctif : Fusionnez les variables qui se chevauchent en une seule variable avec une description complète. Mettez à jour toutes les règles qui font référence à la variable supprimée pour utiliser la variable restante.
Exemple :
| Avant (chevauchement) | Après (fusionné) |
|---|---|
|
|
(Supprimez |
Descriptions de variables incomplètes
Les descriptions des variables qui manquent de détails sur la façon dont les utilisateurs se réfèrent aux concepts dans le langage courant compliquent la mise en correspondance des données saisies avec la bonne variable.
Symptôme : ils options affichent la bonne variable mais avec des valeurs différentes, ou la traduction attribue une valeur qui ne correspond pas à ce que l'utilisateur a dit. Par exemple, « 2 ans » est traduit par au tenureMonths = 2 lieu detenureMonths = 24.
Correctif : mettez à jour la description de la variable pour inclure les règles de conversion des unités, les synonymes et les formulations alternatives. Voir Rédiger des descriptions complètes des variables pour obtenir des conseils détaillés.
Exemple :
| Avant (incomplet) | Après (complet) |
|---|---|
isFullTime: « Statut à temps plein ». |
isFullTime: « Si l'employé travaille à plein temps (vrai) ou à temps partiel (faux). Ce paramètre est défini sur true lorsque les utilisateurs mentionnent le fait d'être « à plein temps », de travailler « à plein temps » ou de travailler plus de 40 heures par semaine. Ce paramètre est défini sur false lorsque les utilisateurs mentionnent le fait d'être « à temps partiel », de « travailler à des heures réduites » ou de travailler moins de 40 heures par semaine. » |
Formatage des valeurs incohérent
Une ambiguïté de traduction peut survenir lorsque le système ne sait pas comment formater des valeurs telles que des nombres, des dates ou des pourcentages.
Symptôme : ils options affichent la même variable mais avec des formats de valeur différents. Par exemple, une option traduit « 5 % » interestRate = 5 en. L'autre le traduit eninterestRate = 0.05.
Correctif : mettez à jour la description de la variable pour spécifier le format attendu et inclure les règles de conversion. Consultez Spécifier les unités et les formats dans les descriptions des variables.
Texte de saisie ambigu
Parfois, l'entrée elle-même est véritablement ambiguë : elle contient des pronoms vagues, des références peu claires ou des déclarations qui peuvent être interprétées de plusieurs manières.
Symptôme : Ils options présentent des interprétations fondamentalement différentes d'un même texte. Par exemple, « Peuvent-ils prendre congé ? » peut faire référence à n'importe quel type d'employé.
Correctif : s'il s'agit d'un test, réécrivez l'entrée pour qu'elle soit plus précise. Au moment de l'exécution, votre application doit demander des éclaircissements à l'utilisateur lorsqu'elle reçoit un TRANSLATION_AMBIGUOUS résultat. Pour les modèles d'intégration, voirIntégrez des contrôles de raisonnement automatisés dans votre application.
Ajuster le seuil de confiance
Si vous voyez des TRANSLATION_AMBIGUOUS résultats pour des entrées à la limite de l'ambiguïté, vous pouvez ajuster le seuil de confiance. L'abaissement du seuil permet aux traductions comportant moins de modèles d'accord de passer à la validation, ce qui réduit les TRANSLATION_AMBIGUOUS résultats mais augmente le risque de traductions incorrectes.
Important
L'ajustement du seuil ne doit être qu'un dernier recours. Dans la plupart des cas, il est préférable d'améliorer les descriptions des variables ou de supprimer les variables qui se chevauchent, car cela s'attaque à la cause première. Pour plus d'informations sur le fonctionnement des seuils, consultezSeuils de confiance.
Résoudre les problèmes liés aux règles
Des problèmes de règles se produisent lorsque la traduction est correcte mais que la logique de la politique ne correspond pas à votre domaine. Vous avez confirmé que les bonnes valeurs sont attribuées aux bonnes variables, mais le résultat de la validation est toujours erroné.
Devenir valide alors que vous vous attendiez à INVALID
La politique ne contient aucune règle interdisant la réclamation. La réponse contredit votre connaissance du domaine, mais la politique l'autorise.
Diagnostic : Regardez supportingRules le résultat. Ce sont les règles qui prouvent que la réclamation est valide. Vérifiez si ces règles sont correctes ou si une règle est manquante.
Causes courantes et solutions :
-
Règle manquante. Votre police ne contient aucune règle qui couvre cette condition. Ajoutez une nouvelle règle qui capture la contrainte. Par exemple, si la politique autorise le congé parental pour tous les employés à temps plein, mais qu'elle devrait exiger 12 mois d'ancienneté, ajoutez :
(=> (and isFullTime (<= tenureMonths 12)) (not eligibleForParentalLeave)) -
La règle est trop permissive. Une règle existante autorise plus qu'elle ne le devrait. Modifiez la règle pour ajouter la condition manquante. Par exemple, modifiez
(=> isFullTime eligibleForParentalLeave)(=> (and isFullTime (> tenureMonths 12)) eligibleForParentalLeave) -
Variable manquante. La politique ne comporte pas de variable pour capturer un concept pertinent. Ajoutez la variable, rédigez une description claire et créez des règles qui y font référence.
Devenir INVALIDE quand vous vous attendiez à VALID
La politique comporte une règle qui interdit à tort la réclamation.
Diagnostic : Regardez contradictingRules le résultat. Ce sont les règles qui réfutent la réclamation. Vérifiez si ces règles sont correctes.
Causes courantes et solutions :
-
La règle est trop restrictive. Une règle existante bloque un scénario valide. Modifiez la règle pour assouplir la condition ou ajoutez une exception. Par exemple, si la règle exige 24 mois de mandat alors que la politique ne devrait en exiger que 12, mettez à jour le seuil.
-
La règle a été mal extraite. Les contrôles de raisonnement automatisés ont mal interprété votre document source. Modifiez la règle pour qu'elle corresponde à la logique prévue, ou supprimez-la et ajoutez une règle correcte manuellement.
Devenir SATISFIABLE quand vous vous y attendiez VALIDE
La réponse est correcte dans certaines conditions, mais pas dans toutes. La politique comporte des règles supplémentaires que la réponse ne prend pas en compte.
Diagnostic : comparez le résultat claimsTrueScenario et claimsFalseScenario le résultat. La différence entre eux montre les conditions que la réponse ne mentionne pas.
Causes courantes et solutions :
-
La réponse est incomplète. Le résultat du test ne mentionne pas toutes les conditions requises par la politique. Mettez à jour le résultat du test pour inclure les conditions manquantes, ou modifiez le résultat attendu en indiquant
SATISFIABLEsi les réponses incomplètes sont acceptables pour votre cas d'utilisation. -
La politique comporte des règles inutiles. La politique exige des conditions qui ne sont pas pertinentes pour ce scénario. Vérifiez si les règles supplémentaires doivent s'appliquer et supprimez-les si ce n'est pas le cas.
Corriger les résultats impossibles
Cela signifie IMPOSSIBLE que les contrôles de raisonnement automatisés ne peuvent pas évaluer les réclamations parce que les prémisses sont contradictoires ou que la politique elle-même contient des règles contradictoires. Il existe deux causes distinctes.
Contradictions dans la saisie
L'entrée du test contient des déclarations qui se contredisent. Par exemple, « je suis un employé à temps plein et aussi à temps partiel » isFullTime = true et isFullTime = false simultanément, ce qui est logiquement impossible.
Diagnostic : Inspectez les translation locaux dans la découverte. Recherchez les variables auxquelles des valeurs contradictoires sont attribuées.
Correctif : s'il s'agit d'un test, réécrivez l'entrée pour supprimer la contradiction. Au moment de l'exécution, votre application doit gérer IMPOSSIBLE les résultats en demandant à l'utilisateur de clarifier sa saisie.
Conflits dans la politique
La politique contient des règles qui se contredisent, ce qui empêche les contrôles de raisonnement automatisés de parvenir à une conclusion pour les entrées impliquant des règles contradictoires.
Diagnostic : Si l'entrée est valide (aucune prémisse contradictoire), le problème réside dans la politique. Vérifiez le contradictingRules champ dans le résultat pour identifier les règles en conflit. Consultez également le rapport de qualité (voirUtiliser le rapport de qualité) : il signale automatiquement les règles contradictoires.
Causes courantes et solutions :
-
Des règles contradictoires. Deux règles aboutissent à des conclusions opposées pour les mêmes conditions. Par exemple, une règle stipule que les employés à temps plein sont éligibles à un congé, tandis qu'une autre indique que les employés ne le sont pas au cours de leur première année, sans préciser ce qui arrive aux employés à temps plein au cours de leur première année. Fusionnez les règles en une seule règle assortie de conditions explicites :
(=> (and isFullTime (> tenureMonths 12)) eligibleForLeave) -
De simples assertions. Une simple assertion comme celle-ci
(= eligibleForLeave true)empêche toute saisie de prétendre que l'utilisateur n'est pas éligible. Réécrivez de simples assertions sous forme d'implications. Consultez Utiliser les implications (=>) pour structurer les règles. -
Dépendances circulaires. Des règles qui dépendent les unes des autres de manière à créer des boucles logiques. Simplifiez les règles pour rompre le cycle ou utilisez des variables intermédiaires pour rendre la logique explicite.
Utilisez des annotations pour réparer votre police
Les annotations sont des corrections ciblées que vous appliquez à votre politique en cas d'échec des tests. Au lieu de modifier manuellement les règles et les variables, vous pouvez utiliser des annotations pour décrire le changement souhaité et laisser les contrôles de raisonnement automatique l'appliquer. Les annotations sont disponibles via la console et l'API.
Appliquer des annotations dans la console
-
Ouvrez le test qui a échoué et examinez les résultats pour comprendre le problème.
-
Modifiez les conditions du test (par exemple, ajoutez une prémisse ou modifiez le résultat attendu) et relancez le test. Si le test modifié renvoie le résultat attendu, vous pouvez appliquer cette modification sous forme d'annotation.
-
Choisissez Appliquer les annotations. Automated Reasoning Checks lance un flux de travail de création pour appliquer les modifications à votre politique en fonction de vos commentaires.
-
Sur l'écran Réviser les modifications de politique, passez en revue les modifications proposées aux règles, aux variables et aux types de votre politique. Sélectionnez ensuite Accepter les modifications.
Appliquer des annotations à l'aide de l'API
Utilisez l'StartAutomatedReasoningPolicyBuildWorkflowAPI avec REFINE_POLICY pour appliquer des annotations par programmation. Transmettez la définition complète de la politique actuelle avec les annotations.
Les types d'annotations incluent :
-
Annotations de variables :
addVariable,updateVariable,deleteVariable— Ajoutez des variables manquantes, améliorez les descriptions ou supprimez les doublons. -
Annotations de règles :
addRule,updateRule,deleteRule,addRuleFromNaturalLanguage— Corrigez des règles incorrectes, ajoutez des règles manquantes ou supprimez des règles contradictoires.addRuleFromNaturalLanguageÀ utiliser pour décrire une règle en langage clair et laisser les contrôles de raisonnement automatisés la convertir en logique formelle. -
Annotations de type :
addType,updateType,deleteType— Gérez les types personnalisés (enums). -
Annotations de commentaires :
updateFromRulesFeedback,updateFromScenarioFeedback— Fournissez des commentaires en langage naturel sur des règles ou des scénarios spécifiques et laissez les contrôles de raisonnement automatisés déduire les modifications nécessaires.
Exemple : ajout d'une variable et d'une règle manquantes à l'aide d'annotations
aws bedrock start-automated-reasoning-policy-build-workflow \ --policy-arn "arn:aws:bedrock:us-east-1:111122223333:automated-reasoning-policy/lnq5hhz70wgk" \ --build-workflow-type REFINE_POLICY \ --source-content "{ \"policyDefinition\":EXISTING_POLICY_DEFINITION_JSON, \"workflowContent\": { \"policyRepairAssets\": { \"annotations\": [ { \"addVariable\": { \"name\": \"tenureMonths\", \"type\": \"int\", \"description\": \"The number of complete months the employee has been continuously employed. When users mention years of service, convert to months (for example, 2 years = 24 months).\" } }, { \"addRuleFromNaturalLanguage\": { \"naturalLanguage\": \"If an employee is full-time and has more than 12 months of tenure, then they are eligible for parental leave.\" } } ] } } }"
Exemples d'annotations
Exemple 1 : Corriger une exigence de titularisation manquante
Problème : La politique approuve le congé parental pour tous les employés à temps plein, mais le document source exige une ancienneté de plus de 12 mois.
| Avant | Après annotation |
|---|---|
|
Règle : Aucune |
Nouvelle variable : Règle mise à jour : |
Exemple 2 : Corriger les variables qui se chevauchent à l'origine de TRANSLATION_AMBIGUA
Problème : deux variables (tenureMonthsetmonthsOfService) représentent le même concept, ce qui entraîne des traductions incohérentes.
Annotations :
-
deleteVariablepourmonthsOfService. -
updateVariablecartenureMonthsavec une description améliorée qui couvre toutes les manières dont les utilisateurs peuvent faire référence à la durée de l'emploi. -
updateRulepour toutes les règles référencéesmonthsOfService, en les modifiant pour les utilisertenureMonths.
Exemple 3 : Corriger une simple assertion entraînant des résultats IMPOSSIBLES
Problème : La règle (= eligibleForParentalLeave true) est une simple assertion qui empêche toute saisie de prétendre que l'utilisateur n'est pas éligible.
Annotations :
-
deleteRulepour la simple assertion. -
addRuleFromNaturalLanguage: « Si un employé travaille à plein temps et a plus de 12 mois d'ancienneté, il a droit à un congé parental. »
Utiliser le rapport de qualité
Le rapport de qualité est généré après chaque flux de production et identifie les problèmes structurels de votre politique susceptibles d'entraîner des échecs de test. Dans la console, les problèmes liés aux rapports de qualité apparaissent sous forme d'avertissements sur la page Définitions. Via l'API, utilisez GetAutomatedReasoningPolicyBuildWorkflowResultAssets avec--asset-type QUALITY_REPORT.
Le rapport de qualité met en évidence les problèmes suivants :
Règles contradictoires
Deux règles ou plus aboutissent à des conclusions contradictoires pour le même ensemble de conditions. En cas de conflit de règles, votre politique est renvoyée IMPOSSIBLE pour toutes les demandes de validation impliquant des règles contradictoires.
Exemple : la règle A dit (=> isFullTime eligibleForLeave) et la règle B dit(=> (<= tenureMonths 6) (not eligibleForLeave)). Pour un employé à temps plein titulaire de 3 mois, la règle A indique qu'il est éligible et que la règle B indique qu'il n'est pas éligible, ce qui est contradictoire.
Correctif : Fusionnez les règles en une seule règle avec des conditions explicites :(=> (and isFullTime (> tenureMonths 6)) eligibleForLeave). Ou supprimez l'une des règles contradictoires si elle a été mal extraite.
Variables non utilisées
Variables qui ne sont référencées par aucune règle. Les variables non utilisées compliquent le processus de traduction et peuvent entraîner des TRANSLATION_AMBIGUOUS résultats lorsqu'elles entrent en concurrence avec des variables actives similaires pour le même concept.
Correctif : supprimez les variables inutilisées, sauf si vous prévoyez d'ajouter des règles qui y font référence lors d'une future itération.
Valeurs de type non utilisées
Valeurs d'un type personnalisé (enum) qui ne sont référencées par aucune règle. Par exemple, si votre LeaveType énumération contient les valeurs PARENTAL, MEDICAL, BEREAVEMENT et PERSONAL, mais qu'aucune règle ne fait référence à PERSONAL, elle est signalée comme non utilisée.
Correctif : ajoutez des règles qui font référence à la valeur inutilisée ou supprimez-la de l'énumération. Les valeurs non utilisées peuvent entraîner des problèmes de traduction si l'entrée mentionne le concept mais qu'aucune règle ne le gère.
Ensembles de règles disjoints
Groupes de règles qui ne partagent aucune variable. Les ensembles de règles disjoints ne constituent pas nécessairement un problème : votre police peut couvrir intentionnellement des sujets indépendants (par exemple, l'éligibilité aux congés et le remboursement des dépenses). Cependant, ils peuvent indiquer que les variables ne sont pas connectées entre les règles associées.
Quand agir : si les ensembles de règles disjoints doivent être liés (par exemple, ils traitent tous deux des avantages sociaux mais utilisent des noms de variables différents pour le même concept), fusionnez les variables qui se chevauchent pour les relier. Si les ensembles de règles sont réellement indépendants, aucune action n'est nécessaire.
Utiliser la CLI Kiro pour affiner les politiques
Kiro CLI fournit une interface de chat interactive pour diagnostiquer et résoudre les problèmes de politique. Il peut charger la définition de votre politique et votre rapport de qualité, expliquer pourquoi les tests échouent, suggérer des modifications et appliquer des annotations, le tout par le biais d'une conversation en langage naturel.
La CLI Kiro est particulièrement utile pour :
-
Comprendre les défaillances. Demandez à Kiro CLI de charger un test défaillant et d'expliquer pourquoi il ne renvoie pas le résultat attendu. Kiro CLI analysera la définition de la politique, les résultats des tests et le rapport de qualité pour identifier la cause première.
-
Résolution des problèmes liés aux rapports de qualité. Demandez à Kiro CLI de résumer le rapport de qualité et de suggérer des solutions pour les règles conflictuelles, les variables inutilisées et les descriptions de variables qui se chevauchent.
-
Suggérer des modifications de règles. Décrivez le comportement que vous attendez et demandez à la CLI Kiro de proposer les modifications de variables et de règles nécessaires. Passez en revue les suggestions et demandez à Kiro CLI de les appliquer sous forme d'annotations.
Exemple de flux de travail :
You: The test with ID test-12345 is not returning the expected result. Can you load the test definition and findings, look at the policy definition, and explain why this test is failing? Kiro: [analyzes the test and policy] The test expects VALID but gets INVALID because rule R3 requires 24 months of tenure, while the test input specifies 18 months. The source document says 12 months. Rule R3 appears to have been misextracted. You: Can you suggest changes to fix this? Kiro: I suggest updating rule R3 to change the tenure threshold from 24 to 12 months. Here's the updated rule: ... You: Looks good. Can you use the annotation APIs to submit these changes? Kiro: [applies annotations via the API]
Pour obtenir des instructions complètes sur la configuration et l'utilisation de la CLI Kiro avec des politiques de raisonnement automatisé, voirUtiliser la CLI Kiro avec une politique de raisonnement automatisé.