Tomada de decisão informada usando os geradores e repositórios de dados do Dialogflow CX

1. Visão geral

Última atualização:10/10/2023

O que você vai criar

Neste codelab, você vai usar a Vertex AI para Conversação e o Dialogflow CX para criar, implantar e configurar um agente virtual que ajude as pessoas que querem doar sangue e garantir que elas atendam aos requisitos de qualificação necessários. O agente usa dados públicos reais e modelos de linguagem grandes (LLMs, na sigla em inglês) generativos do Google durante o fulfillment do Dialogflow CX.

Quais recursos você vai usar

Para concluir o codelab, você vai configurar e usar três recursos distintos:

Agentes de repositório de dados

O recurso Vertex AI para Conversação cria um agente especial do Dialogflow, chamado de agente de repositório de dados.

Com esse recurso, você fornece um URL de site, dados estruturados ou não estruturados (repositórios de dados). Depois, o Google analisa o conteúdo e cria um agente virtual com tecnologia de repositórios de dados e modelos de linguagem grandes. Assim, seus clientes e usuários finais podem conversar com o agente e fazer perguntas sobre o conteúdo. Consulte a Introdução ao Vertex AI para Conversação para informações sobre esse tipo de agente.

Geradores

O gerador é um recurso do Dialogflow CX que permite aos desenvolvedores usar os mais recentes modelos de linguagem grandes generativos do Google e comandos personalizados para gerar respostas do agente em tempo real. Um gerador pode lidar com respostas genéricas que envolvem conhecimento geral de um grande conjunto de dados textuais usados para treiná-lo ou com base no contexto da conversa.

Resposta generativa de substituição

O recurso de resposta generativa de substituição usa os modelos de linguagem grandes (LLMs) generativos mais recentes do Google para gerar respostas do agente virtual quando a entrada do usuário final não corresponde a uma intent ou a um parâmetro para preencher formulários. Esse recurso pode ser configurado com um comando de texto que instrui o LLM a responder. Você pode usar um comando de texto predefinido ou adicionar seus próprios comandos. Você pode ativar a substituição generativa em manipuladores de eventos de não correspondência usados em fluxos, páginas ou durante o preenchimento de parâmetros. Quando a substituição generativa está ativada para um evento sem correspondência, sempre que esse evento é acionado, o Dialogflow tenta gerar uma resposta para o usuário. Se a geração de resposta não der certo, a resposta regular do agente será mostrada. Se você quiser saber mais sobre o fallback generativo, confira este codelab.

O que você vai aprender

  • Como criar um agente de repositório de dados com dados não estruturados
  • Como usar gerenciadores de conhecimento para permitir que os usuários finais conversem com um agente virtual sobre o conteúdo adicionado a um repositório de dados.
  • Como configurar um comando de texto do gerador para usar informações de contexto usando os marcadores de posição de comando integrados do gerador.
  • Como marcar palavras como marcadores de posição de comando do gerador e associá-los a parâmetros de sessão no processamento da resposta para usar esses valores durante a execução.
  • Como configurar um gerador para processar respostas que envolvem conhecimento de um grande conjunto de dados textuais e o contexto da conversa atual.
  • Como gerar um e-mail formal usando geradores
  • Como testar seu agente e simular perguntas de clientes que acionam respostas geradas

O que é necessário

  • Um projeto do Google Cloud
  • Um navegador, como o Chrome

2. Ativar APIs

Antes de criar um agente de repositório de dados na Vertex AI para Conversação, é necessário ativar o Dialogflow e as APIs da Vertex AI para Pesquisa e Conversação.

Para ativar a API Dialogflow, siga estas etapas:

  1. No navegador, acesse a página de detalhes do serviço da API Dialogflow.
  2. Clique no botão Ativar para ativar a API Dialogflow no seu projeto do Google Cloud.

Para ativar a API Vertex AI para Pesquisa e Conversação, siga estas etapas:

  1. No console do Google Cloud, navegue até o console da Vertex AI para Pesquisa e Conversação.
  2. Leia e aceite os Termos de Serviço e clique em Continuar e ativar a API.

3. Criar um novo app de chat e um repositório de dados para o app

