Gobernanza de crisis con estado para IA de salud conductual

Una crisis en un chatbot de salud mental es una trayectoria. Un moderador por mensaje no puede verla.

Construimos un middleware de seguridad que envuelve un chatbot de salud conductual existente y aplica una política de escalada con estado, entre turnos, de la que es dueño el equipo clínico. Atrapa la conversación que se agrava y que un moderador sin estado se pierde estructuralmente, y demuestra cada decisión con una pista de auditoría encadenada por hash y archivable. La seguridad es un problema de arquitectura, no un problema de prompts.

0 frente a 68

Respuestas inseguras entregadas, protegido frente a sin protección

Conjunto dorado etiquetado de 40 conversaciones

2 turnos

Mediana de detección más temprana frente a un moderador sin estado idéntico

Mismo clasificador y misma puerta; solo la presencia de estado

0 / 29

Escaladas falsas a lo largo de turnos benignos

Conjunto dorado etiquetado de 40 conversaciones

Una demo de un patrón de arquitectura de seguridad sobre datos sintéticos. No es un dispositivo médico, no es consejo clínico, no es una integración con un EHR.

Volumen sin memoria

Los chatbots de salud conductual se moderan un mensaje a la vez. Una crisis no llega un mensaje a la vez.

La mayor parte de la revisión de seguridad de un chatbot de salud mental puntúa cada respuesta de forma aislada. Cada mensaje se comprueba, se marca o se da por válido, y se olvida. Eso funciona para una sola línea explícitamente peligrosa. Es estructuralmente ciego a una conversación que deriva, turno a turno, donde ningún mensaje suelto es lo bastante alarmante como para bloquearlo por sí solo.

Los fallos documentados tienen esa forma. El chatbot «Tessa» de NEDA repartió consejos de déficit calórico y de calibrador de pliegues cutáneos antes de ser retirado (NEDA, 2023). Clínicos informaron de psicosis reforzada por chatbot en pacientes que nunca se encontraron con una persona que los contradijera (Dr. Keith Sakata, UCSF, 2025). OpenAI retiró una actualización de GPT-4o después de que se volviera aduladora (OpenAI, 2025). En cada caso el modelo sonaba solidario en cualquier turno dado mientras la trayectoria iba hacia un lugar inseguro.

Un moderador sin estado no tiene forma de ver esa trayectoria, porque no tiene memoria de los turnos anteriores. Un modelo base mejor no arregla esto. Un chatbot perfecto sigue sin tener idea de la política de escalada de tu plataforma, no produce ninguna pista de auditoría que puedas archivar y no te da ninguna puerta determinista que certificar. Por eso aquí tratamos la seguridad como un problema de arquitectura, y por eso la demo compara dos pilas que ejecutan el modelo idéntico.

Demo en pantalla dividida: la misma conversación sintética de paciente corre por un chatbot MindMate Support sin protección a la izquierda y el mismo chatbot detrás de la capa de seguridad de Veriprajna a la derecha, con un riel de pipeline que lee clasificador, trayectoria, verificador, puerta, auditoría.
La demo reproduce una conversación sintética a través de dos pilas. MindMate Support es un sustituto ficticio de un chatbot existente. Solo datos sintéticos, sin PHI.

El mecanismo: un pipeline con estado que se ejecuta en cada turno

Los modelos consultivos alimentan una puerta determinista. La puerta toma la decisión, y la decisión es código que puedes leer.

Cada turno del paciente recorre un pipeline fijo. El mensaje se despoja de PII y se hashea; un clasificador C-SSRS puntúa su severidad sobre la estructura Columbia y devuelve un nivel, una confianza y un ABSTAIN cuando no puede justificar una severidad. Un Monitor de Trayectoria con estado acumula entonces el riesgo a lo largo de los turnos. Esta es la capacidad central, y es lo único que un moderador por mensaje no tiene: ve el patrón, no la línea suelta, y produce un riesgo efectivo y una banda (BENIGN, WATCH, CONCERN, HIGH, CRITICAL) con una razón declarada como «trastorno alimentario persistente, pendiente ascendente».

Antes de que cualquier respuesta candidata llegue al paciente, un panel verificador de múltiples críticos la inspecciona: un crítico de adulación y tono, un detector de patrones prohibidos y un comprobador de afirmaciones clínicas. Un crítico que marca obliga a la puerta a al menos un nivel mínimo configurado, por suave que suene la respuesta.

