Inteligência de dados generativa

Crie confiança e segurança para aplicações generativas de IA com Amazon Comprehend e LangChain | Amazon Web Services

Data:

Estamos testemunhando um rápido aumento na adoção de grandes modelos de linguagem (LLM) que potencializam aplicações generativas de IA em todos os setores. Os LLMs são capazes de realizar uma variedade de tarefas, como gerar conteúdo criativo, responder perguntas por meio de chatbots, gerar código e muito mais.

As organizações que procuram usar LLMs para potencializar suas aplicações estão cada vez mais cautelosas com a privacidade dos dados para garantir que a confiança e a segurança sejam mantidas em suas aplicações generativas de IA. Isso inclui o tratamento adequado dos dados de informações de identificação pessoal (PII) dos clientes. Também inclui evitar que conteúdos abusivos e inseguros sejam propagados para LLMs e verificar se os dados gerados por LLMs seguem os mesmos princípios.

Nesta postagem, discutimos novos recursos desenvolvidos por Amazon Comprehend que permitem uma integração perfeita para garantir a privacidade dos dados, a segurança do conteúdo e a segurança imediata em aplicações generativas de IA novas e existentes.

O Amazon Comprehend é um serviço de processamento de linguagem natural (PNL) que usa machine learning (ML) para descobrir informações em dados não estruturados e texto em documentos. Nesta postagem, discutimos por que a confiança e a segurança com LLMs são importantes para suas cargas de trabalho. Também nos aprofundamos em como esses novos recursos de moderação são utilizados com a popular estrutura de desenvolvimento de IA generativa LangChain para introduzir um mecanismo personalizável de confiança e segurança para seu caso de uso.

Por que a confiança e a segurança com LLMs são importantes

Confiança e segurança são fundamentais ao trabalhar com LLMs devido ao seu profundo impacto em uma ampla gama de aplicações, desde chatbots de suporte ao cliente até geração de conteúdo. À medida que estes modelos processam grandes quantidades de dados e geram respostas semelhantes às humanas, aumenta o potencial de utilização indevida ou de resultados não intencionais. Garantir que estes sistemas de IA funcionam dentro de limites éticos e fiáveis ​​é crucial, não apenas para a reputação das empresas que os utilizam, mas também para preservar a confiança dos utilizadores finais e clientes.

Além disso, à medida que os LLMs se tornam mais integrados nas nossas experiências digitais diárias, a sua influência nas nossas percepções, crenças e decisões aumenta. Garantir confiança e segurança com LLMs vai além de apenas medidas técnicas; fala da responsabilidade mais ampla dos profissionais e organizações de IA de defender os padrões éticos. Ao priorizar a confiança e a segurança, as organizações não só protegem os seus utilizadores, mas também garantem o crescimento sustentável e responsável da IA ​​na sociedade. Também pode ajudar a reduzir o risco de geração de conteúdo prejudicial e ajudar a cumprir os requisitos regulamentares.

No domínio da confiança e segurança, a moderação de conteúdo é um mecanismo que aborda vários aspectos, incluindo, mas não se limitando a:

  • Privacidade – Os usuários podem fornecer inadvertidamente textos que contenham informações confidenciais, colocando em risco sua privacidade. Detectar e redigir qualquer PII é essencial.
  • Toxicidade – Reconhecer e filtrar conteúdos nocivos, como discursos de ódio, ameaças ou abusos, é de extrema importância.
  • Intenção do usuário – Identificar se a entrada do usuário (prompt) é segura ou insegura é fundamental. Solicitações inseguras podem expressar, explícita ou implicitamente, intenções maliciosas, como solicitar informações pessoais ou privadas e gerar conteúdo ofensivo, discriminatório ou ilegal. As solicitações também podem expressar ou solicitar implicitamente aconselhamento sobre questões médicas, jurídicas, políticas, controversas, pessoais ou financeiras.

Moderação de conteúdo com Amazon Comprehend

Nesta seção, discutimos os benefícios da moderação de conteúdo com o Amazon Comprehend.

Abordando a privacidade