Agora, você vai criar um novo app de chat para seu agente virtual e configurá-lo com uma fonte de dados. O objetivo do agente que você vai criar é ajudar clientes que têm dúvidas sobre as qualificações necessárias para doar sangue. Você vai usar o Australian Red Cross Lifeblood como fonte de verdade e criar um repositório de dados com base em dados não estruturados do site de qualificação para doação de sangue.

  1. Para criar um app de chat na Vertex AI para Conversação, você pode:
    1. Acesse o console da Vertex AI para Conversação e clique em +Novo app perto da parte de cima do console.
    2. Navegue até o console do Dialogflow CX, clique em +Criar novo agente e selecione a opção Gerar automaticamente. Em seguida, você será redirecionado para a próxima etapa no console do Vertex AI para Conversação.
  2. No console do Vertex AI para Conversação, selecione Chat como o tipo de app que você quer criar.
  3. Informe um Nome da empresa de Save a Life. Esse parâmetro é usado para definir a empresa que seu agente representa e o escopo do seu agente.
  4. Especifique um Nome de agente de Blood Donation Agent.
  5. Clique em Continuar.
  6. Clique em Criar novo repositório de dados.
  7. Selecione Cloud Storage como a fonte de dados do seu repositório de dados.
  8. Especifique a seguinte pasta do Google Cloud Storage que contém dados de amostra para este codelab. Observe que o prefixo gs:// não é obrigatório:
    cloud-samples-data/dialogflow-cx/arc-lifeblood
    
  9. Selecione Documentos não estruturados como o tipo de dado que você está importando.
  10. Clique em Continuar.
  11. Especifique um Nome de repositório de dados de Australian Red Cross Lifeblood Unstructured.
  12. Clique em Criar para criar o repositório de dados.
  13. Na lista de repositórios de dados, selecione o recém-criado Australian Red Cross Lifeblood Unstructured.
  14. Clique em Criar para criar seu app de chat.

Parabéns! Você concluiu a criação do seu app de chat com tecnologia de conhecimento, e ele está pronto para ajudar possíveis doadores.

Porém, você precisa seguir mais algumas etapas para disponibilizar o agente aos usuários. Na próxima seção, você vai usar um gerenciador de conhecimento para habilitar as conversas entre o agente e os usuários finais sobre os requisitos de qualificação.

4. Configurar o agente para responder a perguntas frequentes sobre qualificações para doação de sangue

Fornecer o comando de armazenamento de datas

Enquanto o processo de coleta de documentos é executado em segundo plano, vamos criar uma marca para o agente com uma edição do comando do repositório de dados.

  1. No console da Vertex AI para Conversação, clique no nome do seu app de chat para ser redirecionado ao console do Dialogflow CX para mais testes e personalização.
  2. No console do Dialogflow CX e no agente, clique em Configurações do agente (canto superior direito da página), acesse a guia ML e abra a guia IA generativa.

Acessar o comando do repositório de dados

  1. Preencha o formulário abaixo para gerar este comando do repositório de dados: seu nome é Donate. Você é um chatbot prestativo e educado da Save a life, a fictitious organization. Sua tarefa é ajudar humans with eligibility information.

Preencha o formulário para gerar seu comando

Ativar a substituição generativa para o evento de não correspondência do Fluxo de início padrão

  1. Mude para a guia Build e abra a Start Page.
  2. Clique no manipulador de eventos sys.no-match-default. Se a caixa não estiver marcada, ative o recurso de substituição generativa.

Ativar a substituição generativa em não correspondência de fluxo

Verificar o repositório de dados do agente

Na Página inicial, clique em Editar repositórios de dados para conferir as configurações do repositório de dados.

Editar repositórios de dados

O repositório de dados que você criou já foi selecionado pelo Dialogflow.

Associe o repositório de dados que você criou.

Role a tela para baixo até Respostas do agente em Fulfillment. Um fulfillment é a resposta do agente ao usuário final. O Dialogflow já preencheu o campo O agente diz com o parâmetro $request.knowledge.answers[0], que, no tempo de execução, contém a melhor resposta para a pergunta do usuário.

A resposta do agente contém a melhor resposta para a pergunta do usuário.

5. Testar o agente

Quando os documentos estiverem disponíveis e prontos para uso pelo seu agente, verifique a qualidade das respostas.

Clique em Testar agente para abrir o Simulador novamente.

Testar o agente de novo

Faça as perguntas que você espera encontrar na página de perguntas frequentes do site:

  • What age do I need to be to donate?
  • Can pregnant women donate?
  • I've just come back from a trip to Africa. Can I donate?
  • How can I schedule an appointment?

Verificar se as respostas vêm da base de conhecimento

As respostas são recuperadas do site da Cruz Vermelha Australiana. Conforme indicado nesta página, há idades mínima e máxima para doação de sangue. A idade mínima é de 18 anos, e a máxima é de 75 para doadores de primeira vez. Outra evidência de que estamos extraindo informações do repositório de dados é o pequeno ícone de estrela que aparece na resposta do agente e na resposta JSON original.

Inspecionar a resposta JSON original

Por fim, vamos tentar desafiar o agente com uma pergunta não relacionada à doação de sangue.

