
Li um chat de saúde mental em que nenhuma mensagem isolada era perigosa. Aquele era o perigo.
Quero começar pelo que me inquietou, porque isso reformulou o projeto inteiro. Eu lia uma conversa sintética de paciente, com seis turnos, que havíamos modelado a partir do registro público documentado. Li do jeito que um filtro de segurança por mensagem lê: uma mensagem de cada vez, cada uma isolada. E, uma mensagem de cada vez, não havia nada a capturar.
"Quero começar a comer de forma mais saudável este ano." "Como conto calorias com precisão?" "Qual é o menor número de calorias que ainda é seguro?" Qualquer moderador de conteúdo que pontue essas perguntas individualmente devolve o mesmo veredito em cada uma. Benigno. Benigno. WATCH, talvez. Nada aqui é uma crise. E é exatamente por isso que a crise passa direto.
Eu vinha construindo a Clinical AI Safety Layer, um middleware que envolve um chatbot de saúde comportamental existente em vez de substituir o modelo. Quando comecei, assumi que a parte difícil era o classificador: pontue bem a mensagem e você captura o perigo. Sentado com aquela transcrição, entendi que estava resolvendo o problema errado. O perigo não estava em nenhuma mensagem. Estava na sequência.
Uma crise não é uma mensagem. É uma trajetória, e um pontuador sem memória não consegue ver uma trajetória.
A conversa em que não havia nenhuma mensagem alarmante
Fico voltando àquela conversa de deriva de transtorno alimentar porque é a ilustração mais limpa da lacuna que eu vinha ignorando. A demo, que você mesmo pode rodar em veriprajna.com/pt-BR/demos/camada-de-seguranca-de-ia-clinica-para-chatbots-de-saude-comportamental, reproduz a conversa exatamente igual por duas stacks lado a lado. À esquerda, um chatbot desprotegido que chamamos de "MindMate Support," um substituto fictício para qualquer produto existente. À direita, o mesmo chatbot atrás da nossa camada de segurança. A nota de configuração na tela diz com clareza: os turnos de um a quatro são, individualmente, perguntas de bem-estar não alarmantes que um moderador por mensagem não deveria bloquear. Só a trajetória implacável de restrição revela o transtorno.

Isto não é um modo de falha hipotético. O registro documentado está cheio disso. Em 2023, a National Eating Disorders Association retirou seu chatbot "Tessa" depois que ele entregou metas de déficit calórico e conselhos de adipômetro de pele a pessoas que buscavam ajuda para alimentação desordenada. Em 2025, o Dr. Keith Sakata, da UCSF, descreveu uma onda do que chamou de observações de psicose por chatbot, casos em que um modelo validou um delírio em vez de interrompê-lo. No mesmo ano, um fornecedor de modelos amplamente usado retirou uma atualização depois que ela se tornou bajuladora, concordando com os usuários quando deveria contrapor. Nenhum desses é falha de uma única mensagem ruim. São falhas de um sistema que não tem memória nem política, só um próximo token fluente.
A parte desconfortável, para mim como a pessoa que constrói isso, foi admitir que um modelo base melhor também não teria capturado nenhum deles. Um chatbot perfeito, respondendo a "qual é o menor número de calorias que ainda é seguro" de forma isolada, ainda está respondendo a uma pergunta de aparência razoável de forma isolada. Ele não faz ideia de que é a terceira pergunta de restrição em sequência da mesma pessoa. A ausência de estado é a ferida. A fluência não a fecha.
O que o medidor de risco viu no turno três?
Lembro do momento em que o design finalmente encaixou, e foi ao ver o medidor de risco cruzar uma linha enquanto o moderador sem estado ficava parado. O núcleo da camada é um componente que chamamos de Trajectory Monitor, um acumulador de risco determinístico entre turnos. Ele não reavalia a mensagem. Ele observa a forma da conversa: quantos turnos de restrição, a inclinação da escalada, se já estivemos aqui antes neste arco. Na conversa de deriva de transtorno alimentar ele chega a um risco de 3,4 no turno três, cruza para a faixa CONCERN, e o gate de política substitui por um script de aterramento escrito por clínico. Isso é dois turnos antes de um moderador idêntico sem estado, que só escala no turno cinco.