O Amazon Comprehend já aborda a privacidade por meio de suas capacidades existentes de detecção e redação de PII por meio do Detectar PIIEntities e ContémPIIEntidades APIs. Essas duas APIs são apoiadas por modelos de PNL que podem detectar um grande número de entidades PII, como números de seguridade social (SSNs), números de cartão de crédito, nomes, endereços, números de telefone e assim por diante. Para obter uma lista completa de entidades, consulte Tipos de entidades universais PII. DetectPII também fornece a posição em nível de caractere da entidade PII dentro de um texto; por exemplo, a posição do caractere inicial da entidade NOME (John Doe) na frase “Meu nome é Jah, façae”é 12 e a posição final do caractere é 19. Esses deslocamentos podem ser usados ​​para mascarar ou editar os valores, reduzindo assim os riscos de propagação de dados privados em LLMs.

Abordando a toxicidade e segurança imediata

Hoje, estamos anunciando dois novos recursos do Amazon Comprehend na forma de APIs: Detecção de toxicidade por meio do DetectToxicContent API e classificação de segurança imediata por meio do ClassifyDocument API. Observe que DetectToxicContent é uma nova API, enquanto ClassifyDocument é uma API existente que agora oferece suporte à classificação de segurança imediata.

Detecção de toxicidade

Com a detecção de toxicidade do Amazon Comprehend, você pode identificar e sinalizar conteúdo que pode ser prejudicial, ofensivo ou inapropriado. Esse recurso é particularmente valioso para plataformas onde os usuários geram conteúdo, como sites de mídia social, fóruns, chatbots, seções de comentários e aplicativos que usam LLMs para gerar conteúdo. O objetivo principal é manter um ambiente positivo e seguro, evitando a disseminação de conteúdo tóxico.

Basicamente, o modelo de detecção de toxicidade analisa o texto para determinar a probabilidade de ele conter conteúdo de ódio, ameaças, obscenidades ou outras formas de texto prejudicial. O modelo é treinado em vastos conjuntos de dados contendo exemplos de conteúdo tóxico e não tóxico. A API de toxicidade avalia um determinado trecho de texto para fornecer classificação de toxicidade e pontuação de confiança. Os aplicativos de IA generativa podem então usar essas informações para tomar ações apropriadas, como impedir a propagação do texto para LLMs. No momento em que este livro foi escrito, os rótulos detectados pela API de detecção de toxicidade eram HATE_SPEECH, GRAPHIC, HARRASMENT_OR_ABUSE, SEXUAL, VIOLENCE_OR_THREAT, INSULT e PROFANITY. O código a seguir demonstra a chamada de API com Python Boto3 para detecção de toxicidade do Amazon Comprehend:

import boto3
client = boto3.client('comprehend')
response = client.detect_toxic_content( TextSegments=[{"Text": "What is the capital of France?"}, {"Text": "Where do I find good baguette in France?"}], LanguageCode='en')
print(response)

Classificação de segurança imediata

A classificação de segurança de prompts com o Amazon Comprehend ajuda a classificar um prompt de texto de entrada como seguro ou inseguro. Esse recurso é crucial para aplicações como chatbots, assistentes virtuais ou ferramentas de moderação de conteúdo, onde a compreensão da segurança de um prompt pode determinar respostas, ações ou propagação de conteúdo para LLMs.

Em essência, a classificação de segurança imediata analisa a contribuição humana em busca de qualquer intenção maliciosa explícita ou implícita, como solicitação de informações pessoais ou privadas e geração de conteúdo ofensivo, discriminatório ou ilegal. Ele também sinaliza solicitações de aconselhamento sobre assuntos médicos, jurídicos, políticos, controversos, pessoais ou financeiros. A classificação imediata retorna duas classes, UNSAFE_PROMPT e SAFE_PROMPT, para um texto associado, com uma pontuação de confiança associada para cada um. A pontuação de confiança varia entre 0–1 e combinada resultará em 1. Por exemplo, em um chatbot de suporte ao cliente, o texto “Como faço para redefinir minha senha?” sinaliza a intenção de buscar orientação sobre procedimentos de redefinição de senha e é rotulado como SAFE_PROMPT. Da mesma forma, uma declaração como “Eu desejo que algo ruim aconteça com você”pode ser sinalizado por ter uma intenção potencialmente prejudicial e rotulado como UNSAFE_PROMPT. É importante observar que a classificação de segurança imediata se concentra principalmente na detecção de intenções de entradas humanas (prompts), em vez de texto gerado por máquina (saídas LLM). O código a seguir demonstra como acessar o recurso de classificação de segurança imediata com o ClassifyDocument API:

import boto3
client = boto3.client('comprehend')
response = self.client.classify_document( Text=prompt_value, EndpointArn=endpoint_arn)
print(response)

Observe que endpoint_arn no código anterior é um fornecido pela AWS Número de recurso da Amazon (ARN) do padrão arn:aws:comprehend:<region>:aws:document-classifier-endpoint/prompt-safety, Onde <region> é a região da AWS de sua escolha onde Amazon Comprehend está disponível.

Para demonstrar esses recursos, construímos um exemplo de aplicativo de bate-papo onde pedimos a um LLM para extrair entidades PII, como endereço, número de telefone e SSN, de um determinado trecho de texto. O LLM encontra e retorna as entidades PII apropriadas, conforme mostrado na imagem à esquerda.

Com a moderação do Amazon Comprehend, podemos editar a entrada do LLM e a saída do LLM. Na imagem à direita, o valor SSN pode ser repassado ao LLM sem redação. No entanto, qualquer valor SSN na resposta do LLM é redigido.

A seguir está um exemplo de como um prompt contendo informações PII pode ser impedido de chegar ao LLM. Este exemplo demonstra um usuário fazendo uma pergunta que contém informações PII. Usamos a moderação do Amazon Comprehend para detectar entidades PII no prompt e mostrar um erro ao interromper o fluxo.

Os exemplos de bate-papo anteriores mostram como a moderação do Amazon Comprehend aplica restrições ao envio de dados para um LLM. Nas seções a seguir, explicamos como esse mecanismo de moderação é implementado usando LangChain.

Integração com LangChain

Com as infinitas possibilidades de aplicação de LLMs em vários casos de uso, tornou-se igualmente importante simplificar o desenvolvimento de aplicações generativas de IA. LangChain é uma estrutura popular de código aberto que facilita o desenvolvimento de aplicativos generativos de IA. A moderação do Amazon Comprehend estende a estrutura LangChain para oferecer identificação e redação de PII, detecção de toxicidade e recursos de classificação de segurança imediata por meio de AmazonComprehendModerationChain.

AmazonComprehendModerationChain é uma implementação personalizada do Cadeia base LangChain interface. Isso significa que os aplicativos podem usar essa cadeia com seus próprios Cadeias LLM para aplicar a moderação desejada ao prompt de entrada, bem como ao texto de saída do LLM. As cadeias podem ser construídas mesclando várias cadeias ou misturando cadeias com outros componentes. Você pode usar AmazonComprehendModerationChain com outras cadeias de LLM para desenvolver aplicações complexas de IA de maneira modular e flexível.

Para explicar melhor, fornecemos alguns exemplos nas seções a seguir. O código-fonte do AmazonComprehendModerationChain implementação pode ser encontrada dentro do Repositório de código aberto LangChain. Para documentação completa da interface API, consulte a documentação da API LangChain para o Cadeia de moderação do Amazon Comprehend. Usar esta cadeia de moderação é tão simples quanto inicializar uma instância da classe com configurações padrão:

from langchain_experimental.comprehend_moderation import AmazonComprehendModerationChain comprehend_moderation = AmazonComprehendModerationChain()

Nos bastidores, a cadeia de moderação realiza três verificações de moderação consecutivas, nomeadamente PII, toxicidade e segurança imediata, conforme explicado no diagrama a seguir. Este é o fluxo padrão para a moderação.

O trecho de código a seguir mostra um exemplo simples de uso da cadeia de moderação com o Amazon FalconLite LLM (que é uma versão quantizada do Modelo Falcon 40B SFT OASST-TOP1) hospedado no Hugging Face Hub:

from langchain import HuggingFaceHub
from langchain import PromptTemplate, LLMChain
from langchain_experimental.comprehend_moderation import AmazonComprehendModerationChain template = """Question: {question}
Answer:"""
repo_id = "amazon/FalconLite"
prompt = PromptTemplate(template=template, input_variables=["question"])
llm = HuggingFaceHub(
repo_id=repo_id, model_kwargs={"temperature": 0.5, "max_length": 256}
)
comprehend_moderation = AmazonComprehendModerationChain(verbose=True)
chain = ( prompt | comprehend_moderation | { "input" : (lambda x: x['output']) | llm } | comprehend_moderation
) try: response = chain.invoke({"question": "An SSN is of the format 123-45-6789. Can you give me John Doe's SSN?"})
except Exception as e: print(str(e))
else: print(response['output'])

No exemplo anterior, aumentamos nossa cadeia com comprehend_moderation tanto para o texto que vai para o LLM quanto para o texto gerado pelo LLM. Isso executará a moderação padrão que verificará PII, toxicidade e solicitará classificação de segurança nessa sequência.

Personalize sua moderação com configurações de filtro

Você pode usar o AmazonComprehendModerationChain com configurações específicas, o que lhe dá a capacidade de controlar quais moderações você deseja realizar em seu aplicativo generativo baseado em IA. No centro da configuração, você tem três configurações de filtro disponíveis.

  1. ModeraçãoPiiConfig – Usado para configurar o filtro PII.
  2. ModeraçãoToxicidadeConfig – Usado para configurar filtro de conteúdo tóxico.
  3. ModeraçãoIntentConfig – Usado para configurar o filtro de intenções.

Você pode usar cada uma dessas configurações de filtro para personalizar o comportamento de suas moderações. As configurações de cada filtro possuem alguns parâmetros comuns e alguns parâmetros exclusivos com os quais podem ser inicializados. Depois de definir as configurações, você usa o comando BaseModerationConfig classe para definir a sequência em que os filtros devem ser aplicados ao texto. Por exemplo, no código a seguir, primeiro definimos as três configurações de filtro e, posteriormente, especificamos a ordem em que elas devem ser aplicadas:

from langchain_experimental.comprehend_moderation import (BaseModerationConfig, ModerationPromptSafetyConfig, ModerationPiiConfig, ModerationToxicityConfig) pii_config = ModerationPiiConfig(labels=["SSN"], redact=True, mask_character="X")
toxicity_config = ModerationToxicityConfig(threshold=0.6)
prompt_safety_config = ModerationPromptSafetyConfig(threshold=0.8)
moderation_config = BaseModerationConfig(filters=[ toxicity_config, pii_config, prompt_safety_config])
comprehend_moderation = AmazonComprehendModerationChain(moderation_config=moderation_config)

Vamos nos aprofundar um pouco mais para entender o que essa configuração alcança:

  • Primeiro, para o filtro de toxicidade, especificamos um limite de 0.6. Isso significa que se o texto contiver algum dos rótulos tóxicos disponíveis ou entidades com pontuação superior ao limite, toda a cadeia será interrompida.
  • Se não for encontrado nenhum conteúdo tóxico no texto, uma verificação de PII é necessária. Nesse caso, estamos interessados ​​em verificar se o texto contém valores SSN. Porque o redact parâmetro está definido como True, a cadeia mascarará os valores SSN detectados (se houver) onde a pontuação de confiança da entidade SSN for maior ou igual a 0.5, com o caractere de máscara especificado (X). Se redact está definido para False, a cadeia será interrompida para qualquer SSN detectado.
  • Por fim, a cadeia realiza uma classificação de segurança imediata e impedirá que o conteúdo se propague mais adiante na cadeia se o conteúdo for classificado com UNSAFE_PROMPT com uma pontuação de confiança maior ou igual a 0.8.

O diagrama a seguir ilustra esse fluxo de trabalho.

Em caso de interrupções na cadeia de moderação (neste exemplo, aplicável aos filtros de toxicidade e classificação de segurança imediata), a cadeia levantará um Exceção Python, essencialmente interrompendo a cadeia em andamento e permitindo capturar a exceção (em um bloco try-catch) e executar qualquer ação relevante. Os três tipos de exceção possíveis são:

  1. ModerationPIIError
  2. ModerationToxicityError
  3. ModerationPromptSafetyError