Usuário: "Como está o clima em Melbourne?"

Agente: "Desculpe, não posso ajudar com isso. Como posso ajudar você com informações sobre qualificação?"

Essa resposta tem conteúdo gerado com IA e deriva do comando de texto criado pelo Dialogflow com base na configuração do conector de conhecimento fornecida anteriormente: "seu nome é Donate. Você é um chatbot prestativo e educado da Save a Life. Sua tarefa é ajudar as pessoas a encontrar informações sobre qualificação". Essa solicitação de texto contém o nome da empresa, o nome do agente e, o mais importante, o que está no escopo dele. O Dialogflow usa essas informações para gerar a resposta do agente.

Muito bem! Você está usando o repositório de dados para ajudar as pessoas com perguntas frequentes sobre doação de sangue. Na próxima parte do codelab, vamos analisar como vincular um comando de texto do gerador ao mesmo conteúdo para uma tomada de decisão informada.

6. Configurar o agente para o teste de qualificação

Nossa próxima tarefa é configurar o agente para determinar se o usuário está qualificado para doar sangue. Os doadores precisam atender a critérios rigorosos, como idade, peso, condições preexistentes, viagens recentes etc. Para o escopo deste codelab, vamos considerar apenas idade e peso. Um gerador usa os modelos de linguagem grandes do Google para tomar uma decisão informada com base no contexto da conversa e na base de conhecimento.

Configurar novas rotas e parâmetros

  1. Abra a Página inicial e clique em Editar repositórios de dados.
  2. Mude a resposta do agente para $request.knowledge.answers[0] Would you like to take the eligibility quiz to find out if you can donate blood, and start changing lives?.

Enriqueça a resposta do agente às perguntas frequentes do usuário

  1. Clique no botão Salvar.
  2. Agora precisamos projetar o agente para lidar com respostas "sim" e "não". Para começar, crie uma intent confirmation.yes e uma confirmation.no. Siga estas diretrizes sobre a reutilização de intenções.
  3. Em seguida, na Página inicial, crie uma rota para a intent confirmation.yes que faz a transição para uma nova página Teste de qualificação.

Criar uma rota para a intent confirmation.yes

Quando "confirmation.yes" é acionado, a transição é feita para uma nova página do teste de qualificação.

  1. Como mencionado antes, vamos simplificar o teste e considerar apenas a idade e o peso do usuário para determinar se ele está qualificado para doar. Abra a página Teste de qualificação e adicione um novo parâmetro de formulário age-weight. Escolha @sys.any como o tipo de entidade. Forneça "What is your age and weight?" como o fulfillment do prompt inicial. Queremos coletar idade e peso de uma só vez. Salve todas as mudanças.

Criar parâmetro

Criar e configurar o gerador de qualificação

O recurso de gerador é um recurso do Dialogflow CX que permite aos desenvolvedores usar os modelos de linguagem grandes generativos mais recentes do Google durante o fulfillment do Dialogflow CX. Geradores para gerar respostas de agentes no ambiente de execução. Um gerador pode lidar com respostas genéricas que envolvem conhecimento geral de um grande conjunto de dados textuais usados para treiná-lo ou com base no contexto da conversa.

Vamos criar um gerador para comparar as informações fornecidas pelo usuário (como idade e peso) com os requisitos de qualificação para determinar se esse usuário pode doar sangue.

  1. No console do Dialogflow CX, acesse a guia Gerenciar, selecione Geradores e clique em Criar.

Criar um novo gerador

  1. Em seguida, insira um nome de exibição descritivo e escreva o comando de texto. Mantenha as configurações padrão de controle de qualidade do modelo. Em seguida, clique em Salvar para criar o gerador.
    • Nome de exibição: Blood Donation Eligibility
    • Comando de texto: Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. Weight should be above 50 Kg. The user age and weight is $last-user-utterance. Be nice and tell the user if they are eligible to donate (also tell them why not in case)

O comando de texto é enviado ao modelo generativo durante o fulfillment no ambiente de execução. O modelo precisa de uma pergunta ou solicitação clara para gerar uma resposta satisfatória. Você pode usar marcadores de posição especiais de comandos do gerador integrados no comando de texto:

  • $conversation: a conversa entre o agente e o usuário, excluindo a última declaração do usuário.
  • $last-user-utterance A última declaração do usuário.

