Verifica della fattualità con consapevolezza della fonte per agenti MCP
Il contesto attuale: agenti LLM multi‑tool
Gli agenti basati su LLM che utilizzano strumenti non si limitano più a leggere un singolo passo recuperato. Attraverso il Model Context Protocol (MCP) un agente può chiamare un motore di ricerca, ispezionare un record strutturato di un paziente o di un account, interrogare un database e prelevare metadati, per poi intrecciare tutti questi elementi in una risposta unica. Questa complessità rende la classica domanda di factualità più sottile di quanto appaia.
Perché i verificatori tradizionali non bastano
I sistemi tradizionali di verifica delle risposte LLM, da RAGAS a controlli più fini come MiniCheck, AlignScore e SummaC, chiedono se un'affermazione è supportata dall’evidenza disponibile dopo che tale evidenza è stata aggregata in un unico contesto. Nella loro forma usuale non indicano quale output di uno strumento MCP supporta ciascuna affermazione, né se la fonte citata nella risposta corrisponde a quella effettivamente usata.
Il rischio della “conflazione inter‑fonte”
Il caso problematico che ProvenanceGuard intende risolvere è la conflazione inter‑fonte: un’affermazione è vera da qualche parte nelle evidenze, ma viene attribuita alla fonte sbagliata. Un verificatore “source‑blind” potrebbe accettarla perché il fatto esiste nel pool, mentre un verificatore consapevole della fonte dovrebbe rifiutarla.
Esempio tipico: un agente di assistenza clienti risponde “Secondo il record dell’account, questo piano prevede una finestra di rimborso di 30 giorni”. La finestra di rimborso può esistere, ma è descritta in un documento di policy, non nel record dell’account a cui la risposta fa riferimento. Se le due fonti vengono messe insieme, l’affermazione sembra supportata; se rimangono separate, l’attribuzione è errata e, in contesti sensibili, può essere dannosa quanto un fatto errato.
Un caso analogo si verifica in ambito clinico, dove un dettaglio di medicazione estratto da uno strumento di storia paziente diventa fuorviante se la risposta lo presenta come se fosse tratto dalla letteratura medica.
ProvenanceGuard: un livello di verifica post‑generazione
ProvenanceGuard è una componente di verifica che si colloca sopra un agente MCP “black‑box”. Dopo che l’agente ha prodotto una risposta, ProvenanceGuard legge la traccia MCP catturata – inclusi gli output degli strumenti e i relativi ID di fonte – senza richiedere il ri‑addestramento dell’agente. Il processo si svolge in cinque fasi sequenziali:
- decomposizione della risposta in affermazioni specifiche;
- identificazione della fonte più pertinente per ciascuna affermazione;
- verifica che la fonte selezionata supporti effettivamente l’affermazione;
- confronto tra la fonte reale e quella citata o implicita nella risposta;
- emissione di un verdetto per ogni affermazione e di una decisione globale “allow” o “block”.
Le risposte bloccate possono essere inviate a un ciclo di correzione in stile RARR, per una revisione o una risposta di fallback sicura.
Scelte di design e configurazione sperimentale
Nel paper gli autori hanno utilizzato modelli locali per consentire l’elaborazione offline delle tracce:
- MiniLM per trovare la fonte rilevante;
- un modello DeBERTa NLI per verificare se la fonte supporta l’affermazione;
- un modello linguistico locale per segmentare le risposte in affermazioni.
Il verificatore controlla anche valori letterali (numeri, date, identificatori); un valore assente nella fonte non passa semplicemente perché la frase sembra plausibile. Una fase di decisione calibrata combina tutti questi segnali.
Questi modelli rappresentano la configurazione usata per la valutazione, non un vincolo di ProvenanceGuard. È possibile adattare il flusso a servizi cloud o a modelli ospitati, previa opportuna taratura.
Valutazione su un agente medico
Per testare ProvenanceGuard gli autori hanno raccolto 281 tracce reali generate da un agente medico che attingeva da record paziente, articoli di ricerca e altri strumenti. La medicina è un campo ideale perché un fatto proveniente da un record personale non è equiparabile a uno tratto da letteratura generale.
Su un campione di 40 risposte (361 affermazioni) valutate da esperti umani, i risultati sono stati:
- 139 affermazioni dovevano essere rifiutate; ProvenanceGuard le ha bloccate 138 volte, lasciandone passare solo una;
- 67 affermazioni considerate supportate sono state segnate per revisione o riparazione, in linea con la politica cauta adottata;
- Per le affermazioni con fonte identificabile, ProvenanceGuard ha individuato la fonte corretta nell’86 % dei casi.
Confronto con altri verificatori
Quattro verificatori di supporto tradizionali sono stati eseguiti sulle stesse affermazioni. ProvenanceGuard ha ottenuto il punteggio più alto nella metrica proposta dal paper, che bilancia capacità di bloccare affermazioni errate e riduzione dei falsi positivi. A differenza degli altri, ProvenanceGuard registra per ogni affermazione la specifica fonte controllata e la decisione associata.
Metriche binarie di supporto su un set di test hold‑out mostrano che ProvenanceGuard eguaglia o supera i baseline “source‑blind” nel bloccare affermazioni, aggiungendo però la preziosa informazione del verdetto per fonte.
Test su scenari più difficili
In un test più complesso con diverse fonti simili, ProvenanceGuard ha raggiunto un F1 di 0,846 nella decisione di bloccare affermazioni, ma ha identificato correttamente la fonte esatta solo nel 50,3 % dei casi. Distinguere tra fonti molto simili resta una sfida aperta.