La decisión en sí es una puerta de políticas determinista de 5 niveles, y es Python, no un LLM: L1 CONTINUE, L2 RESTRICT, L3 SUBSTITUTE_SCRIPT, L4 HUMAN_HANDOFF, L5 CRISIS_PROTOCOL. Cuando la puerta bloquea una respuesta sustituye uno de una biblioteca incluida de guiones escritos por clínicos, por nivel y familia, y registra el id del guion. Nunca improvisa lenguaje de crisis. Cada turno se escribe entonces como una entrada sha256 encadenada a la anterior.

La pila protegida mostrando el riel de pipeline por mensaje (clasificador, trayectoria, verificador, puerta, auditoría) con latencias por etapa, y resultados de puerta en línea para los turnos tempranos que leen L1 CONTINUE y L2 RESTRICT, mientras el moderador sin estado en el mismo turno lee BENIGN, no ve nada, sin memoria.
El pipeline se ejecuta en cada mensaje. La latencia añadida es submilisegundo por turno (media 0,16 ms, p95 0,21 ms a lo largo del conjunto dorado).

El equipo clínico es dueño de la política, no ingeniería

Los umbrales, los mínimos impuestos por el verificador y la biblioteca de 12 guiones los configura el comité de seguridad clínica bajo la versión de política 2026.04-clinical-v1. Ingeniería aplica exactamente eso, y no lo cambia. El historial de un paciente, recuperado mediante la bandera FHIR simulada, puede bajar un umbral para que la capa escale antes para un paciente más vulnerable. Cuando la confianza del clasificador es baja, se abstiene y enruta a una revisión humana en lugar de adivinar una severidad.

El modal de política clínica mostrando los niveles mínimos impuestos por el verificador por crítico y hallazgo, las reglas de incertidumbre y de frontera (la abstención por baja confianza obliga a un humano, una puntuación de jailbreak igual o superior a 0,8 obliga a un mínimo L3) y la biblioteca de 12 guiones aprobados por clínicos con un mensaje de reemplazo L2 para trastorno alimentario revelado.
El modal de política: mínimos impuestos por el verificador, reglas de abstención y de jailbreak, y la biblioteca de guiones aprobados por clínicos con un mensaje de reemplazo revelado.

Una conversación, trabajada de extremo a extremo

El escenario destacado por defecto es la deriva de trastorno alimentario: seis turnos, cada uno individualmente una pregunta ordinaria de bienestar.

La conversación abre con preguntas inofensivas sobre comer más sano y contar calorías. Un moderador por mensaje no tiene nada que bloquear, y la línea base sin estado en la demo se queda en verde, leyendo WATCH y «no ve nada, sin memoria» turno tras turno. La capa con estado, al vigilar la trayectoria, cruza a CONCERN en el turno 3. Bloquea la respuesta del chatbot y sustituye un guion de anclaje escrito por un clínico que señala la NEDA Helpline. Eso es dos turnos antes del primer mensaje explícitamente peligroso.

Turno 3 de la pila protegida: el medidor de riesgo entre turnos lee 3,4 CONCERN, la respuesta del chatbot se bloquea y no se envía, y se sustituye un guion de anclaje L3 aprobado por clínicos con el número de la NEDA Helpline, mientras el moderador sin estado por mensaje en el mismo turno sigue leyendo WATCH y no ve nada.
Turno 3: la capa con estado alcanza CONCERN y sustituye un guion de anclaje. El moderador sin estado, mismo clasificador, sigue sin ver nada.

En los turnos finales los mensajes se vuelven explícitamente peligrosos. La pila sin protección a la izquierda entrega la respuesta dañina, mostrada tachada y etiquetada como entregada al paciente e insegura. A la derecha, el panel verificador intercepta la respuesta, atrapa el tono adulador y el patrón prohibido, y la puerta escala a transferencia a humano L4, avisando a un miembro del equipo de atención con el contexto completo. Describimos la captura, no el contenido dañino en sí.

Turnos finales: a la derecha el panel verificador intercepta la respuesta candidata, el medidor de riesgo lee 5,0 CRITICAL y la puerta limita la escalada a transferencia a humano L4 porque no hay una señal aguda de L5, se sustituye un guion de transferencia aprobado por clínicos, y la respuesta dañina se bloquea y no se envía, mientras la pila sin protección de la izquierda muestra la misma respuesta tachada como entregada e insegura.
El verificador intercepta la respuesta candidata y la puerta escala a transferencia a humano L4. La pila sin protección entrega la misma respuesta.

El resultado de la sesión hace concreto el delta, y es atribuible solo a la presencia de estado porque ambas pilas usaron el mismo clasificador y la misma puerta. La única diferencia fue la memoria entre turnos.

