Risolvi i problemi e perfeziona la tua politica di ragionamento automatico - Amazon Bedrock

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risolvi i problemi e perfeziona la tua politica di ragionamento automatico

Quando un test delle policy di Automated Reasoning fallisce, ovvero il risultato effettivo non corrisponde al risultato previsto, il problema è nella traduzione (il linguaggio naturale è stato mappato alle variabili o ai valori sbagliati) o nelle regole (la logica delle policy non corrisponde al tuo dominio). Questa pagina fornisce un approccio sistematico alla diagnosi e alla risoluzione di entrambi i tipi di problemi.

Prima di iniziare la risoluzione dei problemi, assicurati di aver compreso il processo di convalida in due fasi (traduzione e quindi convalida) descritto in. Traduzione: dal linguaggio naturale alla logica formale Questa distinzione è la chiave per un debug efficiente.

Nota

Video tutorial: per una step-by-step procedura dettagliata su come perfezionare e risolvere i problemi di una politica di ragionamento automatico, guarda il seguente tutorial:

Demo tutorial 3 - Perfezionamento della policy di ragionamento automatico

Flusso di lavoro di debug

Quando un test fallisce, utilizza il risultato effettivo per identificare il tipo di problema e passa alla sezione pertinente.

Risultato effettivo Causa probabile Dove cercare
TRANSLATION_AMBIGUOUS I modelli di traduzione non erano d'accordo su come interpretare l'input. Di solito è causata da variabili sovrapposte, descrizioni vaghe o testo di input ambiguo. Risolvi i problemi di traduzione
NO_TRANSLATIONS L'input non può essere mappato su nessuna variabile di policy. O l'input è fuori tema o nella policy mancano variabili per i concetti citati. Risolvi i problemi di traduzione
TOO_COMPLEX L'input o la policy superano i limiti di elaborazione. Spesso causata da aritmetiche o politiche non lineari con troppe regole interagenti. Considerazioni e limitazioni
IMPOSSIBLE Le premesse si contraddicono a vicenda oppure la politica stessa contiene regole contrastanti. Correggi risultati impossibili
VALIDINVALID, o SATISFIABLE (ma non quello che ti aspettavi) Controlla prima la traduzione nella ricerca. Se vengono assegnate le variabili giuste con i valori corretti, il problema è nelle vostre regole. Se la traduzione è sbagliata, il problema è nelle descrizioni delle variabili. Traduzione sbagliata:Risolvi i problemi di traduzione. Regole sbagliate:Risolvere i problemi relativi alle regole.
Suggerimento

Controlla sempre prima la traduzione. Nella maggior parte dei casi, la convalida matematica (fase 2) è corretta: il problema sta nel modo in cui il linguaggio naturale è stato tradotto in logica formale (fase 1). Correggere le descrizioni delle variabili è più veloce e meno rischioso rispetto alla modifica delle regole.

Risolvi i problemi di traduzione

I problemi di traduzione si verificano quando i controlli di ragionamento automatico non riescono a mappare in modo affidabile il linguaggio naturale alle variabili della politica. Il sintomo più visibile è il TRANSLATION_AMBIGUOUS risultato, ma i problemi di traduzione possono anche causare SATISFIABLE risultati errati VALID o quando vengono assegnate variabili o valori errati. INVALID

Diagnosticate i risultati di TRANSLATION_AMBIGUOUS

Una TRANSLATION_AMBIGUOUS scoperta include due campi chiave che aiutano a comprendere il disaccordo:

  • options— Le interpretazioni logiche concorrenti (fino a 2). Ogni opzione contiene la propria traduzione con premesse, affermazioni e confidenza. Confrontate le opzioni per vedere dove i modelli di traduzione erano in disaccordo.

  • differenceScenarios— Scenari (fino a 2) che illustrano come le diverse interpretazioni differiscano nel significato, con assegnazioni variabili che evidenziano l'impatto pratico dell'ambiguità.

Esamina questi campi per identificare la fonte specifica dell'ambiguità, quindi applica la correzione appropriata dal seguente elenco.

Definizioni di variabili sovrapposte

Quando più variabili potrebbero ragionevolmente rappresentare lo stesso concetto, i modelli di traduzione non concordano su quale usare.

Sintomo: I options TRANSLATION_AMBIGUOUS risultati mostrano lo stesso concetto assegnato a variabili diverse. Ad esempio, un'opzione assegna «2 anni di servizio» a tenureMonths = 24 mentre l'altra li assegna a. monthsOfService = 24