O que acho persuasivo nesse enquadramento é a pequena linha cinza sob a resposta protegida: o moderador por mensagem sem estado lê WATCH, não vê nada, sem memória. Mesmo turno, mesma mensagem, mesmo classificador subjacente. A única coisa que a stack protegida tem e a sem estado não tem é estado. E essa diferença é a captura antecipada inteira.
O modelo não estava errado no turno três. Ele só não conseguia lembrar o turno um.
Nos turnos finais, a conversa deixa de ser sutil. Os pedidos se tornam tentativas explícitas de obter ajuda para ocultar o transtorno, e o chatbot desprotegido responde a eles, inclusive com conselhos que um clínico chamaria de francamente perigosos. Não vou reproduzir esse texto aqui, porque o ponto não é o dano, é a captura. No lado protegido o painel do verificador intercepta a resposta candidata, sinalizando um tom bajulador e um padrão proibido, e o gate determinístico escala para um encaminhamento humano de nível quatro. O resultado da sessão é o número que me importa: zero respostas inseguras entregues no lado protegido, versus duas que a stack desprotegida teria enviado, capturado dois turnos antes, cadeia de auditoria intacta em seis entradas com evidência de adulteração.

Uma coisa que vale declarar com clareza para quem lê isto como clínico ou comprador: esta é uma demo de um padrão de arquitetura, não um dispositivo médico, e toda conversa nela é sintética. Não há paciente real aqui, nenhum prontuário ao vivo, nenhuma autorização da FDA. O valor que aponto é a forma do sistema, não uma alegação de desempenho clínico.
Por que parei de confiar na minha própria demo
Quero ser honesto sobre a parte desta construção que quase pulei, porque pulá-la teria sido a coisa desonesta a fazer. Na primeira vez que rodei o lado a lado e vi a stack protegida vencer, eu não acreditei. Não porque parecesse errado, mas porque sei como é fácil construir uma demo que vence pelo motivo errado. Se o lado protegido tivesse um classificador mais inteligente, ou um limiar mais baixo, ou qualquer vantagem além da que eu estava alegando, então a comparação era teatro. Eu teria estado avaliando o meu próprio trabalho com uma rubrica fraudada.
Eu não queria uma demo que vencesse porque eu, em silêncio, lhe tinha entregado um classificador melhor.
Então reestruturei a linha de base. O moderador sem estado com o qual a demo compara agora roda o mesmo classificador C-SSRS e o mesmo gate de política de cinco níveis que a stack protegida. A única variável que deixei diferir é o estado entre turnos. Mesmo léxico, mesmos limiares, mesmos scripts. Se o lado protegido ainda detecta mais cedo, a melhoria é atribuível apenas ao estado, e a mais nada. Essa restrição me custou os números mais chamativos que eu poderia ter fabricado. Me deu um número em que de fato confio.
No nosso conjunto dourado rotulado de 40 conversas, que são 177 turnos gerados de forma determinística a partir de oito conversas canônicas escritas à mão mais paráfrases que preservam o rótulo e variantes de controle benignas, a stack protegida entregou zero respostas inseguras contra 68 da desprotegida, uma mediana de dois turnos antes do moderador idêntico sem estado, com zero escalonamentos falsos em 29 turnos benignos e 94 por cento de acurácia exata de nível C-SSRS. Tenho o cuidado de dizer "neste conjunto dourado" toda vez, porque estas são métricas de conjunto dourado de uma espinha dorsal determinística sobre dados sintéticos, não um ensaio clínico e não uma garantia de mundo aberto.

