View a markdown version of this page

Solucione problemas y perfeccione su política de razonamiento automatizado - Amazon Bedrock

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Solucione problemas y perfeccione su política de razonamiento automatizado

Cuando no se aprueba una prueba de política de razonamiento automatizado (el resultado real no coincide con el resultado esperado), el problema está en la traducción (el lenguaje natural se asignó a variables o valores incorrectos) o en las reglas (la lógica de la política no coincide con su dominio). En esta página, se proporciona un enfoque sistemático para diagnosticar y solucionar ambos tipos de problemas.

Antes de empezar a solucionar problemas, asegúrese de entender el proceso de validación en dos pasos (traducir y, a continuación, validar) descrito en. Traducción: del lenguaje natural a la lógica formal Esta distinción es la clave para una depuración eficaz.

nota

Vídeo tutorial: Para ver un step-by-step tutorial sobre cómo perfeccionar y solucionar problemas de una política de razonamiento automatizado, consulte el siguiente tutorial:

Demostración del tutorial 3: Ajuste de la política de razonamiento automatizado

Flujo de trabajo de depuración

Cuando una prueba no dé resultado, utilice el resultado real para identificar el tipo de problema y vaya a la sección correspondiente.

Resultado real Causa probable ¿Dónde buscar
TRANSLATION_AMBIGUOUS Los modelos de traducción no estuvieron de acuerdo sobre cómo interpretar la entrada. Por lo general, se debe a variables superpuestas, descripciones vagas o texto de entrada ambiguo. Solucione problemas de traducción
NO_TRANSLATIONS La entrada no se pudo asignar a ninguna variable de política. La entrada no está relacionada con el tema o la política carece de variables para los conceptos mencionados. Solucione problemas de traducción
TOO_COMPLEX La entrada o la política superan los límites de procesamiento. A menudo se debe a una aritmética no lineal o a políticas con demasiadas reglas que interactúan. Limitaciones y consideraciones
IMPOSSIBLE Las premisas se contradicen entre sí o la propia política contiene reglas contradictorias. Corrija los resultados imposibles
VALID,INVALID, o SATISFIABLE (pero no es lo que esperabas) Compruebe primero la traducción en el hallazgo. Si a las variables correctas se les asignan los valores correctos, el problema está en sus reglas. Si la traducción es incorrecta, el problema está en las descripciones de las variables. Traducción incorrecta:Solucione problemas de traducción. Reglas incorrectas:Solucionar problemas con las reglas.
sugerencia

Compruebe siempre primero la traducción. En la mayoría de los casos, la validación matemática (paso 2) es correcta; la cuestión radica en cómo se tradujo el lenguaje natural a la lógica formal (paso 1). Corregir las descripciones de las variables es más rápido y menos riesgoso que cambiar las reglas.

Solucione problemas de traducción

Los problemas de traducción se producen cuando las comprobaciones de razonamiento automatizadas no pueden asignar de forma fiable el lenguaje natural a las variables de la política. El síntoma más visible es un TRANSLATION_AMBIGUOUS resultado, pero los problemas de traducción también pueden provocar VALID errores INVALID o producirse SATISFIABLE cuando se asignan variables o valores incorrectos.

Diagnostica los resultados de TRANSLATION_AMBIGUO

Un TRANSLATION_AMBIGUOUS hallazgo incluye dos campos clave que ayudan a entender el desacuerdo:

  • options— Las interpretaciones lógicas contrapuestas (hasta 2). Cada opción contiene su propia traducción con premisas, pretensiones y confianza. Compare las opciones para ver dónde están en desacuerdo los modelos de traducción.

  • differenceScenarios— Escenarios (hasta 2) que ilustran cómo las diferentes interpretaciones difieren en el significado, con asignaciones variables que destacan el impacto práctico de la ambigüedad.

Examine estos campos para identificar la fuente específica de ambigüedad y, a continuación, aplique la corrección adecuada de la siguiente lista.

Definiciones de variables superpuestas

Cuando varias variables podrían representar razonablemente el mismo concepto, los modelos de traducción discrepan en cuanto a cuál utilizar.

Síntoma: Los options TRANSLATION_AMBIGUOUS hallazgos muestran el mismo concepto asignado a diferentes variables. Por ejemplo, una opción asigna «2 años de servicio» y tenureMonths = 24 la otra lo asigna a. monthsOfService = 24

