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 para ajudar as pessoas que querem doar sangue e garantir que atendam aos requisitos de qualificação necessários. O agente vai usar dados públicos reais e modelos de linguagem grande (LLMs) generativos do Google durante o fulfillment do Dialogflow CX.

Recursos que serão usados

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 do repositório de dados.

Com esse recurso, você fornece o URL de um site, dados estruturados ou não estruturados (armazenamentos de dados). Em seguida, o Google analisa seu conteúdo e cria um agente virtual com tecnologia de armazenamento 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 à Vertex AI para Conversação para saber mais sobre esse tipo de agente.

Geradores

O recurso gerador do Dialogflow CX permite que os desenvolvedores usem os modelos de linguagem grande (LLMs) mais recentes do Google e prompts personalizados 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 de texto no qual foi treinado ou contexto da conversa.

Substituto generativo

O recurso de substituto generativo usa os modelos de linguagem grandes generativos (LLMs) mais recentes do Google para gerar respostas de agentes virtuais quando a entrada do usuário final não corresponde a uma intent ou parâmetro para o preenchimento de formulários. O recurso pode ser configurado com um comando de texto que instrui o LLM a responder. É possível usar um comando de texto predefinido ou adicionar seus próprios comandos. É possível ativar substitutos generativos em manipuladores de eventos sem correspondência usados em fluxos, páginas ou durante o preenchimento de parâmetros. Quando o substituto generativo está ativado para um evento sem correspondência, sempre que ele é acionado, o Dialogflow tenta produzir uma resposta que será enviada ao usuário. Se a geração da resposta não for bem-sucedida, a resposta normal prescrita do agente será emitida. Se quiser saber mais sobre substitutos generativos, confira este codelab.

O que você vai aprender

  • Como criar um agente de repositório de dados a partir de dados não estruturados.
  • Como usar gerenciadores de conhecimento para 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 e contextualizá-lo usando marcadores de posição de comandos do gerador integrado.
  • Como marcar palavras como marcadores de posição de comandos do gerador e, depois, associá-las aos parâmetros de sessão no fulfillment para usar os valores durante a execução.
  • Como configurar um gerador para lidar com respostas que envolvem conhecimento de um grande conjunto de dados de texto e contexto da conversa atual.
  • Como criar um e-mail formal usando geradores
  • Como testar seu agente e simular as perguntas do cliente 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, você precisa ativar o Dialogflow e as APIs Vertex AI para Pesquisa e Conversação.

Para ativar a API Dialogflow, siga estas etapas:

  1. No navegador, acesse a página de detalhes 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, acesse 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 seu app

Agora você criará um novo app de chat para seu agente virtual e o configurará com uma fonte de dados. O objetivo do agente que você criará é ajudar os clientes que têm dúvidas sobre a elegibilidade do sangue. Você usará o Lifeblood da Cruz Vermelha Australiana como fonte de informações e criará um repositório de dados com base em dados não estruturados do site de elegibilidade de sangue.

  1. Para criar um novo app de chat na Vertex AI para Conversação, você tem as seguintes opções:
    1. Acesse o Console da Vertex AI para Conversação e clique em +Novo app na 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. Você será redirecionado para a etapa a seguir no console da Vertex AI para Conversação.
  2. No console da Vertex AI para Conversação, selecione Chat como o tipo de app que você quer criar.
  3. Preencha o campo Nome da empresa com 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 pasta do Google Cloud Storage abaixo, que contém dados de amostra para este codelab. 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 do 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 Australian Red Cross Lifeblood Unstructured recém-criado.
  14. Clique em Criar para criar seu app de chat.

Parabéns! Você terminou de criar seu app de chat baseado em conhecimento e está pronto para ajudar possíveis doadores. Então reserve um momento para comemorar.

Mas ainda há mais trabalho a ser feito para tornar o agente acessível aos usuários. Na próxima seção, você vai usar um gerenciador de conhecimento para permitir 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ção de sangue

