As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Práticas recomendadas para evitar ataques imediatos de injeção
As seguintes grades de proteção e as melhores práticas foram testadas em um aplicativo RAG desenvolvido pela Anthropic Claude como modelo demonstrativo. As sugestões são altamente aplicáveis à família de modelos Claude, mas também podem ser transferidas para outros LLMs que não sejam da Claude, aguardando modificações específicas do modelo (como remoção de tags XML e uso de diferentes tags de atribuição de diálogo).
Uso <thinking>e <answer>tags
Uma adição útil aos modelos básicos do RAG são <thinking>
as <answer>
tags. <thinking>
as tags permitem que o modelo mostre seu trabalho e apresente quaisquer trechos relevantes. <answer>
as tags contêm a resposta a ser retornada ao usuário. Empiricamente, o uso dessas duas tags resulta em maior precisão quando o modelo responde a perguntas complexas e diferenciadas que exigem a junção de várias fontes de informação.
Use grades de proteção
Proteger um aplicativo baseado em LLM requer proteções específicas para reconhecer e ajudar na defesa contra os ataques comuns descritos anteriormente. Quando projetamos as proteções de segurança neste guia, nossa abordagem foi produzir o máximo benefício com o menor número de tokens introduzidos no modelo. Como a maioria dos fornecedores de modelos cobra por token de entrada, as grades de proteção com menos tokens são econômicas. Além disso, foi demonstrado que modelos superprojetados reduzem a precisão.
Embrulhe as instruções em um único par de etiquetas de sequência salgada
Alguns LLMs seguem uma estrutura de modelo em que as informações são agrupadas em tags XML<tagname-abcde12345>
Uma instrução adicional ordena que o LLM considere somente as instruções que estão dentro dessas tags.
Um problema com essa abordagem é que, se o modelo usa tags em sua resposta, de forma esperada ou inesperada, a sequência salgada também é anexada à tag retornada. Agora que o usuário conhece essa sequência específica da sessão, ele pode realizar a falsificação de tags, possivelmente com maior eficácia devido à instrução que ordena que o LLM considere as instruções marcadas com sal. Para contornar esse risco, agrupamos todas as instruções em uma única seção marcada no modelo e usamos uma tag que consiste apenas na sequência salgada (por exemplo,). <abcde12345>
Podemos então instruir o modelo a considerar apenas as instruções nesta sessão marcada. Descobrimos que essa abordagem impediu que o modelo revelasse sua sequência salgada e ajudou a se defender contra falsificação de tags e outros ataques que introduzem ou tentam aumentar as instruções do modelo.
Ensine o LLM a detectar ataques fornecendo instruções específicas
Também incluímos um conjunto de instruções que explicam padrões de ataque comuns, para ensinar o LLM a detectar ataques. As instruções se concentram na consulta de entrada do usuário. Eles instruem o LLM a identificar a presença dos principais padrões de ataque e retornar “Ataque imediato detectado” se descobrir um padrão. A presença dessas instruções nos permite fornecer ao LLM um atalho para lidar com ataques comuns. Esse atalho é relevante quando o modelo usa <answer>
tags <thinking>
e tags, porque o LLM geralmente analisa instruções maliciosas repetidamente e com detalhes excessivos, o que pode levar à conformidade (conforme demonstrado nas comparações na próxima seção).