Utiliser la CLI Kiro avec une politique de raisonnement automatisé - 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.

Utiliser la CLI Kiro avec une politique de raisonnement automatisé

Vous pouvez utiliser la CLI Kiro pour poser des questions sur vos politiques de raisonnement automatisé, comprendre le comportement des différentes règles et demander des modifications afin de remédier aux échecs des tests ou aux ambiguïtés de la politique elle-même.

Conditions préalables

Pour utiliser la CLI Kiro avec vos politiques de raisonnement automatisé, vous devez d'abord suivre les étapes suivantes :

  • Installez la dernière version de Kiro CLI.

  • Installez la dernière version de AWS CLI.

  • Créez une politique de raisonnement automatisé à l'aide d'un document via la console ou APIs. Pour démarrer rapidement, utilisez l'exemple de politique Homework intégré à la console. Pour de plus amples informations, veuillez consulter Création de votre politique de raisonnement automatisé.

  • Copiez le contenu de l'invite contextuelle fournie Invite contextuelle de l'API de politique de raisonnement automatique et enregistrez-le dans un fichier Markdown dans le dossier de votre projet. Cette invite permet à la CLI Kiro d'utiliser le plan de contrôle de la politique de raisonnement automatisé et de tester correctement l'API.

Note

Pour les exemples rapides ci-dessous, nous utilisons l'exemple de politique sur les devoirs. Les instructions devraient fonctionner aussi bien avec les autres politiques, il suffit de changer le sujet surligné.

Note

Les politiques de raisonnement automatisé peuvent être complexes et nécessitent que la CLI Kiro raisonne à l'aide de structures logiques complexes. Pour de meilleures performances, nous vous recommandons d'utiliser un format plus grand, LLMs tel qu'Anthropic Sonnet 4.5. Pour changer de modèle dans la CLI Kiro, utilisez la /model commande.

Prise en main

Vous avez besoin de l'ARN de la politique de raisonnement automatisé que vous avez créée pour démarrer le flux de travail avec la CLI Kiro.

  1. À l'aide de la console, ouvrez votre politique de raisonnement automatisé et, depuis la page Vue d'ensemble de la politique, ouvrez l'onglet Détails de la politique.

  2. Dans l'onglet Détails de la politique, recherchez l'ARN de la politique et copiez-le dans votre presse-papiers.

  3. À l'aide du terminal, lancez une session Kiro CLI avec la commande suivante :

    kiro-cli
  4. Dès votre première invite, demandez à Kiro de rechercher le fichier Markdown d'instructions que vous avez copié à partir de cette page dans le cadre des prérequis. Par exemple :

    We will be using Automated Reasoning checks control plane APIs. I have saved an instructions file called your_file_name.md in this folder. Read this file as it will give you the context you need to work with the APIs.
  5. Une fois que Kiro CLI a chargé et compris les « contrôles de raisonnement automatisés » APIs, demandez-lui de charger la dernière version de votre politique et de commencer à l'explorer. Utilisez une variante de l'invite suivante avec l'ARN que vous avez copié :

    Load the policy assets for the latest build of the policy with ARN YOUR_POLICY_ARN. Make sure you understand the policy with all its rules and variables. Give a high-level description of the policy and the type of content it is capable of validating.

À ce stade, la CLI Kiro devrait vous fournir une brève description des règles et des variables de la politique. La CLI Kiro doit également charger le rapport sur la qualité des politiques et résumer les problèmes tels que les types et les variables non utilisés.

Résoudre les problèmes de politique

Vous pouvez utiliser la CLI Kiro pour résoudre les problèmes de politique signalés dans le rapport de politique. Tout d'abord, demandez à Kiro de vous donner un résumé du rapport de qualité :

Can you give me a summary of the quality report for this policy?

Le rapport de qualité inclut une liste des variables non utilisées, des règles contradictoires, des règles disjointes et d'autres problèmes potentiels liés à la politique.

Des règles contradictoires obligeront votre politique à répondre IMPOSSIBLE à toutes les demandes de validation. Vous pouvez demander à Kiro CLI d'expliquer le conflit et de proposer une solution :

Can you look at the conflicting rules, explain how they are used in the policy, why they conflict, and suggest a change such as deleting one of the rules or merging the logic from the two into a single rule?