Você pode configurar um filtro ou mais de um filtro usando BaseModerationConfig. Você também pode ter o mesmo tipo de filtro com configurações diferentes dentro da mesma cadeia. Por exemplo, se o seu caso de uso estiver relacionado apenas a PII, você poderá especificar uma configuração que deve interromper a cadeia caso um SSN seja detectado; caso contrário, deverá realizar a redação da idade e do nome das entidades PII. Uma configuração para isso pode ser definida da seguinte forma:

pii_config1 = ModerationPiiConfig(labels=["SSN"], redact=False)
pii_config2 = ModerationPiiConfig(labels=["AGE", "NAME"], redact=True, mask_character="X")
moderation_config = BaseModerationConfig(filters=[ pii_config1, pii_config2])
comprehend_moderation = AmazonComprehendModerationChain(moderation_config=moderation_config)

Usando retornos de chamada e identificadores exclusivos

Se você estiver familiarizado com o conceito de fluxos de trabalho, também poderá estar familiarizado com retornos de chamada. Os retornos de chamada nos fluxos de trabalho são partes independentes de código executadas quando determinadas condições são atendidas no fluxo de trabalho. Um retorno de chamada pode bloquear ou não o fluxo de trabalho. As cadeias LangChain são, em essência, fluxos de trabalho para LLMs. AmazonComprehendModerationChain permite que você defina suas próprias funções de retorno de chamada. Inicialmente, a implementação é limitada apenas a funções de retorno de chamada assíncronas (sem bloqueio).

Isso significa efetivamente que se você usar retornos de chamada com a cadeia de moderação, eles serão executados independentemente da execução da cadeia, sem bloqueá-la. Para a cadeia de moderação, você tem opções para executar trechos de código, com qualquer lógica de negócios, após a execução de cada moderação, independentemente da cadeia.

Opcionalmente, você também pode fornecer uma string de identificador exclusivo arbitrário ao criar um AmazonComprehendModerationChain para ativar o registro e a análise posteriormente. Por exemplo, se você estiver operando um chatbot desenvolvido por um LLM, você pode querer rastrear usuários que são consistentemente abusivos ou que expõem informações pessoais de forma deliberada ou inadvertida. Nesses casos, torna-se necessário rastrear a origem de tais solicitações e talvez armazená-las em um banco de dados ou registrá-las adequadamente para ações futuras. Você pode passar um ID exclusivo que identifique claramente um usuário, como seu nome de usuário ou e-mail, ou um nome de aplicativo que está gerando o prompt.

A combinação de retornos de chamada e identificadores exclusivos fornece uma maneira poderosa de implementar uma cadeia de moderação que se adapta ao seu caso de uso de uma maneira muito mais coesa, com menos código e mais fácil de manter. O manipulador de retorno de chamada está disponível através do BaseModerationCallbackHandler, com três retornos de chamada disponíveis: on_after_pii(), on_after_toxicity() e on_after_prompt_safety(). Cada uma dessas funções de retorno de chamada é chamada de forma assíncrona após a respectiva verificação de moderação ser realizada na cadeia. Estas funções também recebem dois parâmetros padrão:

  • moderação_beacon – Um dicionário contendo detalhes como o texto no qual a moderação foi realizada, a saída JSON completa da API do Amazon Comprehend, o tipo de moderação e se os rótulos fornecidos (na configuração) foram encontrados no texto ou não
  • ID único – O ID exclusivo que você atribuiu ao inicializar uma instância do AmazonComprehendModerationChain.

A seguir está um exemplo de como funciona uma implementação com retorno de chamada. Nesse caso, definimos um único retorno de chamada que queremos que a cadeia execute após a verificação de PII ser realizada:

from langchain_experimental.comprehend_moderation import BaseModerationCallbackHandler class MyModCallback(BaseModerationCallbackHandler): async def on_after_pii(self, output_beacon, unique_id): import json moderation_type = output_beacon['moderation_type'] chain_id = output_beacon['moderation_chain_id'] with open(f'output-{moderation_type}-{chain_id}.json', 'w') as file: data = { 'beacon_data': output_beacon, 'unique_id': unique_id } json.dump(data, file) ''' # implement this callback for toxicity async def on_after_toxicity(self, output_beacon, unique_id): pass # implement this callback for prompt safety async def on_after_prompt_safety(self, output_beacon, unique_id): pass ''' my_callback = MyModCallback()