Solución: combina las variables superpuestas en una sola variable con una descripción completa. Actualice todas las reglas que hacen referencia a la variable eliminada para usar la restante.

Ejemplo:

Antes (superpuestas) Después (fusionado)

tenureMonths: «Cuánto tiempo ha trabajado el empleado en meses».

monthsOfService: «Los meses de servicio del empleado».

tenureMonths: «El número de meses completos en los que el empleado ha estado empleado de forma continua. Cuando los usuarios mencionen años de servicio, conviértalos en meses (por ejemplo, 2 años = 24 meses). Esta variable recoge todas las referencias a la duración del empleo, la antigüedad en el servicio, el tiempo en la empresa o la antigüedad».

(Elimine monthsOfService y actualice las reglas).

Descripciones de variables incompletas

Las descripciones de variables que carecen de detalles sobre la forma en que los usuarios se refieren a los conceptos en el lenguaje cotidiano dificultan la asignación de la entrada a la variable correcta.

Síntoma: options muestran la variable correcta pero con valores diferentes, o la traducción asigna un valor que no coincide con lo que dijo el usuario. Por ejemplo, «2 años» se traduce como tenureMonths = 2 en lugar detenureMonths = 24.

Corrección: se ha actualizado la descripción de la variable para incluir las reglas de conversión de unidades, los sinónimos y las frases alternativas. Consulte Escriba descripciones completas de las variables para obtener una guía detallada.

Ejemplo:

Antes (incompleto) Después (exhaustivo)
isFullTime: «Estado de tiempo completo». isFullTime: «Si el empleado trabaja a tiempo completo (verdadero) o a tiempo parcial (falso). Se establece en verdadero cuando los usuarios mencionan que trabaja «a tiempo completo», que trabaja «a jornada completa» o que trabaja más de 40 horas a la semana. Se establece en falso cuando los usuarios mencionan trabajar «a tiempo parcial», trabajar «horas reducidas» o trabajar menos de 40 horas a la semana».

Formato de valores incoherente

La ambigüedad en la traducción puede producirse cuando el sistema no está seguro de cómo dar formato a valores como números, fechas o porcentajes.

Síntoma: options muestran la misma variable pero con diferentes formatos de valores. Por ejemplo, una opción traduce "5%" a, interestRate = 5 mientras que la otra lo traduce ainterestRate = 0.05.

Corrección: se actualiza la descripción de la variable para especificar el formato esperado e incluir las reglas de conversión. Consulte Especifique las unidades y los formatos en las descripciones de las variables.

Texto de entrada ambiguo

A veces, la entrada en sí misma es genuinamente ambigua: contiene pronombres vagos, referencias poco claras o declaraciones que se pueden interpretar de varias maneras.

Síntoma: options muestran interpretaciones fundamentalmente diferentes del mismo texto. Por ejemplo, «¿Pueden irse?» podría referirse a cualquier tipo de empleado.

Solución: si se trata de una prueba, reescribe la entrada para que sea más específica. En tiempo de ejecución, la aplicación debería pedir aclaraciones al usuario cuando reciba un TRANSLATION_AMBIGUOUS resultado. Para conocer los patrones de integración, consulteIntegre las comprobaciones de razonamiento automatizadas en su aplicación.

Ajuste el umbral de confianza

Si ve TRANSLATION_AMBIGUOUS resultados en entradas casi ambiguas, puede ajustar el umbral de confianza. Si se reduce el umbral, las traducciones con un menor grado de conformidad con el modelo pueden proceder a la validación, lo que reduce TRANSLATION_AMBIGUOUS los resultados pero aumenta el riesgo de traducciones incorrectas.

importante

Ajustar el umbral debería ser el último recurso. En la mayoría de los casos, mejorar las descripciones de las variables o eliminar las variables superpuestas es una mejor solución, ya que aborda la causa raíz. Para obtener más información sobre cómo funcionan los umbrales, consulteUmbrales de confianza.

Solucionar problemas con las reglas

Los problemas con las reglas se producen cuando la traducción es correcta pero la lógica de la política no coincide con tu dominio. Has confirmado que a las variables correctas se les asignan los valores correctos, pero el resultado de la validación sigue siendo incorrecto.

Se convierte en VÁLIDO cuando esperabas que no sea válido

La póliza no tiene una regla que prohíba la reclamación. La respuesta contradice tu conocimiento del dominio, pero la política lo permite.

Diagnóstico: Observe supportingRules el hallazgo. Estas son las reglas que prueban que la afirmación es válida. Compruebe si estas reglas son correctas o si falta alguna regla.