Les variables non utilisées peuvent faire en sorte que le résultat de la validation renvoie TRANSLATION_AMBIGUOUS des résultats. Vous pouvez demander à Kiro CLI de vous aider à résoudre ce problème :

I see the quality report lists some unused variables, can you get rid of them?

De même, une variable ambiguë qui est sémantiquement similaire peut entraîner le renvoi TRANSLATION_AMBIGUOUS de résultats par le résultat de la validation. Vous pouvez demander à Kiro CLI de vous aider à résoudre ce problème :

Automated Reasoning checks translate input natural language into logical statements that use the schema of variables from the policy. Variables that are semantically similar - ambiguous - can cause issues with inconsistent translations. Can you take a look at the schema of variables and help me identify variables that have potentially overlapping meanings? If you find any, suggest changes like removing one of them or merging them. Variable changes are also likely to require corresponding rule changes.
Note

Après avoir traité certaines modifications, Kiro CLI vous demandera une confirmation pour les appliquer. À ce stade, vous pouvez utiliser l'interface utilisateur de la console Bedrock pour examiner les modifications proposées dans un écran de comparaison. Si vous utilisez la console pour examiner et approuver les modifications, n'oubliez pas de demander à Kiro CLI de recharger la dernière version de la définition de politique.

Interaction avec une politique

Vous pouvez utiliser la CLI Kiro pour explorer votre politique. Par exemple, vous pouvez demander à Kiro CLI de résumer les règles de politique relatives à un domaine spécifique. En utilisant l'exemple de politique sur les devoirs comme exemple, vous pouvez demander à Kiro CLI de vous expliquer les règles qui limitent spécifiquement les devoirs de mathématiques :

Can you tell me about the rules that constrain math homework? Explain the rules themselves and how they fit in the broader policy.

Vous pouvez également utiliser la CLI Kiro pour ajouter des fonctionnalités à la politique. Les politiques de raisonnement automatisé contournent souvent certaines variables de sortie clés qui capturent l'intention de l'utilisateur. Par exemple, l'exemple de politique de soumission de devoirs utilise une isSubmissionAcceptable variable comme résultat de ses règles. Vous pouvez utiliser la CLI Kiro pour modifier la politique afin de prendre en compte les autres questions éventuelles des utilisateurs.

Modifier ou réviser votre politique

Vous pouvez demander à Kiro CLI si la politique est capable de valider les questions spécifiques de vos utilisateurs. Par exemple, la politique sur les devoirs vise à déterminer si une soumission de devoirs est acceptable. Vous pouvez vous attendre à une réponse positive de la part de Kiro CLI à cette question :

Can this policy validate answers about whether homework submissions are acceptable?

Si vous posez des questions sur le report de la soumission des devoirs dans l'exemple de politique sur les devoirs, Kiro CLI expliquera que la politique n'est pas en mesure de répondre à ces questions :

Can this policy validate answers about permissible delays in homework submissions?

La CLI Kiro expliquera ce que la politique peut et ne peut pas faire :

> Yes, but with limitations. The policy can validate whether a late submission is acceptable, but it cannot answer general questions about permissible delays.

What it CAN validate:
- Whether a specific late submission is acceptable given the circumstances
- Example: "Student submitted 2 days late with a doctor's note because they were sick before the deadline" → The policy will determine if this is acceptable (it would be)

What it CANNOT validate:
- General questions like "How many days late can a student submit homework?"
- Questions about delay policies without specific submission details
- Hypothetical scenarios without concrete variable values

The late submission logic:
The policy allows late submissions (submissionDate > 0) ONLY if:
1. The student has a valid doctor's note (hasDoctorNote = true), AND
2. The student was sick before the original deadline (wasSickPriorToDeadline = true)

Without both conditions met, any submission after the due date (submissionDate > 0) is automatically rejected.

So it's designed to validate specific submission instances against the rules, not to answer policy interpretation questions.
    

Lorsque vous découvrez quelque chose que la politique ne peut pas faire, vous pouvez demander à Kiro CLI de mettre à jour la politique afin de capturer ces informations à l'aide de l'invite suivante :