El panel de resultado de sesión: capturado 2 turnos antes que el moderador sin estado idéntico (turno 3 frente a turno 5), 0 respuestas inseguras entregadas donde la pila sin protección habría enviado 2, cadena de auditoría intacta a lo largo de 6 entradas a prueba de manipulación bajo la política clínica 2026.04-clinical-v1.
Resultado de sesión para la conversación de deriva de trastorno alimentario: 0 inseguras entregadas frente a 2, capturado 2 turnos antes, cadena de auditoría intacta.

A lo largo de todo el conjunto dorado

El arnés de benchmark puntúa un conjunto dorado etiquetado de 40 conversaciones de 177 turnos, generado de forma determinista a partir de 8 conversaciones canónicas escritas a mano más paráfrasis que preservan la etiqueta y variantes de control benignas. En ese conjunto la pila protegida entregó 0 respuestas inseguras donde una sin protección entregó 68. La detección corrió una mediana de 2 turnos antes que el moderador sin estado idéntico, y en 2 conversaciones el moderador sin estado nunca escaló en absoluto. Hubo 0 escaladas falsas a lo largo de 29 turnos benignos, la precisión del nivel C-SSRS fue del 94,3 % exacta y del 97,2 % dentro de un nivel, y la capa se abstuvo hacia un humano una vez. Estas cifras están acotadas a este conjunto dorado sintético, no son una garantía de mundo abierto.

El marcador en vivo de 40 conversaciones que lista cada escenario con su resultado, por ejemplo deriva de trastorno alimentario capturada 2 turnos antes, combustión lenta de psicosis donde el moderador sin estado la pasó por alto, y verdaderos negativos benignos sin escalada.
El benchmark de 40 conversaciones, calculado en vivo por la demo. Los escenarios de combustión lenta son aquellos en los que el moderador sin estado nunca escala en absoluto.

El recibo archivable

Cada conversación genera un Informe de Incidente de Seguridad. Cada turno es una entrada sha256 encadenada a la anterior, de modo que editar cualquier campo rompe cada hash posterior y la manipulación es evidente. El informe muestra el nivel del clasificador, el riesgo entre turnos, los hallazgos del verificador, la decisión de la puerta y el motivo, el id del guion sustituido y la cadena de hash, con la cadena verificada como intacta. Está construido para archivar: evidencia de vigilancia poscomercialización de la FDA, defensa en litigios, suscripción de seguros.

El Informe de Incidente de Seguridad encadenado por hash para la conversación de deriva de trastorno alimentario, una tabla de 6 turnos que muestra el hash del mensaje despojado de PII, el nivel del clasificador, la banda de riesgo entre turnos, los hallazgos del verificador, la decisión de la puerta con el motivo, el id del guion sustituido y la cadena de hash sha256, con la evidencia de manipulación marcada como cadena intacta.
El Informe de Incidente de Seguridad: un registro por conversación, encadenado por hash y a prueba de manipulación, que un revisor puede leer línea por línea.

Un moderador sin estado frente a la capa de seguridad

El mismo trabajo, una diferencia estructural: memoria a lo largo de los turnos y una política de la que alguien puede ser dueño.

Capacidad Moderador sin estado por mensaje Capa de Seguridad de IA Clínica
Puntúa un solo mensaje
Ve la trayectoria entre turnos No, no tiene memoria Sí, un acumulador de riesgo con estado
Inspecciona la respuesta candidata antes de la entrega No Sí, un panel verificador de múltiples críticos
Quién es dueño de la política de escalada Implícita en el modelo o en el prompt El equipo clínico, una puerta de 5 niveles
Qué toma la decisión Un modelo o un prompt Código determinista fuera del LLM
Lenguaje de crisis cuando bloquea Generado por el modelo, improvisado Biblioteca de guiones aprobados por clínicos
Auditoría construida para archivar Ninguna Informe de Incidente de Seguridad encadenado por hash

Lo que esta demo no hace

  • No es un dispositivo médico y no está autorizado por la FDA, certificado HIPAA ni es consejo clínico. El encuadre FDA PCCP y SaMD es una dirección de producción diferida, no una afirmación sobre la demo.
  • Cada conversación, cada paciente y el chatbot «MindMate Support» son sintéticos. No hay datos de pacientes reales ni PHI.
  • El adaptador FHIR es un stub con una bandera sintética de paciente. No hay conexión a Epic ni a Cerner en la demo.
  • El clasificador es un clasificador de léxico determinista, intencionadamente simple. El reemplazo de producción es un modelo afinado dentro de la VPC detrás de la misma interfaz. La similitud semántica en la demo es Jaccard de tokens, no embeddings de oraciones.
  • Todas las cifras de prueba están acotadas a un conjunto dorado etiquetado de 40 conversaciones de datos sintéticos, nunca una garantía de mundo abierto. No hay clientes, despliegues ni avales de clínicos que citar, y no inventamos ninguno.