Fornecer a solicitação de armazenamento de data

Enquanto o processo de coleta de documentos é executado em segundo plano, vamos dar uma marca ao agente editando o comando do repositório de dados.

  1. No console da Vertex AI para Conversação, clique no nome do app de chat. Isso vai redirecionar você para o console do Dialogflow CX para mais testes e personalizações.
  2. No console do Dialogflow CX e no seu agente, clique em Configurações do agente no canto superior direito da página. Em seguida, 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 a seguinte solicitação de repositório de dados: seu nome é Donate e você é um chatbot útil e educado em Save a life, a fictitious organization. Sua tarefa é ajudar humans with eligibility information.

Preencha o formulário para gerar o comando

Ativar substituto generativo para o evento sem correspondência do fluxo inicial padrão

  1. Mude para a guia Build e abra a Página inicial.
  2. Clique no manipulador de eventos sys.no-match-default. A menos que a caixa já esteja marcada, ative o recurso substituto generativo.

Ativar substituto generativo quando não houver correspondência de fluxo

Verificar o repositório de dados do agente

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

Editar repositórios de dados

O repositório de dados criado anteriormente já foi selecionado pelo Dialogflow.

Associar o repositório de dados que você criou

Role para baixo até Agent Responses em Fulfillment. Um fulfillment é a resposta do agente para o usuário final. O Dialogflow preencheu O Agente diz com o parâmetro $request.knowledge.answers[0] que, no ambiente de execução, contém a principal resposta para a pergunta do usuário.

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

5. Testar o agente

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

Clique em Agente de teste para abrir o Simulador novamente.

Testar agente novamente

Faça 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

Observe que as respostas foram extraídas do site da Cruz Vermelha Australiana. Conforme nesta página há idades mínimas e máximas para doação de sangue. A idade mínima é 18 anos, e a máxima é 75 para doadores novos. 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 pela resposta JSON original.

Inspecionar a resposta JSON original

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

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

Agente: "Sinto muito, não posso ajudar com isso. Como posso ajudar com as informações de qualificação?"

A resposta contém conteúdo gerado por IA e deriva do comando de texto que o Dialogflow criou a partir da configuração do conector de conhecimento fornecida anteriormente: "Seu nome é Donate, e você é um chatbot útil e educado no Save a Life. Sua tarefa é ajudar pessoas com informações sobre qualificação". Esse comando de texto contém o nome da empresa, o nome do agente e, o mais importante, o que está no escopo, que é usado pelo Dialogflow para gerar a resposta do agente.

Muito bem! Até agora, você está usando o repositório de dados para ajudar as pessoas com perguntas frequentes relacionadas à doação de sangue. Na próxima parte do codelab, veremos como vincular um comando de texto do gerador ao mesmo conteúdo para tomar decisões fundamentadas.

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

Nossa próxima tarefa é criar o agente para determinar a qualificação do usuário para doar sangue. Existem requisitos rigorosos que os doadores precisam atender, como idade, peso, condições atuais, viagens recentes etc. Para o escopo deste codelab, vamos considerar apenas idade e peso. Um gerador usa os modelos de linguagem grandes (LLMs) do Google para tomar uma decisão de forma dinâmica 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?.

Enriquecer 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 "sim" e "não" de resposta. Para começar, crie as intents confirmation.yes e confirmation.no. Siga estas diretrizes sobre a reutilização de intents.
  3. Na Página inicial, crie uma rota para a intent confirmation.yes, que faz a transição para uma nova página de Qualificação Quiz.

Criar uma rota para a intent confirm.yes

Quando confirm.yes é acionado, faz a transição para uma nova página do Teste de qualificação.

  1. Como mencionado anteriormente, simplificaremos o teste e consideraremos apenas a idade e o peso do usuário para determinar se ele pode ou não 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 inicial do comando. Queremos coletar a idade e o peso de uma só vez. Salve todas as mudanças.

Criar parâmetro

Criar e configurar o gerador de qualificação