I would like the policy to also validate answers about by how many days homework submissions can be delayed. Homework submissions accompanied by a doctor note can be up to 7 days late. Suggest the necessary variables and rules to capture these new questions.

En réponse à cette demande, la CLI Kiro suggérera un ensemble de variables et de règles qui peuvent être ajoutées à la politique pour valider le nouveau type de questions. Passez en revue les suggestions et si elles correspondent à votre intention, vous pouvez demander à Kiro CLI d'utiliser les annotations des contrôles de raisonnement automatisés pour apporter les modifications suivantes APIs à la politique :

Looks good. Can you use the annotation APIs to submit these changes to the policy.

Une fois que la CLI Kiro confirme que les annotations sont prêtes, vous pouvez ouvrir votre politique dans la console pour consulter les annotations. Si les annotations sont correctes, choisissez Appliquer les annotations.

Note

Tutoriel vidéo : pour step-by-step découvrir comment réviser et appliquer des annotations, regardez le didacticiel suivant :

Didacticiel de démonstration 3 : Affiner la politique de raisonnement automatisé

Après avoir appliqué les annotations, demandez à Kiro CLI de recharger la dernière version de la politique pour vous assurer que la CLI Kiro fonctionne avec une copie actuelle :

I applied the annotations. Reload the latest build of the policy.

Corriger les échecs aux tests

Un bon moyen de vérifier que votre politique de raisonnement automatisé peut valider le langage naturel généré par votre application consiste à utiliser des tests. Après avoir créé des questions-réponses avec les résultats attendus, vous pouvez utiliser la CLI Kiro pour comprendre pourquoi un test n'a pas renvoyé le résultat attendu et ajuster la politique. Pour plus d'informations sur la création et l'exécution de tests, consultezTest d’une politique de raisonnement automatisé.

  1. Dans un premier temps, demandez à la CLI Kiro de charger le test qui a échoué et d'expliquer pourquoi il ne renvoie pas le résultat attendu en fonction de la définition de la politique. Utilisez la console ou APIs copiez l'identifiant du test qui a échoué. Dans la console, l'identifiant du test est disponible à la fois dans le tableau répertoriant les tests et dans la page détaillée de chaque test.

    The test with ID YOUR_TEST_ID 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.
  2. L'explication de la CLI Kiro vous indiquera si la politique fait le bon choix (et vous devez modifier le résultat attendu pour le test) ou si elle est incorrecte. Vous pouvez demander à Kiro CLI de suggérer des modifications à la politique afin de garantir que le test renvoie le résultat attendu :

    Can you suggest changes to the policy to ensure this test returns the expected result? Explain why you are suggesting these changes. Only create rules in if/then format.
    Note

    Lorsque vous suggérez des modifications de règles, la CLI Kiro peut essayer de s'adapter à l'exemple spécifique et de créer des règles inutiles dans d'autres cas d'utilisation. Vérifiez le résultat du test et donnez des conseils à Kiro CLI pour le concentrer sur le bon problème.

    Par exemple, demander à Kiro de modifier l'exemple de politique Homework afin que le SATISFIABLE test revienneVALID, Kiro peut suggérer d'ajouter des axiomes à la politique pour que le test soit toujours réussi, par exemple en créant une règle stipulant que (false isHomeworkSubmissionAcceptable) Cela garantirait que la valeur est toujours fausse. Bien que cela corrige techniquement le test problématique, cela nuit à la fonctionnalité globale des politiques. En analysant les scénarios renvoyés par le résultat du SATISFIABLE test, vous pouvez constater que la CLI Kiro fournit de meilleurs conseils pour créer une nouvelle règle qui couvre uniquement les contraintes spécifiées dans le test ou mettre à jour les règles existantes pour vérifier uniquement les contraintes de test :

  3. Une fois que vous êtes satisfait des modifications suggérées, demandez à Kiro CLI de soumettre les annotations et de les examiner à l'aide de l'interface utilisateur de la console :

    Looks good. Can you start a build workflow to apply these changes to the policy.
  4. Après avoir appliqué les modifications et passé au test d'échec suivant, demandez à Kiro CLI de recharger la dernière version de la politique :

    I applied the changes. Reload the latest build of the policy.

Étapes suivantes

