Gouvernance de crise à états pour l'IA de santé comportementale
Nous avons construit un middleware de sécurité qui enveloppe un chatbot de santé comportementale existant et applique une politique d'escalade à états, transversale aux tours, dont l'équipe clinique est propriétaire. Il attrape la conversation qui s'aggrave, celle qu'un modérateur sans état rate structurellement, et il prouve chaque décision avec une piste d'audit chaînée par hachage, classable. La sécurité est un problème d'architecture, pas un problème de prompting.
0 contre 68
Réponses dangereuses livrées, protégé contre non protégé
Jeu doré étiqueté de 40 conversations
2 tours
Détection médiane plus précoce vs un modérateur sans état identique
Même classifieur et même porte ; la gestion d'état seule
0 / 29
Fausses escalades sur les tours bénins
Jeu doré étiqueté de 40 conversations
Une démo d'un schéma d'architecture de sécurité sur des données synthétiques. Pas un dispositif médical, pas un avis clinique, pas une intégration DSE.
Les chatbots de santé comportementale sont modérés un message à la fois. Une crise n'arrive pas un message à la fois.
La plupart des revues de sécurité d'un chatbot de santé mentale notent chaque réponse isolément. Chaque message est contrôlé, signalé ou validé, puis oublié. Cela fonctionne pour une seule ligne explicitement dangereuse. C'est structurellement aveugle à une conversation qui dérive, tour après tour, où aucun message isolé n'est assez alarmant pour être bloqué à lui seul.
Les échecs documentés suivent cette forme. Le chatbot « Tessa » de la NEDA a distribué des conseils de déficit calorique et de pince à plis cutanés avant d'être retiré (NEDA, 2023). Des cliniciens ont rapporté une psychose renforcée par chatbot chez des patients qui n'avaient jamais rencontré une personne pour les contredire (Dr Keith Sakata, UCSF, 2025). OpenAI a retiré une mise à jour de GPT-4o après qu'elle est devenue flagorneuse (OpenAI, 2025). Dans chaque cas, le modèle paraissait soutenant à un tour donné tandis que la trajectoire allait quelque part de dangereux.
Un modérateur sans état n'a aucun moyen de voir cette trajectoire, parce qu'il n'a aucune mémoire des tours précédents. Un meilleur modèle de base ne règle pas cela. Un chatbot parfait n'a toujours aucune idée de la politique d'escalade de votre plateforme, ne produit aucune piste d'audit que vous puissiez classer, et ne vous donne aucune porte déterministe à certifier. C'est pourquoi nous traitons ici la sécurité comme un problème d'architecture, et pourquoi la démo compare deux piles exécutant le modèle identique.
Les modèles consultatifs alimentent une porte déterministe. La porte prend la décision, et la décision est du code que vous pouvez lire.
Chaque tour patient passe par un pipeline fixe. Le message est dépouillé des PII et haché, un classifieur C-SSRS note sa sévérité selon la structure Columbia et renvoie un niveau, une confiance, et un ABSTAIN lorsqu'il ne peut pas justifier une sévérité. Un Trajectory Monitor à états accumule ensuite le risque d'un tour à l'autre. C'est la capacité centrale, et c'est la seule chose qu'un modérateur message par message n'a pas : il voit le schéma, pas la ligne isolée, et il produit un risque effectif et une bande (BENIGN, WATCH, CONCERN, HIGH, CRITICAL) avec une raison énoncée telle que « trouble alimentaire persistant, pente ascendante ».
Avant qu'une réponse candidate n'atteigne le patient, un panneau de vérificateurs multi-critiques l'inspecte : un critique de flagornerie et de ton, un détecteur de motifs interdits, et un vérificateur d'affirmations cliniques. Un critique qui signale force la porte à au moins un niveau minimum configuré, peu importe à quel point la réponse paraît douce.
La décision elle-même est une porte de politique déterministe à 5 niveaux, et c'est du Python, pas un LLM : L1 CONTINUE, L2 RESTRICT, L3 SUBSTITUTE_SCRIPT, L4 HUMAN_HANDOFF, L5 CRISIS_PROTOCOL. Lorsque la porte bloque une réponse, elle substitue l'un des scripts d'une bibliothèque groupée, rédigés par des cliniciens, par niveau et par famille, et enregistre l'id du script. Elle n'improvise jamais le langage de crise. Chaque tour est ensuite écrit comme une entrée sha256 chaînée à celle d'avant.
Les seuils, les minimums imposés par le vérificateur, et la bibliothèque de 12 scripts sont configurés par le comité de sécurité clinique sous la version de politique 2026.04-clinical-v1. L'ingénierie applique exactement cela, et ne le modifie pas. L'historique d'un patient, récupéré via le drapeau FHIR fictif, peut abaisser un seuil pour que la couche escalade plus tôt pour un patient plus vulnérable. Lorsque la confiance du classifieur est faible, il s'abstient et achemine vers un examen humain plutôt que de deviner une sévérité.
Le scénario héros par défaut est la dérive vers les troubles alimentaires : six tours, chacun individuellement une question de bien-être ordinaire.
La conversation s'ouvre sur des questions inoffensives concernant une alimentation plus saine et le comptage des calories. Un modérateur message par message n'a rien à bloquer, et la référence sans état dans la démo reste verte, lisant WATCH et « ne voit rien, pas de mémoire » tour après tour. La couche à états, qui observe la trajectoire, passe en CONCERN au tour 3. Elle bloque la réponse du chatbot et substitue un script d'ancrage rédigé par un clinicien qui oriente vers la ligne d'assistance NEDA. C'est deux tours avant le premier message explicitement dangereux.
Aux tours finaux, les messages deviennent explicitement dangereux. La pile non protégée à gauche livre la réponse nuisible, affichée barrée et étiquetée comme livrée au patient et dangereuse. À droite, le panneau de vérificateurs intercepte la réponse, attrape le ton flagorneur et le motif interdit, et la porte escalade vers un transfert humain L4, en alertant un membre de l'équipe de soins avec le contexte complet. Nous décrivons l'interception, pas le contenu nuisible lui-même.
Le résultat de session rend le delta concret, et il est attribuable à la gestion d'état seule parce que les deux piles ont utilisé le même classifieur et la même porte. La seule différence était la mémoire transversale aux tours.
Le banc d'essai note un jeu doré étiqueté de 40 conversations, soit 177 tours, généré de façon déterministe à partir de 8 conversations canoniques rédigées à la main plus des paraphrases préservant les étiquettes et des variantes de contrôle bénignes. Sur ce jeu, la pile protégée a livré 0 réponse dangereuse là où une pile non protégée en a livré 68. La détection s'est faite en médiane 2 tours plus tôt que le modérateur sans état identique, et sur 2 conversations le modérateur sans état n'a jamais escaladé du tout. Il y a eu 0 fausse escalade sur 29 tours bénins, l'exactitude du niveau C-SSRS était de 94,3 % stricte et de 97,2 % à un niveau près, et la couche s'est abstenue vers un humain une fois. Ces chiffres sont limités à ce jeu doré synthétique, pas une garantie en conditions réelles.
Chaque conversation rend un Rapport d'incident de sécurité. Chaque tour est une entrée sha256 chaînée à la précédente, donc modifier n'importe quel champ casse chaque hachage ultérieur et la falsification est visible. Le rapport montre le niveau du classifieur, le risque transversal aux tours, les constats du vérificateur, la décision de la porte et sa raison, l'id du script substitué, et la chaîne de hachage, avec la chaîne vérifiée intacte. Il est conçu pour être classé : preuves de surveillance post-commercialisation FDA, défense en contentieux, souscription d'assurance.
Même tâche, une différence structurelle : la mémoire d'un tour à l'autre et une politique dont quelqu'un peut être propriétaire.
| Capacité | Modérateur sans état message par message | Couche de sécurité IA clinique |
|---|---|---|
| Note un message isolé | Oui | Oui |
| Voit la trajectoire transversale aux tours | Non, il n'a pas de mémoire | Oui, un accumulateur de risque à états |
| Inspecte la réponse candidate avant livraison | Non | Oui, un panneau de vérificateurs multi-critiques |
| Qui possède la politique d'escalade | Implicite dans le modèle ou le prompt | L'équipe clinique, une porte à 5 niveaux |
| Qui prend la décision | Un modèle ou un prompt | Du code déterministe hors du LLM |
| Langage de crise lorsqu'il bloque | Généré par le modèle, improvisé | Bibliothèque de scripts approuvés par des cliniciens |
| Audit conçu pour être classé | Aucun | Rapport d'incident de sécurité chaîné par hachage |
Non. C'est un middleware qui enveloppe le chatbot existant et ne change jamais le modèle. Il ajoute un accumulateur de risque à états transversal aux tours, un panneau de vérificateurs multi-critiques, et une porte d'escalade déterministe autour du modèle, et il substitue un script rédigé par un clinicien lorsqu'il bloque une réponse. L'enjeu est une gouvernance à états et un reçu classable, pas un modèle différent.
Un modérateur message par message note chaque réponse isolément et n'a pas de mémoire, donc il rate une crise qui se construit d'un tour à l'autre. Sur un jeu doré étiqueté de 40 conversations, la couche à états a escaladé une médiane de 2 tours plus tôt qu'un modérateur sans état identique qui utilisait le même classifieur et la même porte. Sur deux de ces conversations, le modérateur sans état n'a jamais escaladé du tout.
Non. Le classifieur et le panneau de vérificateurs sont consultatifs, mais la décision d'escalade à 5 niveaux et l'audit sont du Python déterministe hors de tout LLM. Un réviseur peut lire la porte ; il ne peut pas contre-interroger un prompt. Les agents conseillent, le code décide.
Chaque tour est une entrée sha256 chaînée à celle d'avant, donc modifier n'importe quel champ casse chaque hachage ultérieur et la falsification est visible. Le résultat est un Rapport d'incident de sécurité classable en JSON et HTML, cadré pour la surveillance post-commercialisation FDA, la défense en contentieux et la souscription d'assurance. Dans la démo, le rapport montre la chaîne intacte.
Un chatbot parfait n'a toujours aucune idée de la politique d'escalade de votre plateforme, ne produit aucune piste d'audit, ne vous donne aucune porte déterministe à certifier, et n'offre aucune défense lorsqu'il est jailbreaké. La valeur durable est la gouvernance à états plus le reçu classable, pas un taux d'erreur de modèle plus bas. C'est pourquoi la démo compare un classifieur et une porte identiques et attribue l'amélioration à la gestion d'état seule.
Non. C'est une démo d'un schéma d'architecture de sécurité, pas un dispositif médical, et ce n'est pas autorisé par la FDA ni certifié HIPAA. Chaque conversation est synthétique, l'adaptateur FHIR est un stub, et le classifieur est un classifieur lexical déterministe qui tient lieu d'un modèle de production in-VPC. Tous les chiffres de preuve sont limités à un jeu doré étiqueté de 40 conversations de données synthétiques.
La recherche derrière cette démo — l'architecture, la conception de la vérification, et le plan d'entreprise.
Une gouvernance à états, une politique dont l'équipe clinique est propriétaire, et un audit que vous pouvez classer.
Si votre équipe cherche comment rendre un chatbot de santé comportementale défendable pour un examen d'entreprise, de payeur ou réglementaire, nous aimerions sincèrement entendre comment vous y réfléchissez. Le problème est à l'échelle du secteur et les réponses le seront aussi.