O recurso gerador do Dialogflow CX permite que os desenvolvedores usem os modelos de linguagem grandes generativos (LLMs) mais recentes do Google durante o fulfillment do Dialogflow CX. Geradores para gerar respostas do agente no ambiente de execução. Um gerador pode lidar com respostas genéricas que envolvem conhecimento geral de um grande conjunto de dados de texto no qual foi treinado ou contexto da conversa.

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

  1. No console do Dialogflow CX, acesse a guia Manage, selecione Generators e clique em Create new.

Criar um novo gerador

  1. Em seguida, forneça 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. Deve ser uma pergunta ou solicitação clara para que o modelo gere uma resposta satisfatória. É possível usar marcadores de posição de comando do gerador integrado especiais no comando de texto:

  • $conversation A conversa entre o agente e o usuário, excluindo o último enunciado do usuário.
  • $last-user-utterance O último enunciado do usuário.

O comando de texto que você configurou espera que o usuário informe a idade e o peso em uma conversa (a "$last-user-utterance").

Usar o gerador no fulfillment e configurar todos os parâmetros necessários

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

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

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

Selecione o gerador "Elegibilidade da doação de sangue", associe marcadores de posição de comandos 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 você testar tudo.

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

7. Testar o agente novamente

Clique em Agente de teste para abrir o simulador novamente.

Testar agente novamente

No Simulador, inicie uma nova conversa com o agente. Primeiro, pergunte sobre as restrições de idade e, em seguida, prossiga para o teste de qualificação. Teste o status "qualificado" primeiro, então insira uma idade entre 18 e 75 anos e um peso acima de 50 kg.

Caminho p/ qualificados

Verifique 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 não? O que acontece se o usuário informar a idade, mas não o peso (ou vice-versa)?

Informe a idade, mas não o peso

8. Ajuste de prompts do gerador

Coletar a idade e o peso de uma atrás da outra parece não funcionar, a menos que a idade e o peso sejam informados. Em vez disso, devemos criar um formulário que colete os dois valores como parâmetros de entidade. Para tornar a solicitação contextual de todos os requisitos de qualificação (como idade e peso), podemos usar marcadores de posição adicionando um $ antes da palavra. Mais tarde, vamos associar esses marcadores de posição de prompt do gerador a parâmetros de sessão no fulfillment, que serão substituídos pelos valores do parâmetro de sessão durante a execução.

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

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 fulfillment da rota. Clique em Salvar.

Remover o gerador

  1. Acesse a guia Gerenciar, selecione Geradores e atualize o comando de texto do gerador Elegibilidade 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.

Além de contextualizar os parâmetros do formulário de idade e peso, também alteramos a última frase para gerar um e-mail formal com o resultado oficial do teste de qualificação para o usuário.

Reconfigurar o comando de texto

  1. Na página Eligibility Quiz, selecione a rota e abra a seção Generators do painel Fulfillment. Em seguida, clique em Adicionar gerador e selecione o gerador de qualificação de doação de sangue. Depois de selecionar o gerador, você precisa associar os novos marcadores de posição de comando aos 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 outra vez. A verificação de elegibilidade agora considera tanto a idade quanto o peso, e o texto mudou de um tom coloquial para uma resposta mais educada que está pronta para ser enviada sem nenhuma interação humana em potencial.

E-mail informando que o usuário não está qualificado

E-mail informando que o usuário está qualificado

9. Parabéns

Parabéns por concluir este codelab.

Parabéns por concluir o codelab.

Hoje investigamos os geradores no contexto de testes de qualificação. Você viu que os geradores usam LLMs para gerar respostas de agentes e, quando são alimentados por uma base de conhecimento, também podem tomar decisões bem fundamentadas. Certamente há muitos outros casos de uso que podem ser implementados usando geradores e repositórios de dados, e estamos ansiosos para conhecê-los!

Limpeza

Faça a limpeza abaixo para evitar cobranças dos recursos usados neste codelab na conta do Google Cloud:

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.