View a markdown version of this page

Usar a verificação de base contextual para filtrar alucinações nas respostas - Amazon Bedrock

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á.

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 suportados incluem resumo, paráfrase e resposta a perguntas, conforme definido na disciplina de ciência da computação. (Casos de uso de QA conversacional/Chatbot não são suportados.)

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.

A fundamentação contextual verifica os seguintes 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, isso pode ser “A capital do Japão é Tóquio”.

Exemplo não fundamentado

  • Fonte fundamental - “Londres é a capital do Reino Unido. Tóquio é a capital do Japão.”

  • Consulta - “Qual é a capital do Japão?”

  • Conteúdo para guardar - “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 fundamental - “Londres é a capital do Reino Unido. Tóquio é a capital do Japão.”

  • Consulta - “Qual é a capital do Japão?”

  • Conteúdo para guardar - “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 fundamental - “Londres é a capital do Reino Unido. Tóquio é a capital do Japão.”

  • Consulta - “Qual é a capital do Japão?”

  • Conteúdo para guardar: “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.

Un-grounded 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%.

Un-grounded e 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.

Adicionar verificações de base contextual com o console

  1. Faça login no Console de gerenciamento da AWS com uma identidade do IAM que tenha permissões para usar o console Amazon Bedrock. Em seguida, abra o console Amazon Bedrock em https://console.aws.amazon.com/bedrock.

  2. No painel de navegação à esquerda, escolha Barreiras de proteção e selecione Criar uma barreira de proteção.

  3. Na página Fornecer detalhes da barreira de proteção, faça o seguinte:

    1. Na seção Detalhes da barreira de proteção, forneça um Nome e uma Descrição opcional para a barreira de proteção.

    2. 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.

    3. (Opcional) Para ativar a inferência entre regiões para sua grade de proteção, expanda a inferência e selecione Ativar Cross-Region inferência entre regiões para sua grade de proteção. Escolha um perfil de guardrail que defina o destino para Regiões da AWS onde as solicitações de inferência de guardrail podem ser roteadas.

    4. (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).

      Você pode selecionar uma AWS KMS chave existente ou selecionar Criar uma AWS KMS chave para criar uma nova.

    5. (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.

    6. Escolha Próximo.

  4. 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.

    1. No campo Base, selecione Habilitar verificação de base para verificar se as respostas do modelo estão fundamentadas.

    2. No campo Relevância, selecione Habilitar verificação de relevância para verificar se as respostas do modelo são relevantes.

    3. 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 aterramento e a consulta na entrada, use as seguintes tags que funcionam da mesma forma que as tags de entrada. Essas tags são amazon-bedrock-guardrails-groundingSource_xyz eamazon-bedrock-guardrails-query_xyz, onde xyz está o sufixo da tag. 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 junto com as guardContent tags. O conteúdo interno groundingSource e as query tags são excluídos das avaliações de políticas, exceto a base contextual (filtros de palavras, filtros de tópicos, filtros de conteúdo, detecção de informações confidenciais).

O comportamento das demais políticas depende do uso de guardContent tags:

  • Sem guardContent tags — Outras políticas usam o comportamento padrão: as solicitações do sistema não são investigadas e as mensagens são investigadas.

  • Com guardContent tags — outras políticas investigam somente o conteúdo dentro das guardContent tags. O conteúdo fora de qualquer tag (texto não marcado) e o conteúdo dentro das groundingSource query tags são ignorados.

Para que o conteúdo básico da fonte ou da consulta também seja avaliado pelas demais políticas, coloque a tag de base contextual dentro de uma tag: guardContent

<amazon-bedrock-guardrails-guardContent_xyz><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-guardContent_xyz> <amazon-bedrock-guardrails-query_xyz>What is the capital of Japan?</amazon-bedrock-guardrails-query_xyz>

Neste exemplo, o conteúdo da fonte de base é usado como fonte de referência contextual e avaliado por outras políticas porque também está encapsulado em uma tag. guardContent

Chamando a verificação de aterramento contextual com Converse APIs

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.

O comportamento de políticas que não sejam a base contextual depende dos qualificadores atribuídos a cada bloco: guardContent

  • ["grounding_source"]— O conteúdo é usado apenas como fonte de referência contextual. Não é avaliado por outras políticas.

  • ["query"]— O conteúdo é usado apenas como base contextual para a consulta do usuário. Não é avaliado por outras políticas.

  • ["guard_content"]— O conteúdo é avaliado pela verificação de fundamentação contextual (como conteúdo a ser protegido) e por todas as outras políticas.

  • Sem qualificador (não qualificado) — O conteúdo é avaliado pela verificação contextual de fundamentação (como conteúdo a ser protegido) e por todas as outras políticas.

  • ["grounding_source", "guard_content"]— O conteúdo cumpre as duas funções: é usado como fonte de referência contextual e é avaliado por outras políticas.

  • ["query", "guard_content"]— O conteúdo tem ambas as funções: usado como consulta de base contextual e avaliado por outras políticas.

Se você quiser que sua fonte de base ou conteúdo de consulta também seja avaliado por outras políticas de proteção, adicione-a guard_content à lista de qualificadores junto com o qualificador de base contextual.

Chamando a verificação de aterramento contextual com 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.

Como os qualificadores afetam a avaliação de políticas

Os blocos de conteúdo com grounding_source ou query qualificadores são avaliados somente pela verificação de fundamentação contextual. Esses blocos são excluídos de todas as outras avaliações de políticas de proteção (filtros de palavras, filtros de tópicos, filtros de conteúdo, detecção de informações confidenciais e detecção imediata de ataques).

Para que um bloco de conteúdo seja avaliado tanto pela verificação de fundamentação contextual quanto por outras políticas de proteção, use os dois qualificadores juntos. Por exemplo, especifique ["grounding_source", "guard_content"] marcar um bloco de conteúdo como uma fonte de base que também está sujeita a todas as outras políticas configuradas.

Para políticas que não sejam contextuais para avaliar o conteúdo, pelo menos um bloco de conteúdo deve ser não qualificado ou ser explicitamente qualificado com. guard_content Um bloco de conteúdo não é qualificado quando não tem qualifiers campo.

A tabela a seguir resume como cada combinação de qualificadores afeta a avaliação da política.

Qualificador Verificação de base contextual Outras políticas de proteção

grounding_source

Avaliado (como referência)

Não avaliado

query

Avaliado (como consulta)

Não avaliado

guard_content

Avaliado (como resposta)

Avaliado

Sem qualificador (não qualificado)

Avaliado (como resposta)

Avaliado

["grounding_source", "guard_content"]

Avaliado (como referência)

Avaliado

["query", "guard_content"]

Avaliado (como consulta)

Avaliado