Une fois que vous êtes satisfait de la politique de raisonnement automatisé, vous pouvez la déployer pour l'utiliser dans Amazon Bedrock Guardrails. Pour de plus amples informations, veuillez consulter Déploiement de votre politique de raisonnement automatisé dans votre application.

Invite contextuelle de l'API de politique de raisonnement automatique

Copiez le contenu suivant et enregistrez-le dans un fichier Markdown dans le dossier de votre projet pour Kiro CLI. Cette invite fournit à la CLI Kiro le contexte dont elle a besoin pour fonctionner APIs correctement avec la politique de raisonnement automatisé.

# Automated Reasoning Policy APIs and Workflows ## Table of Contents ### Core APIs - Policy Management - Policy Versions - Build Workflows - Test Management - Annotations & Scenarios ### Build Workflow Types - INGEST_CONTENT Workflow - REFINE_POLICY Workflow - IMPORT_POLICY Workflow ### Annotation Type Reference - Type Management Annotations - Variable Management Annotations - Rule Management Annotations - Natural Language Rule Creation - Feedback-Based Updates ### Common Workflows 1. Getting Started (New Policy) 2. Building Policy from Document 3. Policy Development Cycle 4. REFINE_POLICY Workflow (Annotation-Based) ### Testing Workflow 1. Primary Approach: Scenarios API (Recommended) 2. Secondary Approach: Test Cases (User Experience) 3. Test Result Analysis and Troubleshooting ### Build Workflow Monitoring - Check Build Status - List Build History - Best Practice: Clean Build Management - Troubleshooting Build Failures ### Build Workflow Assets - Asset Types - Understanding Conflicting Rules - Understanding Disjoint Rule Sets - Advanced Quality Report Analysis ### Additional Topics - Policy Version Export - Key Concepts - Important Format Requirements - Policy Modeling Best Practices - ARN Formats ## Core APIs ### Policy Management - `create-automated-reasoning-policy` - Create initial policy (returns policy ARN) - `get-automated-reasoning-policy` - Retrieve policy (DRAFT version by default with unversioned ARN) - `update-automated-reasoning-policy` - Update DRAFT policy with new definition - `delete-automated-reasoning-policy` - Delete policy - `list-automated-reasoning-policies` - List all policies ### Policy Versions - `create-automated-reasoning-policy-version` - Snapshot DRAFT into numbered version - `export-automated-reasoning-policy-version` - Export specific policy version ### Build Workflows - `start-automated-reasoning-policy-build-workflow` - Start build process - `get-automated-reasoning-policy-build-workflow` - Get build workflow status - `cancel-automated-reasoning-policy-build-workflow` - Cancel running build - `delete-automated-reasoning-policy-build-workflow` - Delete build workflow - `list-automated-reasoning-policy-build-workflows` - List build workflows - `get-automated-reasoning-policy-build-workflow-result-assets` - Get compiled policy assets ### Test Management - `create-automated-reasoning-policy-test-case` - Create test case - `get-automated-reasoning-policy-test-case` - Get test case details - `update-automated-reasoning-policy-test-case` - Update test case - `delete-automated-reasoning-policy-test-case` - Delete test case - `list-automated-reasoning-policy-test-cases` - List test cases - `start-automated-reasoning-policy-test-workflow` - Run tests - `get-automated-reasoning-policy-test-result` - Get test results - `list-automated-reasoning-policy-test-results` - List test results ### Annotations & Scenarios - `get-automated-reasoning-policy-annotations` - Get policy annotations - `get-automated-reasoning-policy-next-scenario` - Get next test scenario **Important**: Do NOT use `get-automated-reasoning-policy-annotations` or `update-automated-reasoning-policy-annotations` for the `REFINE_POLICY` workflow. Annotations are passed directly in the `start-automated-reasoning-policy-build-workflow` call. ## Build Workflow Types 1. **INGEST_CONTENT** - Process documents to create/extract policy rules 2. **REFINE_POLICY** - Refine and improve existing policies using annotations 3. **IMPORT_POLICY** - Import policies from external sources ### INGEST_CONTENT Workflow - **Purpose**: Extract policy rules from documents (PDF/TXT) - **Input**: Documents + optional existing policy definition - **Use Cases**: Document-to-policy conversion, incremental policy building - **Content Structure**: `workflowContent.documents[]` **CRITICAL: Complete Policy Definition for Incremental Building** When adding documents to an existing policy, you must include the complete current policy definition: ```json // CORRECT - Incremental policy building { "policyDefinition": { "version": "1.0", "types": [/* ALL existing types */], "rules": [/* ALL existing rules */], "variables": [/* ALL existing variables */] }, "workflowContent": { "documents": [/* New documents to process */] } } ``` ### REFINE_POLICY Workflow - **Purpose**: Iteratively improve policies with targeted modifications - **Input**: Policy definition + annotations for specific changes - **Use Cases**: Kiro CLI suggestions, test-driven improvements, feedback-based refinement - **Content Structure**: `workflowContent.policyRepairAssets.annotations[]` **CRITICAL: Complete Policy Definition Required** ALL build workflows require the COMPLETE existing policy definition in the `policyDefinition` section, not just the changes you want to make. **REFINE_POLICY Annotation Types:** **Top-Level Annotations:** - **Type Management**: `addType`, `updateType`, `deleteType` - **Variable Management**: `addVariable`, `updateVariable`, `deleteVariable` - **Rule Management**: `addRule`, `updateRule`, `deleteRule` - **Natural Language Rules**: `addRuleFromNaturalLanguage` - **Feedback-Based Updates**: `updateFromRulesFeedback`, `updateFromScenarioFeedback` **Sub-Operations (only within `updateType`):** - `addTypeValue`, `updateTypeValue`, `deleteTypeValue` - Used to modify values within an existing custom type **important**: Only create rules in if/then format. ## Annotation Type Reference ### Type Management Annotations #### `addType` - Create New Custom Type ```json { "addType": { "name": "ApprovalStatus", "description": "Status values for approval requests", "values": [ { "value": "PENDING", "description": "Request is awaiting approval" }, { "value": "APPROVED", "description": "Request has been approved" }, { "value": "REJECTED", "description": "Request has been rejected" } ] } } ``` #### `updateType` - Modify Existing Custom Type ```json { "updateType": { "name": "ApprovalStatus", "newName": "RequestStatus", "description": "Updated status values for all request types", "values": [ { "addTypeValue": { "value": "ESCALATED", "description": "Request escalated to higher authority" } }, { "updateTypeValue": { "value": "PENDING", "newValue": "WAITING", "description": "Request is waiting for review" } }, { "deleteTypeValue": { "value": "REJECTED" } } ] } } ``` #### `deleteType` - Remove Custom Type ```json { "deleteType": { "name": "ObsoleteType" } } ``` ### Variable Management Annotations #### `addVariable` - Create New Variable ```json { "addVariable": { "name": "requestAmount", "type": "real", "description": "The monetary amount of the approval request in USD" } } ``` #### `updateVariable` - Modify Existing Variable ```json { "updateVariable": { "name": "requestAmount", "newName": "approvalAmount", "description": "The monetary amount requiring approval in USD (updated description)" } } ``` #### `deleteVariable` - Remove Variable ```json { "deleteVariable": { "name": "obsoleteVariable" } } ``` ### Rule Management Annotations #### `addRule` - Create New Rule (SMT-LIB) ```json { "addRule": { "expression": "(=> (and (= userRole MANAGER) (< requestAmount 10000)) (not approvalRequired))" } } ``` #### `updateRule` - Modify Existing Rule ```json { "updateRule": { "ruleId": "A1B2C3D4E5F6", "expression": "(=> (and (= userRole MANAGER) (< requestAmount 5000)) (not approvalRequired))" } } ``` #### `deleteRule` - Remove Rule ```json { "deleteRule": { "ruleId": "G7H8I9J0K1L2" } } ``` ### Natural Language Rule Creation #### `addRuleFromNaturalLanguage` - Convert Natural Language to Rule ```json { "addRuleFromNaturalLanguage": { "naturalLanguage": "Managers can approve expense requests up to $5,000 without additional authorization. Senior managers can approve up to $25,000." } } ``` ### Feedback-Based Updates #### `updateFromRulesFeedback` - Improve Rules Based on Performance ```json { "updateFromRulesFeedback": { "ruleIds": ["A1B2C3D4E5F6", "G7H8I9J0K1L2"], "feedback": "These rules are too restrictive for emergency scenarios. Add exception handling for urgent requests with proper escalation paths." } } ``` #### `updateFromScenarioFeedback` - Improve Based on Test Scenarios ```json { "updateFromScenarioFeedback": { "ruleIds": ["A1B2C3D4E5F6"], "scenarioExpression": "(and (= requestType EMERGENCY) (= userRole MANAGER) (> requestAmount 10000))", "feedback": "Emergency requests should have different approval thresholds. Current rule blocks legitimate emergency expenses." } } ``` **Important**: Do NOT use `get-automated-reasoning-policy-annotations` or `update-automated-reasoning-policy-annotations` for the `REFINE_POLICY` workflow. Annotations are passed directly in the `start-automated-reasoning-policy-build-workflow` call. ## Common Workflows ### 1. Getting Started (New Policy) **CRITICAL: Always Create Policy First** You must create a policy before starting any build workflows. ```bash # Step 1: Create initial policy (REQUIRED FIRST STEP) aws bedrock create-automated-reasoning-policy \ --region us-west-2 \ --name "YourPolicyName" # Step 2: Extract the policyArn from the response above, then start build workflow aws bedrock start-automated-reasoning-policy-build-workflow \ --region us-west-2 \ --policy-arn "arn:aws:bedrock:us-west-2:123456789012:automated-reasoning-policy/abcd1234efgh" \ --build-workflow-type INGEST_CONTENT \ --source-content <policy-definition> # Step 3: Get build results aws bedrock get-automated-reasoning-policy-build-workflow-result-assets \ --region us-west-2 \ --policy-arn "arn:aws:bedrock:us-west-2:123456789012:automated-reasoning-policy/abcd1234efgh" \ --build-workflow-id <workflow-id> ``` ### 2. Building Policy from Document **RECOMMENDED: Using CLI Input JSON File** ```bash # Step 1: Encode PDF to base64 and create JSON file with base64 content PDF_BASE64=$(base64 -i your-policy.pdf | tr -d '\n') cat > ingest-policy.json << EOF { "policyArn": "arn:aws:bedrock:us-west-2:123456789012:automated-reasoning-policy/your-actual-policy-id", "buildWorkflowType": "INGEST_CONTENT", "sourceContent": { "policyDefinition": { "version": "1.0", "types": [], "rules": [], "variables": [] }, "workflowContent": { "documents": [ { "document": "$PDF_BASE64", "documentContentType": "pdf", "documentName": "Company Policy Document", "documentDescription": "Main policy document containing business rules and organizational guidelines." } ] } } } EOF # Step 2: Use the JSON file aws bedrock start-automated-reasoning-policy-build-workflow \ --region us-west-2 \ --cli-input-json file://ingest-policy.json ``` ### 3. Policy Development Cycle ```bash # 1. Import/process policy definition aws bedrock start-automated-reasoning-policy-build-workflow \ --build-workflow-type IMPORT_POLICY # 2. Update DRAFT with processed definition aws bedrock update-automated-reasoning-policy \ --policy-arn <unversioned-arn> \ --policy-definition <build-output> # 3. Create versioned snapshot of DRAFT aws bedrock create-automated-reasoning-policy-version \ --policy-arn <unversioned-arn> ``` ## Testing Workflow ### Primary Approach: Scenarios API (Recommended) Use `get-automated-reasoning-policy-next-scenario` for comprehensive policy validation. The Scenarios API is superior for testing because it: - Tests formal logic directly - Validates policy rules work correctly - AI-generated scenarios - Comprehensive coverage of edge cases and rule interactions - Targets specific rules - Tests individual rules and combinations - Always works - No natural language translation issues - Intelligent test generation - AI understands policy logic deeply ```bash # Generate intelligent test scenarios automatically aws bedrock get-automated-reasoning-policy-next-scenario \ --policy-arn "arn:aws:bedrock:region:account:automated-reasoning-policy/policy-id" \ --build-workflow-id "workflow-123" ``` ### Secondary Approach: Test Cases (User Experience) Use manual test cases to validate natural language translation. ```bash # Create test cases for natural language validation aws bedrock create-automated-reasoning-policy-test-case \ --policy-arn "arn:aws:bedrock:region:account:automated-reasoning-policy/policy-id" \ --guard-content "It is 2:30 PM on a clear day" \ --query-content "What color should the sky be?" \ --expected-aggregated-findings-result "VALID" ``` ### Test Result Analysis and Troubleshooting **Understanding Test Results:** **Scenarios API Results:** - `expectedResult: SATISFIABLE` - Policy logic works correctly - API errors or logic conflicts - Policy needs fixing with REFINE_POLICY **Common Test Case Failure Modes:** 1. **TRANSLATION_AMBIGUOUS** - Problem: AI can't map natural language to policy variables - Solution: Improve variable descriptions with more natural language synonyms 2. **SATISFIABLE when expecting VALID** - Problem: Your expected result label is likely WRONG, not the policy - SATISFIABLE = "This scenario is logically consistent with the policy rules" - VALID = "This is the correct/expected answer according to the policy" - Solution: Change `expectedAggregatedFindingsResult` from `VALID` to `SATISFIABLE` 3. **Empty testFindings arrays** - Problem: Translation issues, not rule violations - Solution: Focus on improving natural language descriptions, not policy logic ## Build Workflow Monitoring **Critical Build Limits**: The API supports maximum 2 total build workflows per policy, with only 1 allowed to be IN_PROGRESS at any time. When a build workflow completes, you can instruct the user to review the output using the console. ### Check Build Status ```bash aws bedrock get-automated-reasoning-policy-build-workflow \ --policy-arn "arn:aws:bedrock:region:account:automated-reasoning-policy/policy-id" \ --build-workflow-id "workflow-123" ``` ### List Build History ```bash aws bedrock list-automated-reasoning-policy-build-workflows \ --policy-arn "arn:aws:bedrock:region:account:automated-reasoning-policy/policy-id" \ --max-results 50 ``` ### Best Practice: Clean Build Management ```bash # 1. Check existing builds before starting new ones aws bedrock list-automated-reasoning-policy-build-workflows \ --policy-arn <policy-arn> \ --max-results 10 # 2. Delete old/completed builds if you have 2 already aws bedrock delete-automated-reasoning-policy-build-workflow \ --policy-arn <policy-arn> \ --build-workflow-id "old-workflow-id" \ --last-updated-at "2025-11-15T00:41:18.608000+00:00" # 3. Now start your new build aws bedrock start-automated-reasoning-policy-build-workflow \ --policy-arn <policy-arn> \ --build-workflow-type INGEST_CONTENT \ --source-content <content> ``` ## Build Workflow Assets After a build workflow completes successfully, you can retrieve various assets. After you complete a build workflow, you can ask the user to check the build diff using the Automated Reasoning checks console. ### Asset Types #### 1. POLICY_DEFINITION - The Main Output ```bash aws bedrock get-automated-reasoning-policy-build-workflow-result-assets \ --policy-arn "arn:aws:bedrock:region:account:automated-reasoning-policy/policy-id" \ --build-workflow-id "workflow-123" \ --asset-type "POLICY_DEFINITION" ``` **What it contains:** - Compiled policy with extracted/refined rules, variables, and types - SMT-LIB expressions for all rules - Complete policy structure ready for deployment #### 2. BUILD_LOG - Build Process Details ```bash aws bedrock get-automated-reasoning-policy-build-workflow-result-assets \ --policy-arn "arn:aws:bedrock:region:account:automated-reasoning-policy/policy-id" \ --build-workflow-id "workflow-123" \ --asset-type "BUILD_LOG" ``` **What it shows:** - Document processing steps - What content was analyzed - Extraction results - What rules, variables, and types were found - Processing warnings - Content that couldn't be interpreted - Success/failure status for each extraction step #### 3. QUALITY_REPORT - Policy Quality Analysis ```bash aws bedrock get-automated-reasoning-policy-build-workflow-result-assets \ --policy-arn "arn:aws:bedrock:region:account:automated-reasoning-policy/policy-id" \ --build-workflow-id "workflow-123" \ --asset-type "QUALITY_REPORT" ``` **What it contains:** - Conflicting rules - Rules that contradict each other - Unused variables - Variables not referenced by any rules - Unused type values - Enum values not used in rules - Disjoint rule sets - Groups of rules that don't interact