Quando um sistema baseado em um modelo de linguagem de grande porte (LLM) começa a lidar com dados reais ou a tomar decisões impactantes, a expressão «funciona na maioria das vezes» deixa de ser um critério aceitável. O material do Stack Overflow Blog, no quarto nível do modelo de maturidade de sistemas de LLM, propõe incorporar segurança e governança à própria arquitetura por meio de quatro práticas interligadas: barreiras de proteção múltiplas, controle de dados pessoais em todas as fronteiras do sistema, um registro de auditoria à prova de adulteração e memória restrita a um escopo claro.
Múltiplas barreiras, não um único ponto de proteção
O material critica a dependência de um único filtro para as saídas do modelo e propõe transformar cada barreira de proteção em um pequeno contrato de software que possa ser testado e ordenado de forma independente. As solicitações passam por camadas que verificam a entrada e tentativas de injeção de instruções, restrições de fundamentação e o formato das saídas, limpeza dos resultados quanto a violações de política ou dados pessoais, depois a validação das regras de negócio, o uso de um avaliador secundário para casos que parecem corretos, mas estão errados, e, por fim, a estimativa de confiança e a determinação de se a decisão será executada ou precisará de escalonamento humano.
A regra básica é «falhar para parar»: se uma barreira falhar ou ficar indisponível, a solicitação não deve ser encaminhada automaticamente. Cada operação de bloqueio também deve ser registrada como um sinal operacional; um aumento repentino no indicador pode significar um ataque, uma regressão na versão ou uma falha na implantação. O material enfatiza que as restrições efetivas devem tornar as saídas não permitidas impossíveis de representar, em vez de depender apenas de instruções textuais que o modelo possa contornar.
Os dados pessoais são tratados nas fronteiras
Cada transição entre componentes do sistema representa uma fronteira de segurança: entrada de dados, envio ao modelo, gravação em registros ou no livro de decisões e encaminhamento para outro serviço. O material recomenda uma classificação centralizada de sensibilidade, considerando os campos desconhecidos como dados pessoais por padrão, e então removendo, ocultando ou fragmentando os dados antes de atravessar cada fronteira.
No registro de decisões, a carga sensível completa não deve ser armazenada para provar em que a decisão se baseou. A alternativa é um resumo editado com um hash com chave usando HMAC e uma chave específica para cada locatário. O material observa que usar SHA-256 comum com dados de baixa aleatoriedade, como e-mail ou número de cartão, possibilita a adivinhação reversa. Também é necessário adotar uma representação JSON canônica e estável, como a especificação JCS, para que o recálculo do hash produza o mesmo resultado.
Um registro de auditoria que comprova o histórico, em vez de apenas armazenar registros
O material diferencia os registros operacionais, adequados à depuração e que podem ser rotacionados ou não estruturados, de um livro de auditoria somente de acréscimo que registra cada decisão e seu motivo. Esse livro inclui a identidade da decisão, o locatário, as permissões e as versões do modelo, do prompt e da decisão, a confiança e o caminho de roteamento, além de um resumo editado e entradas submetidas a hash.
As correções não alteram o registro anterior; em vez disso, criam uma nova entrada que aponta para a entrada que substitui. Para detectar adulterações, as entradas são vinculadas por uma cadeia de hashes, com verificação da sequência e da completude dos números. Mas a cadeia, por si só, não impede a exclusão da cauda ou a reconstrução completa do registro; por isso, o material propõe assinar as entradas e publicar pontos de verificação periódicos em um armazenamento externo. A operação de acréscimo também deve ser executada sob um bloqueio para impedir que duas gravações simultâneas criem duas ramificações da cadeia.
Memória classificada e uma separação entre o que é enviado e o que é adquirido
Em sistemas multi-inquilino, a memória se torna uma questão de governança de dados, não apenas um recurso. O material propõe categorias separadas, como conhecimento compartilhado do locatário, espaço do agente, contexto temporário do fluxo de trabalho, registro de auditoria, conhecimento semântico e conversa do usuário. Cada categoria deve ter um escopo de acesso, uma política de sensibilidade e uma chave de particionamento aplicados no próprio armazenamento de dados, com a proibição de qualquer leitura ou gravação entre locatários e o isolamento da conversa de um usuário em relação aos agentes de tomada de decisão de outros usuários.
O material também diferencia os dados iniciais enviados pela equipe, como prompts, regras, conjuntos de testes e dados de fundamentação, dos dados operacionais adquiridos pelo sistema, como memória, sinais de desvio e contexto das sessões. Os primeiros devem ser controlados por versão e não poder ser modificados durante a operação, enquanto os segundos podem ser limpos dentro de um escopo definido sem excluir o registro de auditoria. Qualquer novo comportamento extraído dos dados operacionais deve passar por revisão e testes antes de ser incorporado a uma versão posterior; o aprendizado, segundo o material, deve se aproximar mais de uma solicitação de alteração de software do que de um efeito colateral não rastreável.
Por que essas práticas são importantes?
O valor prático da proposta não está em uma ferramenta isolada, mas na distribuição da confiança entre camadas independentes. A limpeza das saídas não substitui a validação das regras de negócio, um registro de auditoria não justifica a retenção de dados brutos e a memória não se torna segura apenas por usar um banco de dados vetorial. As restrições em aberto que ainda exigem uma decisão de engenharia são a definição das categorias de dados adequadas para cada sistema, o controle das políticas de residência e acesso, a determinação dos casos que exigem revisão humana e a comprovação de que a limpeza da memória não remove entradas necessárias para a tomada de decisão.