Causas y soluciones comunes:

  • Falta la regla. Tu póliza no tiene una regla que cubra esta condición. Agrega una nueva regla que capture la restricción. Por ejemplo, si la política permite la licencia parental para todos los empleados a tiempo completo, pero debería requerir 12 meses de permanencia en el cargo, añada: (=> (and isFullTime (<= tenureMonths 12)) (not eligibleForParentalLeave))

  • La regla es demasiado permisiva. Una regla existente permite más de lo que debería. Edite la regla para añadir la condición que falta. Por ejemplo, cambie (=> isFullTime eligibleForParentalLeave) a (=> (and isFullTime (> tenureMonths 12)) eligibleForParentalLeave)

  • Falta una variable. La política no tiene una variable que refleje un concepto relevante. Agregue la variable, escriba una descripción clara y cree reglas que hagan referencia a ella.

Deja de ser VÁLIDA cuando esperabas que fuera VÁLIDA

La póliza tiene una regla que prohíbe incorrectamente la reclamación.

Diagnóstico: fíjese contradictingRules en el hallazgo. Estas son las reglas que refutan la afirmación. Compruebe si estas reglas son correctas.

Causas y soluciones comunes:

  • La regla es demasiado restrictiva. Una regla existente bloquea un escenario válido. Edite la regla para relajar la condición o añadir una excepción. Por ejemplo, si la regla exige 24 meses de mandato, pero la política solo debe requerir 12, actualice el límite.

  • La regla estaba mal extraída. Las comprobaciones de razonamiento automatizadas malinterpretaron su documento fuente. Edite la regla para que coincida con la lógica deseada o elimínela y añada una regla correcta manualmente.

Ser SATISFACTORIO cuando esperabas que fuera VÁLIDO

La respuesta es correcta en algunas condiciones, pero no en todas. La política tiene reglas adicionales que la respuesta no aborda.

Diagnóstico: compare el resultado claimsTrueScenario y claimsFalseScenario el resultado. La diferencia entre ellos muestra las condiciones que la respuesta no menciona.

Causas y soluciones comunes:

  • La respuesta está incompleta. El resultado de la prueba no menciona todas las condiciones exigidas por la política. Actualice el resultado de la prueba para incluir las condiciones que faltan o cambie el resultado esperado a SATISFIABLE si las respuestas incompletas son aceptables para su caso de uso.

  • La política tiene reglas innecesarias. La política exige condiciones que no son relevantes para este escenario. Revisa si las reglas adicionales deben aplicarse y elimínalas si no lo son.

Corrija los resultados imposibles

Como IMPOSSIBLE resultado, las comprobaciones de razonamiento automatizadas no pueden evaluar las afirmaciones porque las premisas son contradictorias o porque la propia política contiene normas contradictorias. Hay dos causas distintas.

Contradicciones en la entrada

La entrada de prueba contiene afirmaciones que se contradicen entre sí. Por ejemplo, «soy empleado a tiempo completo y también a tiempo parcial» establece isFullTime = true y isFullTime = false simultáneamente, lo que es lógicamente imposible.

Diagnóstico: inspeccione las translation instalaciones del hallazgo. Busque variables a las que se les asignen valores contradictorios.

Solución: si se trata de una prueba, reescribe la entrada para eliminar la contradicción. En tiempo de ejecución, la aplicación debería gestionar IMPOSSIBLE los resultados pidiéndole al usuario que aclare lo que ha introducido.

Conflictos en la política

La política contiene reglas que se contradicen entre sí, lo que hace imposible que las comprobaciones de razonamiento automatizadas lleguen a una conclusión en el caso de entradas que impliquen reglas contradictorias.

Diagnóstico: si la información es válida (sin premisas contradictorias), el problema está en la política. Compruebe el contradictingRules campo del hallazgo para identificar qué reglas entran en conflicto. Compruebe también el informe de calidad (consulteUtilice el informe de calidad), ya que detecta automáticamente las reglas en conflicto.