O comando de texto configurado espera que o usuário informe a idade e o peso dele em uma única rodada de conversa (a `$last-user-utterance``).

Use o gerador no fulfillment e configure todos os parâmetros necessários

  1. Na página Teste de qualificação, adicione uma nova rota que vai ocorrer quando todos os parâmetros forem preenchidos. Insira o requisito de condição $page.params.status = "FINAL" e clique em Salvar.

Adicione uma nova rota que vai ocorrer quando todos os parâmetros forem preenchidos.

  1. Acesse e expanda a seção Geradores do painel Fulfillment. Em seguida, clique em Adicionar gerador e selecione o gerador Qualificação para doação de sangue. Depois de selecionar o gerador, defina o parâmetro de saída que vai conter o resultado do gerador após a execução.

Selecione o gerador "Qualificação para doação de sangue", associe os marcadores de posição de comando aos parâmetros de sessão e defina o parâmetro de saída.

  1. Use o parâmetro de saída na resposta do agente e salve a rota. Agora está tudo pronto para testar.

Usar o parâmetro de saída na resposta do agente

7. Testar seu agente de novo

Clique em Testar agente para abrir o simulador novamente.

Testar o agente de novo

No Simulador, inicie uma nova conversa com o agente. Primeiro, pergunte sobre os requisitos de idade e depois faça o teste de qualificação. Teste primeiro o caminho "qualificado". Insira uma idade entre 18 e 75 anos e um peso acima de 50 kg.

Caminho p/ qualificados

Em seguida, veja se a verificação de qualificação falha quando um ou ambos os requisitos não são atendidos.

Caminho p/ não qualificados

Ótimo, o gerador funciona como esperado! Ou será que funciona mesmo? O que acontece se o usuário informar a idade, mas não o peso (ou vice-versa)?

Informar a idade, mas não o peso

8. Ajustar os comandos do gerador

Parece que não funciona coletar idade e peso em uma única frase, a menos que ambas as informações sejam fornecidas. Em vez disso, crie um formulário que colete esses dois valores como parâmetros de entidade. Para ativar o aspecto contextual do comando de todos os requisitos de qualificação (como idade e peso), podemos usar marcadores de posição adicionando um $ antes da palavra. Depois, vamos associar esses marcadores de posição de comando do gerador a parâmetros de sessão no fulfillment. Eles serão substituídos pelos valores de parâmetro de sessão durante a execução.

  1. Abra a página Teste de qualificação e adicione dois parâmetros separados do formulário: um para peso e outro para idade. Escolha @sys.number-integer como o tipo de entidade e marque os parâmetros necessários. Forneça as respostas iniciais, como How old are you? e What is your correct weight?. Salve todas as alterações.

Formulário de qualificação

  1. Antes de mudar o comando de texto do gerador, já que vamos adicionar dois novos marcadores de posição personalizados, precisamos remover o gerador do atendimento de rota. Clique em Salvar.

Remover o gerador

  1. Acesse a guia Gerenciar, selecione Geradores e atualize o comando de texto do gerador Qualificação para doação de sangue com: Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. The weight must be at least 50 kg. The user is $age years old and weighs $weight Kg. Craft an email and politely explain to the user if they're eligible to donate and if not why.. Clique em Salvar.

Observe que contextualizamos o comando de texto com os parâmetros de idade e peso e também mudamos a última frase para gerar um e-mail formal ao usuário com o resultado oficial do teste de qualificação.

Reconfigurar o comando de texto

  1. Na página Teste de qualificação, selecione a rota e expanda a seção Geradores do painel Fulfillment. Em seguida, clique em Adicionar gerador e selecione o gerador "Qualificação para doação de sangue". Depois de selecionar o gerador, associe os novos marcadores de posição de comando aos seus respectivos parâmetros de sessão. Além disso, você precisa redefinir o parâmetro de saída. Clique em Salvar.

Atualizar as vinculações do gerador

  1. Teste o agente de novo. A verificação de qualificação agora considera idade e peso, e a linguagem mudou de um tom conversacional para uma resposta mais educada, pronta para ser enviada sem um human in the loop.

E-mail informando que o usuário não se qualifica

E-mail informando que o usuário se qualifica

9. Parabéns

Você concluiu este codelab.

Você concluiu o codelab.

Hoje investigamos geradores no contexto de testes de qualificação. Você já viu que os geradores usam LLMs para gerar respostas do agente e que, quando alimentados por uma base de conhecimento, também podem tomar decisões informadas. Ainda deve haver muitos outros casos de uso que podem ser implementados usando geradores e repositórios de dados. Queremos conhecê-los!

Limpeza

Para evitar cobranças na sua conta do Google Cloud pelos recursos usados neste codelab, faça a limpeza a seguir:

Saiba mais

Continue aprendendo sobre IA de conversação e IA generativa com estes guias e recursos:

Licença

Este conteúdo está sob a licença Atribuição 2.0 Genérica da Creative Commons.