Correzione: unisci le variabili sovrapposte in un'unica variabile con una descrizione completa. Aggiorna tutte le regole che fanno riferimento alla variabile eliminata per utilizzare quella rimanente.

Esempio:

Prima (sovrapposizione) Dopo (unito)

tenureMonths: «Da quanto tempo il dipendente ha lavorato in mesi».

monthsOfService: «I mesi di servizio del dipendente».

tenureMonths: «Il numero di mesi interi in cui il dipendente è stato impiegato ininterrottamente. Quando gli utenti menzionano anni di servizio, convertili in mesi (ad esempio, 2 anni = 24 mesi). Questa variabile raccoglie tutti i riferimenti alla durata del rapporto di lavoro, all'anzianità di servizio, al tempo trascorso in azienda o all'anzianità di servizio.»

(Eliminare monthsOfService e aggiornare le regole.)

Descrizioni delle variabili incomplete

Le descrizioni delle variabili prive di dettagli su come gli utenti si riferiscono ai concetti nel linguaggio comune rendono difficile mappare l'input alla variabile corretta.

Sintomo: options mostra la variabile corretta ma con valori diversi, oppure la traduzione assegna un valore che non corrisponde a quello detto dall'utente. Ad esempio, «2 anni» viene tradotto in tenureMonths = 2 anziché tenureMonths = 24 in.

Correzione: aggiorna la descrizione della variabile per includere regole di conversione delle unità, sinonimi e frasi alternative. Vedi Scrivi descrizioni complete delle variabili per una guida dettagliata.

Esempio:

Prima (incompleto) Dopo (completo)
isFullTime: «Stato a tempo pieno». isFullTime: «Se il dipendente lavora a tempo pieno (vero) o a tempo parziale (falso). Imposta su true quando gli utenti dichiarano di essere «a tempo pieno», di lavorare «ore intere» o di lavorare più di 40 ore a settimana. Imposta su false quando gli utenti menzionano di essere «part-time», di lavorare «con orario ridotto» o di lavorare meno di 40 ore a settimana».

Formattazione dei valori non coerente

L'ambiguità di traduzione può verificarsi quando il sistema non è sicuro di come formattare valori come numeri, date o percentuali.

Sintomo: options mostrano la stessa variabile ma con formati di valori diversi. Ad esempio, un'opzione traduce "5%" in interestRate = 5 mentre l'altra lo traduce in. interestRate = 0.05

Correzione: aggiorna la descrizione della variabile per specificare il formato previsto e includere le regole di conversione. Per informazioni, consulta Specificare unità e formati nelle descrizioni delle variabili.

Testo di input ambiguo

A volte l'input stesso è veramente ambiguo: contiene pronomi vaghi, riferimenti poco chiari o affermazioni che possono essere interpretate in diversi modi.

Sintomo: options mostrano interpretazioni fondamentalmente diverse dello stesso testo. Ad esempio, «Possono prendere un congedo?» potrebbe riferirsi a qualsiasi tipo di dipendente.

Correzione: se si tratta di un test, riscrivi l'input per renderlo più specifico. In fase di esecuzione, l'applicazione dovrebbe chiedere chiarimenti all'utente quando riceve un TRANSLATION_AMBIGUOUS risultato. Per i modelli di integrazione, vedereIntegra i controlli di ragionamento automatizzato nella tua applicazione.

Regola la soglia di confidenza

Se vedi TRANSLATION_AMBIGUOUS risultati per input che sono al limite dell'ambiguità, puoi regolare la soglia di confidenza. L'abbassamento della soglia consente alle traduzioni con meno accordo di modello di procedere alla convalida, riducendo TRANSLATION_AMBIGUOUS i risultati ma aumentando il rischio di traduzioni errate.

Importante

L'adeguamento della soglia dovrebbe essere l'ultima risorsa. Nella maggior parte dei casi, migliorare le descrizioni delle variabili o rimuovere le variabili sovrapposte è una soluzione migliore perché risolve la causa principale. Per ulteriori informazioni sul funzionamento delle soglie, vedere. Soglie di confidenza

Risolvere i problemi relativi alle regole

I problemi relativi alle regole si verificano quando la traduzione è corretta ma la logica dei criteri non corrisponde al tuo dominio. Hai confermato che alle variabili corrette vengono assegnati i valori corretti, ma il risultato della convalida è ancora errato.

Ottenere VALID quando ti aspettavi INVALID

La politica non prevede una regola che vieti il reclamo. La risposta contraddice la tua conoscenza del dominio, ma la policy lo consente.

Diagnosi: guarda supportingRules il risultato. Queste sono le regole che dimostrano la validità del reclamo. Verifica se queste regole sono corrette o se manca una regola.

