Usar a verificação de base contextual para filtrar alucinações nas respostas
As Barreiras de Proteção do Amazon Bedrock permitem verificações de base contextual para detectar e filtrar alucinações nas respostas do modelo quando uma fonte de referência e uma consulta do usuário são fornecidas. Os casos de uso compatíveis abrangem geração aumentada via recuperação (RAG), resumo, paráfrase ou agentes conversacionais que dependem de uma fonte de referência, como trechos recuperados na RAG ou histórico de conversas, para que os agentes fundamentem as conversas.
As verificações de base contextual examinam a relevância de cada fragmento processado. Se qualquer parte for considerada relevante, toda a resposta será considerada relevante, pois contém a resposta à consulta do usuário. Para a API de streaming, isso pode resultar em um cenário em que uma resposta irrelevante seja retornada ao usuário e só ser marcada como irrelevante depois que toda a resposta for transmitida.
As verificações de base contextual avaliam alucinações em dois paradigmas:
-
De base: verifica se a resposta do modelo é factualmente precisa com base na fonte e se está fundamentada na fonte. Qualquer nova informação introduzida na resposta será considerada infundada.
-
Relevância: verifica se a resposta do modelo é relevante para a consulta do usuário.
Considere um exemplo em que a fonte de referência contém “Londres é a capital do Reino Unido. Tóquio é a capital do Japão” e a consulta do usuário é “Qual é a capital do Japão?”. Uma resposta como “A capital do Japão é Londres” será considerada infundada e factualmente incorreta, enquanto uma resposta como “A capital do Reino Unido é Londres” será considerada irrelevante, mesmo que esteja correta e fundamentada na fonte.
nota
Quando uma solicitação inclui várias tags grounding_source, a barreira de proteção combina e avalia todos os valores de grounding_source fornecidos em conjunto, em vez de considerar cada grounding_source separadamente. Esse comportamento é idêntico para a tag query.
nota
Atualmente, a política de base contextual é compatível com no máximo 100.000 caracteres para a fonte de base, 1.000 caracteres para a consulta e 5.000 caracteres para a resposta.
Pontuações e limites de confiança
As verificações de base contextual geram pontuações de confiança correspondentes ao fundamento e à relevância de cada resposta do modelo processada com base na fonte e na consulta fornecida pelo usuário. É possível configurar limites para filtrar as respostas do modelo com base nas pontuações geradas. O limite de filtragem determina a pontuação de confiança mínima permitida para que a resposta do modelo seja considerada fundamentada e relevante na aplicação de IA generativa. Por exemplo, se o limite de base e o limite de relevância estiverem definidos em 0,7, todas as respostas do modelo com uma pontuação de base ou relevância inferior a 0,7 serão detectadas como alucinações e bloqueadas na aplicação. À medida que o limite de filtragem aumenta, a probabilidade de bloquear conteúdo não fundamentado e irrelevante aumenta, e a probabilidade de ver conteúdo alucinado na aplicação diminui. É possível configurar valores limite de base e de relevância entre 0 e 0,99. Um limite de 1 é inválido, pois bloqueará todo o conteúdo.
As verificações de base contextual requerem três componentes para realizar a verificação: a fonte de base, a consulta e o conteúdo a ser protegido (ou a resposta do modelo). Eles são configurados de forma diferente, dependendo de você estar usando APIs Invoke, APIs Converse ou ApplyGuardrail diretamente.
-
Fonte de base: as informações contextuais necessárias para responder a qualquer consulta do usuário. Por exemplo, “Londres é a capital do Reino Unido. Tóquio é a capital do Japão”.
-
Consulta: uma pergunta que um usuário pode fazer. Por exemplo, “Qual é a capital do Japão?”.
-
Conteúdo a ser protegido: o texto que deve ser protegido em relação à fonte de base e à consulta. Para as APIs Invoke e Converse, essa é a resposta do modelo. Por exemplo, pode ser “A capital do Japão é Tóquio”.
Exemplo não fundamentado
-
Fonte de base: “Londres é a capital do Reino Unido. Tóquio é a capital do Japão”.
-
Consulta: “Qual é a capital do Japão?”
-
Conteúdo a ser protegido: “A capital do Japão é Londres”.
Neste exemplo, o conteúdo a ser protegido é relevante para a consulta, mas não é fundamentado, pois não usa a fonte de base corretamente. Isso teria uma pontuação de base baixa.
Exemplo irrelevante
-
Fonte de base: “Londres é a capital do Reino Unido. Tóquio é a capital do Japão”.
-
Consulta: “Qual é a capital do Japão?”
-
Conteúdo para proteger: “A capital do Reino Unido é Londres”.
Neste exemplo, o conteúdo a ser protegido é fundamentado, mas não é relevante. Ele usa informações da fonte de base, mas não responde à consulta. Esse exemplo teria uma pontuação de relevância baixa.
Exemplo infundado e irrelevante
-
Fonte de base: “Londres é a capital do Reino Unido. Tóquio é a capital do Japão”.
-
Consulta: “Qual é a capital do Japão?”
-
Conteúdo para proteger: “Está chovendo lá fora”.
Neste exemplo, o conteúdo a ser protegido não é fundamentado e não é relevante. Ele não usa informações da fonte de base, nem responde à consulta. Esse exemplo teria uma pontuação de base baixa e uma relevância baixa.
Mais exemplos
Considere uma aplicação bancária criada para responder a perguntas relacionadas a taxas e cobranças.
Fonte:
-
Não há taxas associadas à abertura de uma conta corrente.
-
A taxa mensal de manutenção de uma conta corrente é de USD 10.
-
Há uma cobrança de 1% para transações de transferências internacionais.
-
Não há cobranças associadas às transferências domésticas.
-
As cobranças associadas a pagamentos atrasados da fatura do cartão de crédito é de 23,99%.
Com base na fonte acima, pode haver quatro cenários, dependendo da consulta do usuário.
Fundamentado e relevante
-
P: Quais são as taxas associadas à conta corrente?
-
R: A taxa mensal de manutenção de uma conta corrente é de USD 10. Não há cobranças associadas às transferências domésticas. No entanto, há uma cobrança de 1% para transações de transferências internacionais. Não há taxas associadas à abertura de uma conta corrente.
Não fundamentado, mas relevante
-
P: Qual é a taxa de transação associada a cartão de crédito?
-
R: As cobranças de transações associadas a cartão de crédito é de 23,99%.
Fundamentado, mas irrelevante
-
P: Quais são as cobranças pelo uso de uma conta corrente bancária?
-
R: Com base nas informações fornecidas, a taxa de atraso no pagamento de um cartão de crédito é de 23,99%.
Não fundamentado, mas irrelevante
-
P: Quais são as cobranças pelo uso de uma conta corrente bancária?
-
R: As cobranças da conta de corretagem são de USD 0,5 por transação comercial.
Tópicos
Adicionar verificações de base contextual com o console
Faça login no Console de gerenciamento da AWS com uma identidade do IAM que tenha permissões para usar o console do Amazon Bedrock. Em seguida, abra o console do Amazon Bedrock em https://console.aws.amazon.com/bedrock/
. -
No painel de navegação à esquerda, escolha Barreiras de proteção e selecione Criar uma barreira de proteção.
-
Na página Fornecer detalhes da barreira de proteção, faça o seguinte:
-
Na seção Detalhes da barreira de proteção, forneça um Nome e uma Descrição opcional para a barreira de proteção.
-
Em Mensagens para prompts bloqueados, insira uma mensagem que exibida quando a barreira de proteção é aplicada. Marque a caixa de seleção Aplicar a mesma mensagem bloqueada para respostas para usar a mesma mensagem quando a barreira de proteção for aplicada na resposta.
-
(Opcional) Para habilitar a inferência entre regiões para a barreira de proteção, expanda Inferência entre regiões e selecione Habilitar inferência entre regiões para sua barreira de proteção. Escolha um perfil de barreira de proteção que defina as Regiões da AWS de destino para as quais as solicitações de inferência de barreira de proteção podem ser roteadas.
-
(Opcional) Por padrão, a barreira de proteção é criptografada com uma Chave gerenciada pela AWS. Para usar sua própria chave do KMS gerenciada pelo cliente, expanda Seleção da chave do KMS e marque a caixa de seleção Personalizar configurações de criptografia (avançadas).
É possível selecionar uma chave do AWS KMS existente ou selecionar Criar uma chave do AWS KMS para criar uma chave.
-
(Opcional) Para adicionar tags à barreira de proteção, expanda Tags e selecione Adicionar nova tag para cada tag que você definir.
Para obter mais informações, consulte Marcação de recursos do Amazon Bedrock.
-
Escolha Próximo.
-
-
Na página Adicionar verificação de base contextual, configure limites para bloquear informações não fundamentadas ou irrelevantes.
nota
Para cada tipo de verificação, é possível mover o controle deslizante ou inserir um valor limite de 0 a 0,99. Selecione um limite apropriado para seus usos. Um limite mais alto exige que as respostas sejam fundamentadas ou relevantes, com um alto grau de confiança para serem permitidas. As respostas abaixo do limite serão filtradas.
-
No campo Base, selecione Habilitar verificação de base para verificar se as respostas do modelo estão fundamentadas.
-
No campo Relevância, selecione Habilitar verificação de relevância para verificar se as respostas do modelo são relevantes.
-
Ao concluir a configuração dos filtros de informações confidenciais, selecione Próximo ou Ir para analisar e criar.
-
Chamar a verificação de base contextual com APIs Invoke
Para marcar a fonte de base e a consulta na entrada, fornecemos duas tags que funcionam da mesma forma que as tags de entrada. Essas tags são amazon-bedrock-guardrails-groundingSource_xyz e amazon-bedrock-guardrails-query_xyz supondo que o sufixo da tag seja xyz. Por exemplo:
{ "text": """ <amazon-bedrock-guardrails-groundingSource_xyz>London is the capital of UK. Tokyo is the capital of Japan. </amazon-bedrock-guardrails-groundingSource_xyz> <amazon-bedrock-guardrails-query_xyz>What is the capital of Japan?</amazon-bedrock-guardrails-query_xyz> """, "amazon-bedrock-guardrailConfig": { "tagSuffix": "xyz", }, }
Observe que a resposta do modelo é necessária para realizar verificações de base contextual e, portanto, as verificações só serão executadas na saída e não no prompt.
Essas tags podem ser usadas com as tags guardContent. Se nenhuma tag guardContent for usada, a barreira de proteção usará como padrão a aplicação de todas as políticas configuradas em toda a entrada, incluindo a fonte de base e a consulta. Se as tags guardContent forem usadas, a política de verificação de base contextual investigará apenas a fonte de base, a consulta e a resposta, enquanto as demais políticas investigarão o conteúdo dentro das tags guardContent.
Chamar a verificação de base contextual com APIs Converse
Para marcar a fonte de base e a consulta das APIs Converse, use o campo de qualificadores em cada bloco de conteúdo de proteção. Por exemplo:
[ { "role": "user", "content": [ { "guardContent": { "text": { "text": "London is the capital of UK. Tokyo is the capital of Japan", "qualifiers": ["grounding_source"], } } }, { "guardContent": { "text": { "text": "What is the capital of Japan?", "qualifiers": ["query"], } } }, ], } ]
Observe que a resposta do modelo é necessária para realizar verificações de base contextual e, portanto, as verificações só serão executadas na saída e não no prompt.
Se nenhum dos blocos de conteúdo estiver marcado com o qualificador guard_content, a política de verificações de base contextual investigará apenas a fonte de base, a consulta e a resposta. As demais políticas seguirão o comportamento padrão de investigação: o padrão de prompt do sistema é não ser investigado, e o padrão de mensagens é serem investigadas. Se, no entanto, um bloco de conteúdo estiver marcado com o qualificador guard_content, a política de verificações de base contextual investigará apenas a fonte de base, a consulta e a resposta, enquanto as demais políticas investigarão o conteúdo marcado com as tags guardContent.
Chamar a verificação de base contextual com a API ApplyGuardrail
Usar a verificação de base contextual com ApplyGuardrail é semelhante a usá-la com as APIs Converse. Para marcar a fonte de base e a consulta para ApplyGuardrail, use o campo de qualificadores em cada bloco de conteúdo. No entanto, como um modelo não é invocado com ApplyGuardrail, forneça também um bloco de conteúdo extra com o conteúdo a ser protegido. Esse bloco de conteúdo pode ser qualificado opcionalmente com guard_content e é equivalente à resposta do modelo nas APIs Invoke* ou Converse*. Por exemplo:
[ { "text": { "text": "London is the capital of UK. Tokyo is the capital of Japan", "qualifiers": [ "grounding_source" ] } }, { "text": { "text": "What is the capital of Japan?", "qualifiers": [ "query" ] } }, { "text": { "text": "The capital of Japan is Tokyo." } } ]
Observe que a resposta do modelo é necessária para realizar verificações de base contextual e, portanto, as verificações só serão executadas na saída e não no prompt.
Se nenhum dos blocos de conteúdo estiver marcado com o qualificador guard_content, a política de verificações de base contextual investigará apenas a fonte de base, a consulta e a resposta. As demais políticas seguirão o comportamento padrão de investigação: o padrão de prompt do sistema é não ser investigado, e o padrão de mensagens é serem investigadas. Se, no entanto, um bloco de conteúdo estiver marcado com o qualificador guard_content, a política de verificações de base contextual investigará apenas a fonte de base, a consulta e a resposta, enquanto as demais políticas investigarão o conteúdo marcado com as tags guardContent.