Causas y soluciones comunes:

  • Reglas contradictorias. Dos normas llegan a conclusiones opuestas en las mismas condiciones. Por ejemplo, una norma establece que los empleados a tiempo completo tienen derecho a una licencia, mientras que otra dice que los empleados de su primer año no lo son, sin especificar qué ocurre con los empleados a tiempo completo en su primer año. Combine las reglas en una sola regla con condiciones explícitas: (=> (and isFullTime (> tenureMonths 12)) eligibleForLeave)

  • Afirmaciones simples. Una simple afirmación como esta (= eligibleForLeave true) hace imposible que cualquier entrada afirme que el usuario no es elegible. Reescribe las afirmaciones simples como implicaciones. Consulte Utilice las implicaciones (=>) para estructurar las reglas.

  • Dependencias circulares. Reglas que dependen unas de otras de forma que crean bucles lógicos. Simplifique las reglas para romper el ciclo o utilice variables intermedias para hacer explícita la lógica.

Use anotaciones para reparar su política

Las anotaciones son correcciones específicas que se aplican a la política cuando las pruebas no dan resultado. En lugar de editar las reglas y variables manualmente, puedes usar anotaciones para describir el cambio que deseas y dejar que las comprobaciones de razonamiento automatizadas lo apliquen. Las anotaciones están disponibles tanto en la consola como en la API.

Aplica anotaciones en la consola

  1. Abra la prueba fallida y revise los resultados para comprender el problema.

  2. Modifique las condiciones de la prueba (por ejemplo, añada una premisa o cambie el resultado esperado) y vuelva a ejecutar la prueba. Si la prueba modificada arroja el resultado esperado, puede aplicar esta modificación como una anotación.

  3. Seleccione Aplicar anotaciones. Las comprobaciones de razonamiento automatizadas inician un flujo de trabajo de creación para aplicar los cambios a tu política en función de tus comentarios.

  4. En la pantalla Revisar los cambios de política, revisa los cambios propuestos a las reglas, variables y tipos de tu política. A continuación, seleccione Aceptar cambios.

Aplica anotaciones mediante la API

Utilice la StartAutomatedReasoningPolicyBuildWorkflow API con REFINE_POLICY para aplicar las anotaciones mediante programación. Pase la definición completa de la política actual junto con las anotaciones.

Los tipos de anotaciones incluyen:

  • Anotaciones de variables:addVariable,updateVariable, deleteVariable — Añada las variables que faltan, mejore las descripciones o elimine los duplicados.

  • Anotaciones de reglas:addRule,updateRule,deleteRule, addRuleFromNaturalLanguage — Corrige reglas incorrectas, agrega reglas faltantes o elimina reglas conflictivas. Se usa addRuleFromNaturalLanguage para describir una regla en un lenguaje sencillo y dejar que las comprobaciones de razonamiento automatizadas la conviertan en lógica formal.

  • Escriba anotaciones:addType,updateType, deleteType — Administra tipos personalizados (enumeraciones).

  • Anotaciones de comentarios:updateFromRulesFeedback, updateFromScenarioFeedback — Proporcione comentarios en lenguaje natural sobre reglas o escenarios específicos y deje que las comprobaciones de razonamiento automatizadas deduzcan los cambios necesarios.

Ejemplo: añada una variable y una regla que falten mediante anotaciones

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.\" } } ] } } }"

Ejemplos de anotaciones

Ejemplo 1: corregir un requisito de tenencia faltante

Problema: la política aprueba la licencia parental para todos los empleados a tiempo completo, pero el documento fuente exige más de 12 meses de antigüedad.

Antes Después de la anotación

Regla: (=> isFullTime eligibleForParentalLeave)

Sin tenureMonths variable.

Nueva variable: tenureMonths (int) — «El número de meses completos que el empleado ha estado empleado de forma continua».

Regla actualizada: (=> (and isFullTime (> tenureMonths 12)) eligibleForParentalLeave)

Ejemplo 2: Se corrige la superposición de variables que provocan TRANSLATION_AMBIGUO

Problema: dos variables (tenureMonthsymonthsOfService) representan el mismo concepto, lo que provoca traducciones incoherentes.

Anotaciones:

  1. deleteVariable para monthsOfService.

  2. updateVariabletenureMonthscon una descripción mejorada que abarca todas las formas en que los usuarios pueden referirse a la duración del empleo.

  3. updateRulepara cualquier regla a la que se haga referenciamonthsOfService, cambiándola para usartenureMonths.

Ejemplo 3: corregir una afirmación simple que produce resultados IMPOSIBLES

Problema: la regla (= eligibleForParentalLeave true) es una afirmación simple que hace imposible que cualquier entrada afirme que el usuario no es elegible.

Anotaciones:

  1. deleteRulepor la simple afirmación.

  2. addRuleFromNaturalLanguage: «Si un empleado trabaja a tiempo completo y tiene más de 12 meses de antigüedad, tiene derecho a la licencia parental».