Cause e correzioni comuni:

  • Regola mancante. La tua polizza non ha una regola che copra questa condizione. Aggiungi una nuova regola che acquisisca il vincolo. Ad esempio, se la politica consente il congedo parentale per tutti i dipendenti a tempo pieno ma dovrebbe richiedere 12 mesi di mandato, aggiungi: (=> (and isFullTime (<= tenureMonths 12)) (not eligibleForParentalLeave))

  • La regola è troppo permissiva. Una regola esistente consente più di quanto dovrebbe. Modifica la regola per aggiungere la condizione mancante. Ad esempio, cambia (=> isFullTime eligibleForParentalLeave) in (=> (and isFullTime (> tenureMonths 12)) eligibleForParentalLeave)

  • Variabile mancante. La politica non dispone di una variabile per acquisire un concetto rilevante. Aggiungi la variabile, scrivi una descrizione chiara e crea regole che vi facciano riferimento.

Diventare INVALID quando ti aspettavi VALID

La politica prevede una regola che vieta erroneamente il reclamo.

Diagnosi: Guardate il contradictingRules risultato. Queste sono le regole che confutano l'affermazione. Controlla se queste regole sono corrette.

Cause e correzioni comuni:

  • La regola è troppo restrittiva. Una regola esistente blocca uno scenario valido. Modifica la regola per attenuare la condizione o aggiungere un'eccezione. Ad esempio, se la regola richiede 24 mesi di mandato ma la politica dovrebbe richiederne solo 12, aggiorna la soglia.

  • La regola è stata estratta male. I controlli di ragionamento automatizzati hanno interpretato erroneamente il documento di origine. Modifica la regola in modo che corrisponda alla logica desiderata oppure eliminala e aggiungi manualmente una regola corretta.

Diventare SODDISFACENTE quando ti aspettavi VALIDO

La risposta è corretta in alcune condizioni ma non in tutte. La politica prevede regole aggiuntive che la risposta non affronta.

Diagnosi: confronta la claimsFalseScenario risposta claimsTrueScenario e i risultati. La differenza tra loro mostra le condizioni che la risposta non menziona.

Cause e correzioni comuni:

  • La risposta è incompleta. L'output del test non menziona tutte le condizioni richieste dalla politica. Aggiorna l'output del test per includere le condizioni mancanti o modifica il risultato previsto indicando SATISFIABLE se le risposte incomplete sono accettabili per il tuo caso d'uso.

  • La politica prevede regole non necessarie. La politica richiede condizioni che non sono pertinenti a questo scenario. Verifica se le regole aggiuntive devono essere applicate e rimuovile in caso contrario.

Correggi risultati impossibili

IMPOSSIBLEDi conseguenza, i controlli di ragionamento automatico non possono valutare le affermazioni perché le premesse sono contraddittorie o la politica stessa contiene regole contrastanti. Le cause sono due distinte.

Contraddizioni nell'input

L'input del test contiene affermazioni che si contraddicono a vicenda. Ad esempio, «sono un dipendente a tempo pieno e anche a tempo parziale» si imposta isFullTime = true e isFullTime = false contemporaneamente, il che è logicamente impossibile.

Diagnosi: ispezionare i translation locali indicati nel ritrovamento. Cerca le variabili a cui sono assegnati valori contraddittori.

Correzione: se si tratta di un test, riscrivi l'input per rimuovere la contraddizione. In fase di esecuzione, l'applicazione dovrebbe gestire IMPOSSIBLE i risultati chiedendo all'utente di chiarire il proprio input.

Conflitti nella politica

La politica contiene regole che si contraddicono a vicenda, impedendo ai controlli di ragionamento automatico di giungere a una conclusione sugli input che riguardano le regole in conflitto.

Diagnosi: se l'input è valido (senza premesse contraddittorie), il problema è nella politica. Controlla il contradictingRules campo del risultato per identificare quali regole sono in conflitto. Controlla anche il rapporto sulla qualità (vediUtilizza il rapporto sulla qualità): segnala automaticamente le regole in conflitto.

