Como evitar quebrar LLMs ao proteger dados: por baixo do capô do filtro Guardrails
OpenAI
Anthropic
Este artigo detalha os desafios de engenharia para construir um filtro Guardrails, uma camada de proteção de dados para solicitações de LLM. Ele destaca as complexidades de mascarar e desmascarar dados pessoais em respostas de streaming, lidar com chamadas de ferramentas e suportar vários formatos de API. O autor compartilha insights da implementação do filtro para as APIs Chat Completions e Messages.
O artigo discute o desenvolvimento de um filtro de proteção (guardrails) projetado para proteger dados pessoais em interações com modelos de linguagem de grande porte. Embora encontrar dados pessoais usando expressões regulares seja direto, o verdadeiro desafio está em integrar o filtro entre a aplicação e o modelo sem quebrar a interação. O filtro deve lidar com solicitações comuns, streaming, chamada de ferramentas, manter a estrutura das mensagens e preservar metadados. Para lidar com múltiplas instâncias do mesmo tipo de dado, o filtro utiliza uma tabela de mapeamento, atribuindo marcadores de posição únicos, como <PHONE_1>, a cada valor distinto. Como os modelos de linguagem de grande porte são sem estado, o filtro deve reprocessar todo o histórico da conversa a cada solicitação. No modo de streaming, as respostas chegam em blocos, e os marcadores de posição podem ser divididos entre blocos; o filtro usa um buffer para acumular dados suficientes antes de tentar desmascarar. Ele também lida com vários campos nas respostas, incluindo conteúdo, raciocínio e argumentos de chamada de ferramentas, garantindo que os dados sejam restaurados corretamente em todos eles. A implementação cresceu para cerca de 1.500 linhas de código apenas para streaming no Chat Completions. Além disso, o suporte à API Messages exigiu uma implementação separada devido ao seu formato baseado em eventos, elevando o total de código de teste para mais de 4.000 linhas.
Fonte: Habr — хаб ИИ —
original