Utilice el informe de calidad

El informe de calidad se genera después de cada flujo de trabajo de construcción e identifica los problemas estructurales de su política que pueden provocar fallos en las pruebas. En la consola, los problemas relacionados con los informes de calidad aparecen como advertencias en la página de definiciones. A través de la API, úselo GetAutomatedReasoningPolicyBuildWorkflowResultAssets con--asset-type QUALITY_REPORT.

El informe de calidad señala los siguientes problemas:

Normas contradictorias

Dos o más normas llegan a conclusiones contradictorias para el mismo conjunto de condiciones. Las reglas contradictorias hacen que tu póliza se devuelva IMPOSSIBLE para todas las solicitudes de validación que impliquen reglas en conflicto.

Ejemplo: la regla A dice (=> isFullTime eligibleForLeave) y la regla B dice. (=> (<= tenureMonths 6) (not eligibleForLeave)) Para un empleado a tiempo completo con 3 meses de antigüedad, la Regla A dice que es elegible y la Regla B dice que no es elegible, lo que constituye una contradicción.

Solución: Fusiona las reglas en una sola regla con condiciones explícitas:(=> (and isFullTime (> tenureMonths 6)) eligibleForLeave). O elimine una de las reglas en conflicto si se extrajo incorrectamente.

Variables no utilizadas

Variables a las que no hace referencia ninguna regla. Las variables no utilizadas añaden ruido al proceso de traducción y pueden producir TRANSLATION_AMBIGUOUS resultados cuando compiten con variables activas similares por el mismo concepto.

Corrección: Elimine las variables no utilizadas a menos que planee añadir reglas que hagan referencia a ellas en una iteración futura.

Valores de tipo no utilizados

Valores de un tipo personalizado (enumeración) a los que no hace referencia ninguna regla. Por ejemplo, si la LeaveType enumeración tiene los valores PARENTAL, MEDICAL, BEREAVEMENT y PERSONAL, pero ninguna regla hace referencia a PERSONAL, se marcará como no utilizada.

Solución: añade reglas que hagan referencia al valor no utilizado o elimínalo de la enumeración. Los valores no utilizados pueden provocar problemas de traducción si la entrada menciona el concepto pero no hay ninguna regla que lo aborde.

Conjuntos de reglas disjuntos

Grupos de reglas que no comparten ninguna variable. Los conjuntos de reglas disjuntos no son necesariamente un problema: tu póliza puede cubrir intencionalmente temas independientes (por ejemplo, la elegibilidad para licencias y el reembolso de gastos). Sin embargo, pueden indicar que a las variables les faltan conexiones entre las reglas relacionadas.

Cuándo actuar: si los conjuntos de reglas disjuntos deben estar relacionados (por ejemplo, ambos se refieren a las prestaciones a los empleados pero utilizan nombres de variables diferentes para el mismo concepto), combine las variables superpuestas para conectarlas. Si los conjuntos de reglas son realmente independientes, no es necesario realizar ninguna acción.

Utilice la CLI de Kiro para perfeccionar las políticas

Kiro CLI proporciona una interfaz de chat interactiva para diagnosticar y solucionar problemas de políticas. Puede cargar la definición de su política y su informe de calidad, explicar por qué las pruebas no aprueban, sugerir cambios y aplicar anotaciones, todo ello mediante una conversación en lenguaje natural.

Kiro CLI es particularmente útil para:

  • Comprender los fracasos. Pida a Kiro CLI que cargue una prueba fallida y explique por qué no arroja el resultado esperado. Kiro CLI analizará la definición de la política, los resultados de las pruebas y el informe de calidad para identificar la causa raíz.

  • Resolver problemas con los informes de calidad. Pida a Kiro CLI que resuma el informe de calidad y sugiera soluciones para reglas conflictivas, variables no utilizadas y descripciones de variables superpuestas.

  • Sugerir cambios en las reglas. Describa el comportamiento que espera y pida a Kiro CLI que proponga los cambios necesarios en las variables y reglas. Revise las sugerencias e indique a Kiro CLI que las aplique como anotaciones.

Ejemplo de flujo de trabajo:

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]

Para obtener instrucciones completas sobre la configuración y el uso de la CLI de Kiro con políticas de razonamiento automatizado, consulteUtilice la CLI de Kiro con una política de razonamiento automatizado.