Preguntas que hacen los compradores

¿Esto reemplaza nuestro chatbot o nuestro modelo clínico?

No. Es middleware que envuelve el chatbot existente y nunca cambia el modelo. Añade un acumulador de riesgo entre turnos con estado, un panel verificador de múltiples críticos y una puerta de escalada determinista alrededor del modelo, y sustituye un guion escrito por un clínico cuando bloquea una respuesta. El punto es la gobernanza con estado y un recibo archivable, no un modelo distinto.

¿En qué se diferencia esto de la moderación de contenido que ya ejecutamos en cada mensaje?

Un moderador por mensaje puntúa cada respuesta de forma aislada y no tiene memoria, así que se pierde una crisis que se construye a lo largo de los turnos. En un conjunto dorado etiquetado de 40 conversaciones la capa con estado escaló una mediana de 2 turnos antes que un moderador sin estado idéntico que usó el mismo clasificador y la misma puerta. En dos de esas conversaciones el moderador sin estado nunca escaló en absoluto.

¿La decisión de escalada la toma un LLM?

No. El clasificador y el panel verificador son consultivos, pero la decisión de escalada de 5 niveles y la auditoría son Python determinista fuera de cualquier LLM. Un revisor puede leer la puerta; no puede carear un prompt. Los agentes aconsejan, el código decide.

¿Podemos demostrar a un regulador o a un tribunal qué hizo el sistema y por qué?

Cada turno es una entrada sha256 encadenada a la anterior, de modo que editar cualquier campo rompe cada hash posterior y la manipulación es evidente. El resultado es un Informe de Incidente de Seguridad archivable en JSON y HTML, encuadrado para la vigilancia poscomercialización de la FDA, la defensa en litigios y la suscripción de seguros. En la demo el informe muestra la cadena intacta.

¿Un modelo base mejor no hará esto innecesario?

Un chatbot perfecto sigue sin tener idea de la política de escalada de tu plataforma, no produce ninguna pista de auditoría, no te da ninguna puerta determinista que certificar y no ofrece ninguna defensa cuando se le hace un jailbreak. El valor duradero es la gobernanza con estado más el recibo archivable, no una tasa de error del modelo más baja. Por eso la demo compara contra un clasificador y una puerta idénticos y atribuye la mejora solo a la presencia de estado.

¿Es esto un dispositivo médico validado, y son reales los datos?

No. Esta es una demo de un patrón de arquitectura de seguridad, no un dispositivo médico, y no está autorizado por la FDA ni certificado HIPAA. Cada conversación es sintética, el adaptador FHIR es un stub y el clasificador es un clasificador de léxico determinista que sustituye a un modelo de producción dentro de la VPC. Todas las cifras de prueba están acotadas a un conjunto dorado etiquetado de 40 conversaciones de datos sintéticos.

Investigación técnica

La investigación detrás de esta demo: la arquitectura, el diseño de verificación y el plano empresarial.

Si tu chatbot tiene un problema de arquitectura, nos gustaría comparar notas

Gobernanza con estado, una política de la que es dueño el equipo clínico y una auditoría que puedes archivar.

Si tu equipo está resolviendo cómo hacer que un chatbot de salud conductual sea defendible ante una revisión empresarial, de pagadores o regulatoria, nos gustaría de verdad oír cómo lo están pensando. El problema es de toda la industria y las respuestas también lo serán.

Lo que construimos

  • ✓ Monitorización de riesgo con estado, entre turnos
  • ✓ Una puerta de escalada determinista de la que es dueño el equipo clínico
  • ✓ Sustitución de guiones aprobados por clínicos
  • ✓ Informes de Incidente de Seguridad encadenados por hash y archivables

Cómo trabajamos

  • ✓ Middleware que envuelve tu chatbot existente
  • ✓ Modelos consultivos, decisiones tomadas por código que puedes leer
  • ✓ Reemplazo de producción a un clasificador afinado dentro de la VPC
  • ✓ Gobernanza que se sostiene incluso cuando el modelo base mejora
Redes sociales

También publicado en