Extremamente promissora e extremamente arriscada, a IA generativa tem modos de falha distintos contra os quais precisamos nos defender para proteger nossos usuários e nosso código. Todos nós já vimos notícias onde os chatbots são encorajados a serem insultuosos ou racistas, ou grandes modelos de linguagem (LLMs) são explorados para fins maliciosos, e onde os resultados são, na melhor das hipóteses, fantasiosos e, na pior, perigosos.
Nada disso é particularmente surpreendente. É possível criar prompts complexos que forçam saídas indesejadas, empurrando a janela de entrada além das diretrizes e proteções que estamos usando. Ao mesmo tempo, podemos ver resultados que vão além dos dados do modelo básico, gerando texto que não é mais fundamentado na realidade, produzindo absurdos plausíveis e semanticamente corretos.
Embora possamos usar técnicas como geração aumentada de recuperação (RAG) e ferramentas como Semantic Kernel e LangChain para manter nossos aplicativos baseados em nossos dados, ainda existem ataques imediatos que podem produzir resultados ruins e causar riscos à reputação. O que é necessário é uma forma de testar antecipadamente as nossas aplicações de IA para, se não garantir a sua segurança, pelo menos mitigar o risco destes ataques – bem como garantir que as nossas próprias solicitações não forçam preconceitos ou permitem consultas inadequadas.
Apresentando a segurança de conteúdo de IA do Azure
A Microsoft está ciente desses riscos há muito tempo. Você não tem um desastre de relações públicas como o chatbot Tay sem aprender lições. Como resultado, a empresa tem investido pesadamente em um programa de IA responsável entre organizações. Parte dessa equipe, Azure AI Responsible AI, tem se concentrado na proteção de aplicativos criados usando o Azure AI Studio e desenvolvido um conjunto de ferramentas agrupadas como Azure AI Content Safety.
Lidar com ataques de injeção imediata é cada vez mais importante, pois uma solicitação maliciosa não só pode fornecer conteúdo desagradável, mas também pode ser usada para extrair os dados usados para fundamentar um modelo, fornecendo informações proprietárias em um formato fácil de exfiltrar. Embora seja obviamente importante garantir que os dados RAG não contenham informações de identificação pessoal ou dados comercialmente confidenciais, as conexões de API privadas com sistemas de linha de negócios estão prontas para serem manipuladas por malfeitores.
Precisamos de um conjunto de ferramentas que nos permita testar aplicativos de IA antes de serem entregues aos usuários e que nos permita aplicar filtros avançados às entradas para reduzir o risco de injeção imediata, bloqueando tipos de ataques conhecidos antes que possam ser usados em nossos modelos. Embora você possa criar seus próprios filtros, registrando todas as entradas e saídas e usando-as para construir um conjunto de detectores, seu aplicativo pode não ter a escala necessária para capturar todos os ataques antes que eles sejam usados em você.
Não existem muitas plataformas de IA maiores do que a crescente família de modelos da Microsoft e seu ambiente de desenvolvimento Azure AI Studio. Com os próprios serviços Copilot da Microsoft baseados em seu investimento em OpenAI, ela é capaz de rastrear prompts e resultados em uma ampla gama de cenários diferentes, com vários níveis de base e com muitas fontes de dados diferentes. Isso permite que a equipe de segurança de IA da Microsoft entenda rapidamente quais tipos de prompt causam problemas e ajuste suas proteções de serviço de acordo.
Usando Prompt Shields para controlar entradas de IA
Prompt Shields são um conjunto de filtros de entrada em tempo real que ficam na frente de um grande modelo de linguagem. Você cria prompts normalmente, diretamente ou via RAG, e o Prompt Shield os analisa e bloqueia prompts maliciosos antes que sejam enviados ao seu LLM.
Atualmente existem dois tipos de Prompt Shields. O Prompt Shields for User Prompts foi projetado para proteger sua aplicação contra prompts do usuário que redirecionam o modelo para longe dos dados de aterramento e para saídas inadequadas. Isso pode claramente representar um risco significativo à reputação e, ao bloquear os prompts que geram esses resultados, seu aplicativo LLM deve permanecer focado em seus casos de uso específicos. Embora a superfície de ataque do seu aplicativo LLM possa ser pequena, a do Copilot é grande. Ao ativar o Prompt Shields, você pode aproveitar a escala da engenharia de segurança da Microsoft.
O Prompt Shields for Documents ajuda a reduzir o risco de comprometimento por meio de ataques indiretos. Eles usam fontes de dados alternativas, por exemplo, documentos envenenados ou sites maliciosos, que ocultam conteúdo adicional das proteções existentes. O Prompt Shields for Documents analisa o conteúdo desses arquivos e bloqueia aqueles que correspondem a padrões associados a ataques. Com os invasores aproveitando cada vez mais técnicas como essa, há um risco significativo associado a elas, pois são difíceis de detectar usando ferramentas de segurança convencionais. É importante usar proteções como Prompt Shields com aplicativos de IA que, por exemplo, resumem documentos ou respondem automaticamente a e-mails.
Usar Prompt Shields envolve fazer uma chamada de API com o prompt do usuário e quaisquer documentos de suporte. Eles são analisados em busca de vulnerabilidades, e a resposta simplesmente mostra que um ataque foi detectado. Você pode então adicionar código à sua orquestração LLM para interceptar essa resposta e, em seguida, bloquear o acesso desse usuário, verificar o prompt que ele usou e desenvolver filtros adicionais para evitar que esses ataques sejam usados no futuro.
Verificando saídas não aterradas
Juntamente com estas defesas imediatas, o Azure AI Content Safety inclui ferramentas para ajudar a detetar quando um modelo fica inaterrado, gerando resultados aleatórios (se plausíveis). Esse recurso funciona apenas com aplicativos que usam fontes de dados de aterramento, por exemplo, um aplicativo RAG ou um resumidor de documentos.
A ferramenta Groundedness Detection é em si um modelo de linguagem, usado para fornecer um ciclo de feedback para a saída do LLM. Ele compara a saída do LLM com os dados usados para fundamentá-lo, avaliando-o para ver se é baseado nos dados de origem e, caso contrário, gera um erro. Este processo, Inferência de Linguagem Natural, ainda está nos seus primórdios, e o modelo subjacente pretende ser atualizado à medida que as equipas responsáveis de IA da Microsoft continuam a desenvolver formas de evitar que os modelos de IA percam contexto.
Mantendo os usuários seguros com avisos
Um aspecto importante dos serviços de segurança de conteúdo de IA do Azure é informar os usuários quando eles estão fazendo algo inseguro com um LLM. Talvez eles tenham sido projetados socialmente para fornecer um aviso que extraia dados: “Experimente isso, fará algo muito legal!” Ou talvez eles simplesmente tenham cometido um erro. Fornecer orientação para escrever prompts seguros para um LLM faz parte da segurança de um serviço tanto quanto fornecer proteção para seus prompts.
A Microsoft está adicionando modelos de mensagens do sistema ao Azure AI Studio que podem ser usados em conjunto com Prompt Shields e com outras ferramentas de segurança de IA. Elas são mostradas automaticamente no playground de desenvolvimento do Azure AI Studio, permitindo que você entenda quais mensagens de sistema são exibidas e quando, ajudando você a criar suas próprias mensagens personalizadas que se adaptam ao design do seu aplicativo e à estratégia de conteúdo.
Testando e monitorando seus modelos
O Azure AI Studio continua sendo o melhor lugar para criar aplicativos que funcionem com LLMs hospedados no Azure, sejam eles do serviço Azure OpenAI ou importados do Hugging Face. O estúdio inclui avaliações automatizadas para seus aplicativos, que agora incluem formas de avaliar a segurança de seu aplicativo, usando ataques pré-construídos para testar como seu modelo responde a jailbreaks e ataques indiretos, e se ele pode gerar conteúdo prejudicial. Você pode usar seus próprios prompts ou modelos de prompt adversários da Microsoft como base para suas entradas de teste.
Depois de ter um aplicativo de IA instalado e funcionando, você precisará monitorá-lo para garantir que novos prompts adversários não consigam desbloqueá-lo. O Azure OpenAI agora inclui monitoramento de risco, vinculado aos diversos filtros usados pelo serviço, incluindo Prompt Shields. Você pode ver os tipos de ataques utilizados, tanto de entrada quanto de saída, bem como o volume dos ataques. Existe a opção de entender quais usuários estão usando seu aplicativo de forma maliciosa, permitindo identificar os padrões por trás dos ataques e ajustar as listas de bloqueio de forma adequada.
Garantir que usuários mal-intencionados não consigam fazer o jailbreak de um LLM é apenas uma parte do fornecimento de aplicativos de IA confiáveis e responsáveis. A saída é tão importante quanto a entrada. Ao verificar os dados de saída em relação aos documentos de origem, podemos adicionar um ciclo de feedback que nos permite refinar os prompts para evitar a perda de fundamentação. Tudo o que precisamos de lembrar é que estas ferramentas terão de evoluir juntamente com os nossos serviços de IA, tornando-se melhores e mais fortes à medida que os modelos de IA generativa melhoram.