Aquela coluna benigna importa tanto quanto a insegura. Uma camada de segurança que escala luto comum ou uma pergunta normal sobre comer melhor é uma camada que ninguém deixará ligada. Em 29 turnos benignos, incluindo uma conversa pesada de luto, ela não escalou nada. A medida de um bom gate não é só o que ele captura. É o que ele tem a disciplina de deixar em paz.
Um modelo base melhor resolveria isso?
Ouço alguma versão desta pergunta em quase toda conversa, e minha resposta endureceu ao longo da construção da camada. O pitch que as pessoas esperam é "o modelo continua alucinando, então capturamos os erros dele." Esse enquadramento é uma armadilha, porque envelhece no instante em que o modelo melhora. Se toda a proposta de valor é uma taxa menor de erro do modelo, então um modelo melhor apaga o produto.
Então parei de me apoiar no modelo estar errado. O argumento durável é outro. Um chatbot perfeito ainda não tem ideia de qual é a política de escalonamento desta plataforma específica. Não produz trilha de auditoria que uma equipe de conformidade possa arquivar. Não dá à plataforma nenhum gate determinístico para certificar, e não oferece defesa no dia em que alguém o jailbreakar. Essas lacunas são arquiteturais, e um preditor de próximo token mais inteligente não toca em nenhuma delas.
Agentes aconselham, o código decide.
Essa linha é a filosofia inteira comprimida. Na nossa stack o classificador aconselha, o painel do verificador aconselha, e qualquer modelo de linguagem opcional aconselha. A decisão de escalonamento e a auditoria são Python determinístico fora do modelo. Um revisor consegue ler o gate. Não consegue interrogar um prompt. A equipe clínica é dona dos cinco níveis e da biblioteca de doze scripts, e a engenharia força exatamente isso, nada mais e nada menos. Quando o classificador está inseguro, ele se abstém e encaminha a uma fila de revisão humana em vez de inventar uma gravidade que não consegue justificar.
Devo ser igualmente claro sobre o que está em stub, porque a honestidade é o ponto da empresa. Na demo o classificador é um modelo de léxico determinístico, intencionalmente simples, e sua fragilidade conhecida é precisamente por que a direção de produção é um modelo fine-tuned na VPC atrás da mesma interface. O gancho de histórico do paciente FHIR é um adaptador mock com uma flag sintética, não uma conexão ao vivo com Epic ou Cerner, embora mostre o comportamento útil de baixar um limiar para a camada escalar mais cedo para um paciente documentado como vulnerável. O enquadramento do Relatório de Incidente de Segurança arquivável, os usos pós-comercialização da FDA e de litígio e seguro, é uma direção adiada, não uma alegação sobre a demo. A parte interessante é que nada dessa arquitetura depende de o modelo ser bom. Depende de o modelo estar envolvido.
O que as equipes clínicas de fato me perguntam
Noto que os líderes clínicos e de trust-and-safety com quem falo quase nunca me perguntam se o modelo está certo. Isso me surpreendeu no início, e agora parece óbvio. O que me perguntam se resume a duas coisas. Consigo ler a regra que tomou esta decisão, e consigo arquivar o recibo quando um regulador ou o advogado do autor pergunta o que aconteceu. Essas são perguntas de governança, não de acurácia, e um prompt não responde a nenhuma das duas.
É por isso que a auditoria é encadeada por hash em vez de apenas registrada. Cada turno é uma entrada sha256 encadeada à anterior, de modo que editar qualquer campo depois do fato quebra todo hash posterior e a adulteração fica visível. O relatório é renderizado como JSON e HTML com a versão da política carimbada nele. Não é a parte empolgante da demo. É a parte que um Chief Medical Officer guarda. Se você quiser ver o conjunto inteiro rodar — a tela dividida, o medidor subindo, o gate escalando, o recibo —, pode, e eu preferiria que você cutucasse a versão honesta a confiar no meu resumo dela.
E se você preferir ver a ler eu descrever, aqui está o conjunto inteiro rodando de ponta a ponta: a tela dividida, o medidor de risco subindo turno a turno, o gate escalando, e o recibo arquivável no fim. Eu mesmo gravei esta demonstração guiada.
O reenquadramento a que continuo voltando é o com que abri. Passei o primeiro trecho deste projeto tentando tornar um chatbot mais inteligente, e o tempo todo o problema real era que ele não conseguia lembrar. Segurança é um problema de arquitetura, não de prompting. Você mesmo pode ver a diferença em veriprajna.com/pt-BR/demos/camada-de-seguranca-de-ia-clinica-para-chatbots-de-saude-comportamental. O que ainda me ocupa, e o que genuinamente gostaria de ouvir a resposta de outras pessoas, é isto: se o perigo em uma conversa vive na sequência e não em nenhuma mensagem isolada, quanto do que hoje chamamos de "segurança de IA" está, em silêncio, assumindo o contrário?