Em seguida, usamos o my_callback objeto ao inicializar a cadeia de moderação e também passar um unique_id. Você pode usar retornos de chamada e identificadores exclusivos com ou sem configuração. Quando você subclassifica BaseModerationCallbackHandler, você deverá implementar um ou todos os métodos de retorno de chamada, dependendo dos filtros que pretende usar. Para resumir, o exemplo a seguir mostra uma maneira de usar retornos de chamada e unique_id sem nenhuma configuração:

comprehend_moderation = AmazonComprehendModerationChain(
moderation_callback = my_callback,
unique_id = '[email protected]')

O diagrama a seguir explica como funciona essa cadeia de moderação com retornos de chamada e identificadores exclusivos. Especificamente, implementamos o callback PII que deve escrever um arquivo JSON com os dados disponíveis no moderation_beacon e os votos de unique_id passado (o e-mail do usuário neste caso).

No que se segue Caderno Python, compilamos algumas maneiras diferentes de configurar e usar a cadeia de moderação com vários LLMs, como LLMs hospedados com JumpStart do Amazon SageMaker e hospedado em Abraçando o Face Hub. Também incluímos o exemplo de aplicativo de bate-papo que discutimos anteriormente com o seguinte Caderno Python.

Conclusão

O potencial transformador dos grandes modelos de linguagem e da IA ​​generativa é inegável. No entanto, a sua utilização responsável e ética depende da abordagem de preocupações de confiança e segurança. Ao reconhecer os desafios e implementar ativamente medidas para mitigar os riscos, os desenvolvedores, as organizações e a sociedade em geral podem aproveitar os benefícios destas tecnologias, preservando ao mesmo tempo a confiança e a segurança que sustentam a sua integração bem-sucedida. Use o Amazon Comprehend ContentModerationChain para adicionar recursos de confiança e segurança a qualquer fluxo de trabalho LLM, incluindo fluxos de trabalho de geração aumentada de recuperação (RAG) implementados em LangChain.

Para obter informações sobre como criar soluções baseadas em RAG usando LangChain e Amazon Kendra, tecnologias altamente precisas de aprendizado de máquina (ML) busca inteligente, ver - Crie rapidamente aplicativos de IA generativa de alta precisão em dados corporativos usando Amazon Kendra, LangChain e modelos de linguagem grandes. Como próximo passo, consulte o amostras de código que criamos para usar a moderação do Amazon Comprehend com LangChain. Para obter a documentação completa da API da cadeia de moderação do Amazon Comprehend, consulte LangChain Documentação da API.


Sobre os autores

Wrick Talukdar é arquiteto sênior da equipe Amazon Comprehend Service. Ele trabalha com clientes da AWS para ajudá-los a adotar o aprendizado de máquina em grande escala. Fora do trabalho, gosta de ler e fotografar.

Anjan Biswas é arquiteto sênior de soluções de serviços de IA com foco em IA/ML e análise de dados. Anjan faz parte da equipe mundial de serviços de IA e trabalha com clientes para ajudá-los a entender e desenvolver soluções para problemas de negócios com IA e ML. Anjan tem mais de 14 anos de experiência trabalhando com organizações globais de cadeia de suprimentos, manufatura e varejo, e está ajudando ativamente os clientes a começar e escalar nos serviços de IA da AWS.

Nikhil Jha é gerente técnico sênior de contas da Amazon Web Services. Suas áreas de foco incluem IA/ML e análise. Em seu tempo livre, ele gosta de jogar badminton com sua filha e explorar o ar livre.

Queixo Rane é arquiteto de soluções especialista em IA/ML na Amazon Web Services. Ela é apaixonada por matemática aplicada e aprendizado de máquina. Ela se concentra em projetar soluções inteligentes de processamento de documentos para clientes da AWS. Fora do trabalho, ela gosta de dançar salsa e bachata.

local_img

Inteligência mais recente

local_img