Cause e correzioni comuni:

  • Regole contraddittorie Due regole portano a conclusioni opposte a parità di condizioni. Ad esempio, una regola afferma che i dipendenti a tempo pieno hanno diritto alle ferie, mentre un'altra afferma che i dipendenti del primo anno non lo sono, senza specificare cosa succede ai dipendenti a tempo pieno nel primo anno. Unisci le regole in un'unica regola con condizioni esplicite: (=> (and isFullTime (> tenureMonths 12)) eligibleForLeave)

  • Asserzioni nude. Una semplice affermazione del genere (= eligibleForLeave true) rende impossibile che qualsiasi input affermi che l'utente non è idoneo. Riscrivi le semplici affermazioni come implicazioni. Per informazioni, consulta Utilizza le implicazioni (=>) per strutturare le regole.

  • Dipendenze circolari. Regole che dipendono l'una dall'altra in modo da creare loop logici. Semplifica le regole per interrompere il ciclo o usa variabili intermedie per rendere esplicita la logica.

Usa le annotazioni per correggere la tua politica

Le annotazioni sono correzioni mirate che applichi alla tua politica quando i test falliscono. Invece di modificare manualmente regole e variabili, puoi utilizzare le annotazioni per descrivere la modifica desiderata e lasciare che i controlli di ragionamento automatico la applichino. Le annotazioni sono disponibili sia tramite la console che tramite l'API.

Applica le annotazioni nella console

  1. Apri il test fallito ed esamina i risultati per comprendere il problema.

  2. Modifica le condizioni del test (ad esempio, aggiungi una premessa o modifica il risultato previsto) ed esegui nuovamente il test. Se il test modificato restituisce il risultato previsto, puoi applicare questa modifica come annotazione.

  3. Scegliete Applica annotazioni. Automated Reasoning Checks avvia un flusso di lavoro di compilazione per applicare le modifiche alla politica in base al feedback ricevuto.

  4. Nella schermata Esamina le modifiche alla politica, esamina le modifiche proposte alle regole, alle variabili e ai tipi della politica. Poi seleziona Accetta modifiche.

Applica le annotazioni utilizzando l'API

Usa l'StartAutomatedReasoningPolicyBuildWorkflowAPI con REFINE_POLICY per applicare le annotazioni a livello di codice. Passa la definizione completa della politica corrente insieme alle annotazioni.

I tipi di annotazioni includono:

  • Annotazioni variabili:addVariable,updateVariable, deleteVariable — Aggiungi variabili mancanti, migliora le descrizioni o rimuovi i duplicati.

  • Annotazioni sulle regole:addRule,, updateRuledeleteRule, addRuleFromNaturalLanguage — Correggi le regole errate, aggiungi le regole mancanti o rimuovi le regole in conflitto. addRuleFromNaturalLanguageUtilizzatela per descrivere una regola in un inglese semplice e lasciate che i controlli di ragionamento automatico la convertano in logica formale.

  • Annotazioni di tipo:addType,updateType, deleteType — Gestisci i tipi personalizzati (enumerazioni).

  • Annotazioni di feedback:updateFromRulesFeedback, updateFromScenarioFeedback — Fornisci feedback in linguaggio naturale su regole o scenari specifici e consenti ai controlli di ragionamento automatico di dedurre le modifiche necessarie.

Esempio: aggiungi una variabile e una regola mancanti utilizzando le annotazioni

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

Esempi di annotazioni

Esempio 1: correggere un requisito di permanenza mancante

Problema: la politica approva il congedo parentale per tutti i dipendenti a tempo pieno, ma il documento originale richiede più di 12 mesi di mandato.

Prima Dopo l'annotazione

Regola: (=> isFullTime eligibleForParentalLeave)

Nessuna tenureMonths variabile

Nuova variabile: tenureMonths (int) — «Il numero di mesi interi in cui il dipendente è stato impiegato ininterrottamente».

Regola aggiornata: (=> (and isFullTime (> tenureMonths 12)) eligibleForParentalLeave)

Esempio 2: corregge le variabili sovrapposte che causano TRANSLATION_AMBIGUOUS

Problema: due variabili (tenureMonthsemonthsOfService) rappresentano lo stesso concetto, causando traduzioni incoerenti.

Annotazioni:

  1. deleteVariablepermonthsOfService.

  2. updateVariableperché tenureMonths con una descrizione migliorata che copra tutti i modi in cui gli utenti potrebbero fare riferimento alla durata del rapporto di lavoro.

  3. updateRuleper tutte le regole a cui si fa riferimentomonthsOfService, modificandone l'usotenureMonths.

Esempio 3: correggi una semplice asserzione che causa risultati IMPOSSIBILI

Problema: la regola (= eligibleForParentalLeave true) è una semplice affermazione che rende impossibile, a qualsiasi input, affermare che l'utente non è idoneo.

Annotazioni:

  1. deleteRuleper la semplice affermazione.

  2. addRuleFromNaturalLanguage: «Se un dipendente lavora a tempo pieno e ha più di 12 mesi di mandato, ha diritto al congedo parentale».

