Governance stateful delle crisi per l'IA nella salute comportamentale
Abbiamo costruito un middleware di sicurezza che avvolge un chatbot di salute comportamentale esistente e applica una policy di escalation stateful, tra i turni, di proprietà del team clinico. Intercetta la conversazione in escalation che un moderatore stateless strutturalmente non vede, e prova ogni decisione con una traccia di audit concatenata tramite hash e archiviabile. La sicurezza è un problema di architettura, non un problema di prompting.
0 vs 68
Risposte non sicure consegnate, protetto vs non protetto
Golden set etichettato di 40 conversazioni
2 turni
Rilevamento mediano più precoce rispetto a un moderatore stateless identico
Stesso classificatore e stesso gate; solo la statefulness
0 / 29
False escalation sui turni benigni
Golden set etichettato di 40 conversazioni
Una demo di un pattern di architettura di sicurezza su dati sintetici. Non è un dispositivo medico, non è un consiglio clinico, non è un'integrazione EHR.
I chatbot di salute comportamentale vengono moderati un messaggio alla volta. Una crisi non arriva un messaggio alla volta.
La maggior parte della revisione di sicurezza su un chatbot di salute mentale valuta ogni risposta in isolamento. Ogni messaggio viene controllato, segnalato o lasciato passare, e dimenticato. Funziona per una singola riga esplicitamente pericolosa. È strutturalmente cieca a una conversazione che deriva, turno dopo turno, in cui nessun singolo messaggio è abbastanza allarmante da essere bloccato da solo.
I fallimenti documentati hanno quella forma. Il chatbot "Tessa" di NEDA ha fornito consigli su deficit calorico e plicometro prima di essere ritirato (NEDA, 2023). I clinici hanno segnalato psicosi rinforzata dal chatbot in pazienti che non hanno mai incontrato una persona che li contrastasse (dott. Keith Sakata, UCSF, 2025). OpenAI ha ritirato un aggiornamento di GPT-4o dopo che era diventato piaggioso (OpenAI, 2025). In ciascun caso il modello suonava di supporto in ogni singolo turno, mentre la traiettoria andava da qualche parte non sicura.
Un moderatore stateless non ha modo di vedere quella traiettoria, perché non ha memoria dei turni precedenti. Un modello di base migliore non risolve questo. Un chatbot perfetto non ha ancora idea della policy di escalation della tua piattaforma, non produce alcuna traccia di audit che tu possa archiviare e non ti dà alcun gate deterministico da certificare. Ecco perché qui trattiamo la sicurezza come un problema di architettura, ed ecco perché la demo confronta due stack che eseguono il modello identico.
I modelli consultivi alimentano un gate deterministico. Il gate prende la decisione, e la decisione è codice che puoi leggere.
Ogni turno del paziente passa attraverso una pipeline fissa. Il messaggio viene privato del PII e sottoposto a hash, un classificatore C-SSRS ne valuta la severità sulla struttura Columbia e restituisce un livello, una confidenza e un ABSTAIN quando non può giustificare una severità. Un Trajectory Monitor stateful accumula quindi il rischio tra i turni. Questa è la capacità centrale, ed è l'unica cosa che un moderatore per-messaggio non ha: vede lo schema, non la singola riga, e produce un rischio effettivo e una banda (BENIGN, WATCH, CONCERN, HIGH, CRITICAL) con una ragione dichiarata come "disturbo alimentare persistente, pendenza in aumento."
Prima che qualsiasi risposta candidata raggiunga il paziente, un verifier panel multi-critico la ispeziona: un critico di piaggeria e tono, un matcher di pattern vietati e un verificatore di affermazioni cliniche. Un critico che segnala forza il gate almeno a un livello minimo configurato, per quanto gentile possa suonare la risposta.
La decisione stessa è un policy gate deterministico a 5 livelli, ed è Python, non un LLM: L1 CONTINUE, L2 RESTRICT, L3 SUBSTITUTE_SCRIPT, L4 HUMAN_HANDOFF, L5 CRISIS_PROTOCOL. Quando il gate blocca una risposta sostituisce uno script da una libreria in bundle di script scritti da clinici, per livello e famiglia, e registra l'id dello script. Non improvvisa mai il linguaggio di crisi. Ogni turno viene quindi scritto come una voce sha256 concatenata a quella precedente.
Le soglie, i minimi imposti dal verifier e la libreria di 12 script sono configurati dal comitato di sicurezza clinica sotto la versione di policy 2026.04-clinical-v1. L'engineering applica esattamente quello, e non lo modifica. Lo storico di un paziente, recuperato tramite il flag FHIR stubbato, può abbassare una soglia così che lo strato scali prima per un paziente più vulnerabile. Quando la confidenza del classificatore è bassa, si astiene e instrada a una revisione umana anziché indovinare una severità.
Lo scenario in evidenza predefinito è la deriva verso il disturbo alimentare: sei turni, ciascuno individualmente una domanda ordinaria di benessere.
La conversazione si apre con domande innocue su mangiare in modo più sano e contare le calorie. Un moderatore per-messaggio non ha nulla da bloccare, e la baseline stateless nella demo resta verde, leggendo WATCH e "non vede nulla, nessuna memoria" turno dopo turno. Lo strato stateful, osservando la traiettoria, entra in CONCERN al turno 3. Blocca la risposta del chatbot e sostituisce uno script di grounding scritto da un clinico che indica la NEDA Helpline. Sono due turni prima del primo messaggio esplicitamente pericoloso.
Nei turni finali i messaggi diventano esplicitamente pericolosi. Lo stack non protetto a sinistra consegna la risposta dannosa, mostrata barrata e etichettata come consegnata al paziente e non sicura. A destra, il verifier panel intercetta la risposta, coglie il tono piaggioso e lo schema vietato, e il gate scala a L4 HUMAN_HANDOFF, eseguendo il paging di un membro del care-team con il contesto completo. Descriviamo l'intercettazione, non il contenuto dannoso in sé.
Il risultato della sessione rende concreto il delta, ed è attribuibile alla sola statefulness perché entrambi gli stack hanno usato lo stesso classificatore e lo stesso gate. L'unica differenza era la memoria tra i turni.
L'harness di benchmark valuta un golden set etichettato di 40 conversazioni di 177 turni, generato deterministicamente da 8 conversazioni canoniche scritte a mano più parafrasi che preservano le etichette e varianti di controllo benigne. Su quel set lo stack protetto ha consegnato 0 risposte non sicure dove uno non protetto ne ha consegnate 68. Il rilevamento è avvenuto con una mediana di 2 turni prima rispetto al moderatore stateless identico, e su 2 conversazioni il moderatore stateless non ha mai scalato affatto. Ci sono state 0 false escalation su 29 turni benigni, l'accuratezza del livello C-SSRS è stata del 94.3% esatta e del 97.2% entro un livello, e lo strato si è astenuto verso un umano una volta. Questi numeri sono circoscritti a questo golden set sintetico, non una garanzia open-world.
Ogni conversazione genera un Safety Incident Report. Ogni turno è una voce sha256 concatenata a quella precedente, così modificare qualsiasi campo rompe ogni hash successivo e la manomissione è evidente. Il report mostra il livello del classificatore, il rischio tra i turni, i finding del verifier, la decisione del gate e la ragione, l'id dello script sostituito e la catena di hash, con la catena verificata intatta. È costruito per essere archiviato: evidenza di monitoraggio postmarket FDA, difesa in contenzioso, sottoscrizione assicurativa.
Stesso lavoro, una differenza strutturale: memoria tra i turni e una policy di cui qualcuno può essere proprietario.
| Capacità | Moderatore stateless per-messaggio | Clinical AI Safety Layer |
|---|---|---|
| Valuta un singolo messaggio | Sì | Sì |
| Vede la traiettoria tra i turni | No, non ha memoria | Sì, un accumulatore di rischio stateful |
| Ispeziona la risposta candidata prima della consegna | No | Sì, un verifier panel multi-critico |
| Chi possiede la policy di escalation | Implicita nel modello o nel prompt | Il team clinico, un gate a 5 livelli |
| Che cosa prende la decisione | Un modello o un prompt | Codice deterministico esterno all'LLM |
| Linguaggio di crisi quando blocca | Generato dal modello, improvvisato | Libreria di script approvati dal clinico |
| Audit costruito per essere archiviato | Nessuno | Safety Incident Report concatenato tramite hash |
No. È middleware che avvolge il chatbot esistente e non cambia mai il modello. Aggiunge un accumulatore di rischio stateful tra i turni, un verifier panel multi-critico e un gate di escalation deterministico intorno al modello, e sostituisce uno script scritto da un clinico quando blocca una risposta. Il punto è la governance stateful e una ricevuta archiviabile, non un modello diverso.
Un moderatore per-messaggio valuta ogni risposta in isolamento e non ha memoria, quindi manca una crisi che si costruisce tra i turni. Su un golden set etichettato di 40 conversazioni lo strato stateful ha scalato con una mediana di 2 turni prima rispetto a un moderatore stateless identico che usava lo stesso classificatore e lo stesso gate. Su due di quelle conversazioni il moderatore stateless non ha mai scalato affatto.
No. Il classificatore e il verifier panel sono consultivi, ma la decisione di escalation a 5 livelli e l'audit sono Python deterministico esterno a qualsiasi LLM. Un reviewer può leggere il gate; non può sottoporre a controinterrogatorio un prompt. Gli agenti consigliano, il codice decide.
Ogni turno è una voce sha256 concatenata a quella precedente, così modificare qualsiasi campo rompe ogni hash successivo e la manomissione è evidente. Il risultato è un Safety Incident Report archiviabile in JSON e HTML, inquadrato per il monitoraggio postmarket FDA, la difesa in contenzioso e la sottoscrizione assicurativa. Nella demo il report mostra la catena intatta.
Un chatbot perfetto non ha ancora idea della policy di escalation della tua piattaforma, non produce alcuna traccia di audit, non ti dà alcun gate deterministico da certificare e non offre alcuna difesa quando viene jailbroken. Il valore durevole è la governance stateful più la ricevuta archiviabile, non un tasso di errore del modello più basso. Ecco perché la demo confronta contro un classificatore e un gate identici e attribuisce il miglioramento alla sola statefulness.
No. Questa è una demo di un pattern di architettura di sicurezza, non un dispositivo medico, e non è FDA-cleared né HIPAA-certified. Ogni conversazione è sintetica, l'adapter FHIR è uno stub, e il classificatore è un classificatore lessicale deterministico che sta al posto di un modello di produzione in-VPC. Tutti i numeri di prova sono circoscritti a un golden set etichettato di 40 conversazioni di dati sintetici.
La ricerca dietro questa demo — l'architettura, il design di verifica e il blueprint enterprise.
Soluzione completa
Esplora la soluzione Clinical AI Safety for Mental Health Platforms →Governance stateful, una policy di proprietà del team clinico e un audit che puoi archiviare.
Se il tuo team sta cercando di capire come rendere un chatbot di salute comportamentale difendibile per una revisione enterprise, di payer o normativa, ci piacerebbe davvero sentire come ci state pensando. Il problema è di settore e anche le risposte lo saranno.