Utilizza il rapporto sulla qualità

Il rapporto sulla qualità viene generato dopo ogni flusso di lavoro di compilazione e identifica i problemi strutturali della politica che possono causare errori nei test. Nella console, i problemi relativi ai report sulla qualità vengono visualizzati come avvisi nella pagina Definizioni. Tramite l'API, usa GetAutomatedReasoningPolicyBuildWorkflowResultAssets con. --asset-type QUALITY_REPORT

Il rapporto sulla qualità segnala i seguenti problemi:

Regole contrastanti

Due o più regole giungono a conclusioni contraddittorie per lo stesso insieme di condizioni. Le regole in conflitto fanno sì che la politica venga restituita IMPOSSIBLE per tutte le richieste di convalida che coinvolgono le regole in conflitto.

Esempio: la regola A dice (=> isFullTime eligibleForLeave) e la regola B dice. (=> (<= tenureMonths 6) (not eligibleForLeave)) Per un dipendente a tempo pieno con 3 mesi di mandato, la Regola A dice idoneo e la Regola B dice non idoneo: una contraddizione.

Correzione: Unisci le regole in un'unica regola con condizioni esplicite:. (=> (and isFullTime (> tenureMonths 6)) eligibleForLeave) Oppure elimina una delle regole in conflitto se è stata estratta erroneamente.

Variabili non utilizzate

Variabili a cui non fa riferimento alcuna regola. Le variabili non utilizzate aggiungono disturbo al processo di traduzione e possono causare TRANSLATION_AMBIGUOUS risultati quando competono con variabili attive simili per lo stesso concetto.

Correzione: elimina le variabili non utilizzate a meno che non si preveda di aggiungere regole che vi facciano riferimento in future iterazioni.

Valori di tipo non utilizzati

Valori di tipo personalizzato (enum) a cui non fa riferimento alcuna regola. Ad esempio, se il tuo LeaveType enum ha i valori PARENTAL, MEDICAL, BEREAVEMENT e PERSONAL, ma nessuna regola fa riferimento a PERSONAL, viene contrassegnato come non utilizzato.

Correzione: aggiungi regole che fanno riferimento al valore non utilizzato o lo rimuovi dall'enum. I valori non utilizzati possono causare problemi di traduzione se l'input menziona il concetto ma nessuna regola lo gestisce.

Set di regole disgiunti

Gruppi di regole che non condividono alcuna variabile. I set di regole disgiunti non rappresentano necessariamente un problema: la tua polizza può riguardare intenzionalmente argomenti indipendenti (ad esempio, idoneità alle ferie e rimborso spese). Tuttavia, possono indicare che alle variabili mancano le connessioni tra le regole correlate.

Quando agire: se i set di regole disgiunti devono essere correlati (ad esempio, entrambi riguardano i benefit per i dipendenti ma utilizzano nomi di variabili diversi per lo stesso concetto), unisci le variabili sovrapposte per collegarle. Se i set di regole sono realmente indipendenti, non è necessaria alcuna azione.

Usa la CLI di Kiro per perfezionare le policy

La CLI di Kiro fornisce un'interfaccia di chat interattiva per la diagnosi e la risoluzione dei problemi relativi alle policy. Può caricare la definizione delle politiche e il rapporto sulla qualità, spiegare perché i test falliscono, suggerire modifiche e applicare annotazioni, il tutto tramite conversazioni in linguaggio naturale.

La CLI di Kiro è particolarmente utile per:

  • Comprendere i fallimenti. Chiedi alla CLI di Kiro di caricare un test fallito e spiega perché non restituisce il risultato previsto. La CLI di Kiro analizzerà la definizione della politica, i risultati dei test e il rapporto sulla qualità per identificare la causa principale.

  • Risoluzione dei problemi relativi ai report sulla qualità. Chiedi alla CLI di Kiro di riepilogare il rapporto sulla qualità e suggerire correzioni per regole in conflitto, variabili non utilizzate e descrizioni di variabili sovrapposte.

  • Suggerire modifiche alle regole. Descrivi il comportamento che ti aspetti e chiedi alla CLI di Kiro di proporre le modifiche necessarie alle variabili e alle regole. Esamina i suggerimenti e ordina alla CLI di Kiro di applicarli come annotazioni.

Esempio di flusso di lavoro:

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]

Per istruzioni complete sulla configurazione e l'utilizzo della CLI di Kiro con le politiche di ragionamento automatico, vedere. Usa la CLI di Kiro con una politica di ragionamento automatizzato