Aumente a cobertura da intent e trate os erros corretamente com o substituto generativo

1. Visão geral

Última atualização:07/08/2023

O que você vai criar

Neste codelab, você vai criar, implantar e configurar um agente virtual simples no Dialogflow CX para ajudar mergulhadores a fazerem reservas em grupo e fretamentos particulares. O agente virtual vai usar a IA generativa e os modelos de linguagem grandes (LLMs) generativos mais recentes do Google para gerar respostas.

O que você vai aprender

  • Como ativar as APIs relevantes
  • Como o Dialogflow preenche automaticamente os valores dos parâmetros de formulários de páginas com base nos parâmetros da intent
  • Como configurar manipuladores de eventos no Dialogflow
  • Como ativar a substituição generativa em manipuladores de eventos de não correspondência usados em fluxos e durante o preenchimento de parâmetros
  • Como configurar seu próprio comando de texto para lidar com as situações conversacionais básicas e as específicas do agente
  • Como escrever boas descrições de intent e parâmetro para gerar manipuladores de reprompt para parâmetros obrigatórios (além de reprompts definidos pelo usuário)
  • Como testar seu agente e simular perguntas de clientes que acionam a substituição generativa

O que é necessário

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

2. Etapas da configuração

Antes de começar a usar o recurso de retorno generativo no Dialogflow CX, é necessário ativar a API Dialogflow.

Ativar a API Dialogflow usando o console do Cloud

  1. Abra o console do Google Cloud no navegador.
  2. No console do Google Cloud, navegue até a Biblioteca de APIs para procurar as APIs e os serviços que podem ser ativados.
  3. Na barra de pesquisa na parte de cima da página da biblioteca de APIs, procure Dialogflow API e clique no serviço resultante.
  4. Clique no botão Ativar para ativar a API Dialogflow no seu projeto do Google Cloud.

Usando a CLI gcloud (alternativa)

Como alternativa, a API pode ser ativada usando o seguinte comando gcloud:

gcloud services enable dialogflow.googleapis.com

Se a API foi ativada, você vai ver uma mensagem semelhante a esta:

Operation "operations/..." finished successfully.

Buscar o código

Você não vai criar o agente virtual do zero. Vamos fornecer um agente que você precisará restaurar no console do Dialogflow CX e depois melhorar.

Para baixar o código-fonte:

  1. Abra uma nova guia do navegador, acesse o repositório do agente e faça a clonagem dele em uma linha de comando.
  2. O agente inicial foi exportado como um pacote JSON. Descompacte o arquivo, inspecione as configurações do agente, confira a definição do fluxo Liveaboards.json e navegue pelas páginas de fluxos, intents e entidades.

3. Criar um novo agente

Abrir o console do Dialogflow

Você vai usar o console do Dialogflow CX e seu projeto na nuvem do Google Cloud para realizar as próximas etapas deste codelab.

  1. No navegador, acesse o console do Dialogflow CX.
  2. Selecione o projeto do Google Cloud que você quer usar ou crie um novo.
  3. Uma lista de agentes vai aparecer no console do Dialogflow CX.

Se esta é a primeira vez que você usa o Dialogflow CX, consulte a documentação dele para mais informações sobre como configurar seu projeto e as configurações de acordo com suas necessidades.

Criar um agente do Dialogflow CX

  1. Para restaurar o agente baixado do repositório do GitHub, é necessário criar um novo agente. No console do Dialogflow CX, clique em Criar agente no canto superior direito da página.

Criar um agente do zero

  1. Selecione a opção Build your own.

Escolha a opção

  1. Preencha o formulário com as configurações de agente abaixo e clique em Create.
  • O nome de exibição deve ser: Divebooker
  • O local será: us-central1
  • Selecione o fuso horário que preferir
  • Selecione en - English como idioma padrão
  1. O Dialogflow vai abrir o agente automaticamente para você. Ainda não acabou!

Restaurar o agente Divebooker

  1. Volte para a página da lista de agentes e encontre o agente que você acabou de criar. Clique na opção 78d2781c655810e7.png e depois no botão Restaurar.
  2. Selecione a opção Upload e arraste e solte ou selecione o arquivo ZIP que você baixou do repositório do GitHub.
  3. Clique no botão Restaurar para importar o agente fornecido.

Clique no botão "Restaurar" para importar o agente que fornecemos.

Muito bem! Você criou seu agente virtual para reservas de mergulho, e ele está pronto para ajudar seus clientes. Na próxima seção, você vai testar o agente para ver se ele consegue responder às dúvidas dos usuários e ajudar a fazer reservas.

4. Testar o agente

O Dialogflow oferece um simulador integrado para conversar com seus agentes e descobrir bugs. Para cada fala, verifique os valores corretos da intent acionada, a resposta do agente, a página ativa e os parâmetros da sessão.

Vamos testar alguns cenários e analisar por que o agente está dando uma determinada resposta.

Intent não resolvida

  1. No console do Dialogflow e no seu agente, clique em Testar agente para abrir o simulador.

Clique em "Testar agente" para abrir o simulador.

  1. Mande um Hello para o agente e pergunte what is a liveaboard?. A pergunta não corresponde a nenhuma intent, e uma resposta genérica, como "Não sei como ajudar", é exibida. Você pode verificar se o evento integrado sys.no-match-default foi invocado. Basta inspecionar a resposta original no simulador.

Cumprimente o agente e pergunte o que é um liveaboard

Role a tela quase até o final da resposta JSON. Observe que, ao procurar uma intent correspondente, o Dialogflow descobre que esta é uma NO_MATCH e gera um evento de não correspondência.

Verifique se o evento sys.no-match-default foi gerado pelo Dialogflow

  1. Mude para a guia Build e abra a Start Page do fluxo Liveaboards.

Mude para a guia "Build" e abra a página inicial do fluxo "Liveaboards".

Por padrão, todo fluxo tem manipuladores para os eventos integrados de não correspondência e sem entrada. Esses manipuladores são criados automaticamente com um fluxo e não podem ser excluídos.

  1. Clique no manipulador de eventos "sys.no-match-default" e role para baixo até a seção Respostas do agente. O Dialogflow fornece uma lista de respostas alternativas, mas você também pode definir diferentes tipos de mensagens de resposta para mostrar ao usuário final mais do que apenas texto.

Analise as respostas predefinidas do agente

Agora vamos para o cenário ideal!

O cenário ideal

Neste segundo caso, finja ser um mergulhador que quer reservar um cruzeiro de mergulho para um grupo de 12 pessoas nas Ilhas Galápagos no próximo ano, em julho.

  1. No painel "Simulator", clique no ícone Reset para iniciar uma nova conversa com o agente.

Redefinir para iniciar uma nova conversa

Mude para a visualização vertical para melhorar a UX

  1. Diga ao agente que você quer reservar um voo fretado para as Ilhas Galápagos e dê os detalhes da sua viagem. Você não precisa usar os mesmos comandos abaixo. Faça testes!

Teste o cenário ideal

  1. Abra a Start Page e clique na rota head.send.group.request. Role para baixo até a seção Transition, que informa ao Dialogflow a página para a qual fazer a transição quando essa intent for correspondida.

Transição para a página "Coletar mais informações"

  1. Feche a definição de Route e clique na página Collect Further Info. Observe o fulfillment da entrada e a lista de parâmetros.

Página "Coletar mais informações"

Para cada página no Dialogflow CX, você pode definir um formulário: uma lista de parâmetros que devem ser coletados do usuário final para a página. O agente não perguntou o destino da viagem porque já transmitimos isso na entrada inicial e destination também é um parâmetro de intent. Enquanto uma página estiver ativada, qualquer parâmetro de formulário com o mesmo nome de um parâmetro de intent é definido automaticamente como o valor do parâmetro de sessão e o comando correspondente é ignorado.

  1. Na seção Intents, mude para a guia Manage e clique na intent head.send group request. Confira as frases de treinamento fornecidas para essa intent e as partes anotadas delas.

Confira as frases de treinamento fornecidas para essa intent e as partes anotadas delas.

  1. Considere a frase de treinamento "I need to organize a trip to Costa Rica for 15 divers". "Costa Rica" é anotado com destination e "15" com number-of-guests. Quando você anota partes de uma frase de treinamento, o Dialogflow reconhece que essas partes são apenas exemplos de valores reais que serão fornecidos pelos usuários finais no ambiente de execução. É por isso que, para a entrada inicial "Do you offer charters to the Galapagos Islands?" O Dialogflow extraiu o parâmetro de destino de "Ilhas Galápagos".

Em seguida, vamos analisar o que acontece se não fornecermos uma entrada válida ao agente quando ele pedir para preencher um parâmetro de formulário.

Entrada inválida

  1. No painel "Simulator", clique no ícone Reset para iniciar uma nova conversa com o agente.
  2. Expresse a intenção de fazer uma reserva para um grupo. Desta vez, não diga ao agente para onde você quer ir. Quando ele perguntar o destino, responda com um valor aleatório que não seja Costa Rica, Galápagos ou México.

Inserir um destino inválido

  1. Na guia Manage, clique em Entity types na seção Resources. Observe duas guias: na guia "System", você encontra as entidades do sistema usadas atualmente pelo seu agente. A guia Custom mostra a lista de entidades personalizadas criadas para corresponder a dados específicos desse agente.

Entidade personalizada de destino

  1. Clique na entidade destination para descobrir a quais valores ela corresponde. "Europe" não é uma das entradas nem um sinônimo.
  2. No diagrama de fluxo, abra a página Collect Further Info que contém os parâmetros do formulário. Clique no parâmetro destination.
  3. No painel de parâmetros, role para baixo até a seção Reprompt event handlers e clique no manipulador de eventos No-match default.

Esse manipulador de eventos no nível do parâmetro lida especificamente com entradas inválidas do usuário final durante o preenchimento do formulário. Como "Europe" é uma entrada inesperada, um evento sys.no-match-default foi invocado, e o manipulador de reenvio do comando correspondente definido para esse evento foi chamado. A seção O agente diz lista duas mensagens alternativas pedindo um novo comando.

Mensagens estáticas alternativas de nova solicitação quando o usuário final insere um destino inválido.

Bom trabalho! Esses casos de teste representam cenários comuns em que o agente deve reagir de forma adequada. Muitas vezes, os usuários fazem perguntas que os bots não conseguem responder ou pedidos que os bots não podem atender. É muito complexo projetar para a cauda longa, que sai dos caminhos mais comuns que a maioria dos usuários segue. Pense em tudo o que pode dar errado em uma conversa e em todos os caminhos inesperados ou sem suporte que os usuários podem seguir.

Os avanços no reconhecimento automático de linguagem (ASR, na sigla em inglês) significam que quase sempre sabemos exatamente o que os usuários disseram. Mas determinar o que os usuários queriam dizer ainda é um desafio. Declarações "soltas" não podem ser compreendidas isoladamente. Precisamos do contexto. Na próxima seção deste codelab, vamos explorar como os modelos de linguagem grandes (LLMs) generativos mais recentes do Google podem ajudar a retomar o diálogo e fazer a conversa avançar.

5. Ativar a substituição generativa

O que é o recurso de substituição generativa?

Ele é um recurso do Dialogflow CX que usa os modelos de linguagem grandes (LLMs) do Google para gerar respostas do agente virtual.

Como isso ajuda?

Entre os principais casos de uso, há vários pedidos comuns dos usuários. Por exemplo: repetir o que o agente disse caso o usuário não tenha entendido, esperar na linha quando o usuário pedir e resumir a conversa. No primeiro teste, o agente não conseguiu responder à pergunta "What is a liveaboard" porque não criamos uma intent para isso e não projetamos o fluxo para lidar com perguntas genéricas relacionadas a mergulho e liveaboards.

Mesmo com intents robustas, os erros ainda podem acontecer. Os usuários podem ficar em silêncio (erro de "Sem entrada") ou dizer algo inesperado (erro de "Não correspondência"). Como já diz o ditado: evitar é melhor do que remediar. Infelizmente, os erros não podem ser totalmente evitados. Respostas genéricas como "Desculpe, não sei como ajudar" ou outras soluções pouco viáveis geralmente não são boas o suficiente. Respostas em casos de erro devem ser inspiradas no Princípio da Cooperação: a comunicação eficiente se baseia na suposição de que há uma cooperação entre os participantes da conversa.

Na próxima seção, vamos aprender a configurar o recurso de substituição generativa para aumentar a cobertura de intents e simplificar o tratamento de erros. Isso vai melhorar a experiência do cliente.

Ativar a substituição generativa para o evento de "não correspondência" do fluxo todo

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.

É possível ativar a substituição generativa no seu agente em manipuladores de eventos de não correspondência, que podem ser usados no fulfillment de fluxo, página ou parâmetro.

Vamos começar ativando a substituição generativa para todo o evento padrão de não correspondência do fluxo Liveaboards.

  1. Abra a Start Page do fluxo.
  2. Em Event handlers, clique em sys.no-match-default.
  3. Marque a opção Enable generative fallback em Agent responses e clique em Save.

Marque a opção "Ativar substituição generativa" em "Respostas do agente".

Salve para ativar a substituição generativa na página inicial do Liveaboards

Ativar a substituição generativa em eventos específicos de não correspondência

Agora, vamos ativar a substituição generativa para reagir a entradas inválidas quando o agente perguntar o número de passageiros:

  1. Abra a página Collect Further Info que contém os parâmetros do formulário. Clique no parâmetro number-of-guests.
  2. Navegue até o manipulador de eventos No-match desejado (role para baixo até a seção Reprompt event handlers e clique no manipulador No-match default).

Navegue até o manipulador de eventos "Sem correspondência" desejado (role para baixo até a seção "Manipuladores de eventos de reenvio do comando" e clique no manipulador de eventos padrão "Sem correspondência").

  1. Marque a opção Ativar substituição generativa em Respostas do agente.

Ativar a substituição generativa no parâmetro número de hóspedes

  1. Por fim, clique em Salvar.
  2. Agora repita as mesmas etapas para ativar a substituição generativa em destination e email-address.

Bom trabalho! Você ativou a substituição generativa para lidar com intents inesperadas e valores de parâmetros inválidos. Em seguida, vamos analisar como configurar o recurso de substituição generativa com um comando de texto que instrui o LLM a responder.

6. Configurar a substituição generativa

O recurso de substituição generativa transmite uma solicitação para um modelo de linguagem grande. É ele que vai produzir a resposta gerada. A solicitação é um comando de texto que mistura linguagem natural e informações sobre o estado atual do agente e da conversa. O recurso pode ser configurado de várias maneiras:

  1. Escolher um comando específico (já definido) que será usado na geração de respostas.
  2. Definir um comando personalizado.

Escolher um comando já definido

  1. No console do Dialogflow CX, clique em Configurações do agente.

Acesse as configurações do agente

  1. Acesse a guia ML e depois a subguia IA generativa.

Subguia de IA generativa

O recurso vem pronto para uso com dois comandos de modelo: o modelo Default (que não é visível) e o modelo Example, que explica como você pode escrever seus próprios comandos.

  1. Selecione o modelo Example e clique no botão Edit no lado direito do menu suspenso para inspecioná-lo.

Clique no botão "Editar" no lado direito do menu suspenso de modelos para inspecioná-lo.

Com o comando predefinido, o agente virtual pode lidar com situações básicas de conversa. Exemplo:

  • Cumprimentar e se despedir do usuário.
  • Repetir o que o agente disse, caso o usuário não tenha entendido.
  • Esperar na linha quando o usuário pedir.
  • Resumir a conversa.

Vamos tentar definir um comando de texto específico para o agente Divebooker.

7. Definir seu próprio comando

  1. Copie o comando abaixo e cole-o na área Text prompt.
You are a friendly agent that likes helping traveling divers.
You are under development and you can only help
$flow-description

At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.

Currently you can $route-descriptions

The conversation between the human and you so far was:
${conversation USER:"Human:" AGENT:"AI"}

Then the human asked:
$last-user-utterance

You say:
  1. Escolha Salvar como um novo modelo para armazenar o novo comando como um modelo (escolha um nome) e clique em Salvar no canto inferior direito do painel.

Crie um comando de texto personalizado específico para o agente e salve como um novo modelo.

  1. Para que o novo comando seja o comando ativo, você também precisa salvar as configurações.

Salvar as novas configurações

Seu comando de texto deve ser claro, conciso e prescritivo. A forma como o comando é elaborado para o LLM pode afetar muito a qualidade da resposta. Os LLMs são treinados para seguir instruções. Por isso, quanto mais seu comando se parecer com uma instrução precisa, melhores serão os resultados. Crie um comando e, com base nos resultados, faça iterações para melhorar.

Estas são as práticas recomendadas para criar comandos eficazes:

  1. Faça uma descrição clara e concisa da tarefa que o LLM deve realizar. Nem mais, nem menos. O texto deve ser completo e curto.
  2. Além disso, o comando deve ser específico e bem definido, evitando linguagem vaga ou ambígua.
  3. Divida tarefas complexas em partes menores e mais fáceis de gerenciar. Dessa forma, você ajuda o modelo a se concentrar em uma coisa de cada vez e reduz a chance de erros ou confusão.
  4. Para melhorar a qualidade da resposta, adicione exemplos ao comando. O LLM aprende no contexto com base nos exemplos de resposta.

Ao criar um comando, além de uma descrição em linguagem natural sobre o contexto, os seguintes marcadores de posição também podem ser usados:

  • $conversation A conversa entre o agente e o usuário, excluindo a última declaração do usuário. Você pode adaptar os prefixos de vez (por exemplo: "Human", "AI" ou "You", "Agent") no comando de texto
  • $last-user-utterance A última declaração do usuário.
  • $flow-description A descrição do fluxo ativo.
  • $route-descriptions As descrições das intents ativas.

Agora que temos um comando de texto inicial, a próxima tarefa é garantir que o fluxo e as intents tenham boas descrições.

8. Adicionar descrições de fluxo e intent

Adicionar a descrição do fluxo

  1. Para descrever o fluxo Liveaboards, acesse as configurações do fluxo passando o cursor do mouse sobre ele na seção Flows.

Para acessar as configurações do fluxo, passe o cursor do mouse sobre ele na seção "Fluxos".

  1. Clique no botão de opções 78d2781c655810e7.png.
  2. Selecione Configurações de fluxo e adicione a seguinte descrição (ou uma semelhante): search, find and book liveaboards.

Adicionar uma descrição ao fluxo "Liveaboards"

  1. Clique em Salvar.

Adicionar a descrição da intent

  1. Agora, adicione uma boa descrição à intent head.send.group.request. Mude para a guia Manage, selecione Intents na seção Resources e depois clique na intent head.send.group.request.
  2. Adicione a seguinte descrição: assist users with group or full charter reservations. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands

Observe que a descrição tem informações importantes, como os números mínimo e máximo de passageiros permitidos em um barco. Não se esqueça disso!

  1. Clique em Salvar.

E pronto. Você ativou a substituição generativa nos manipuladores de eventos de não correspondência para o fulfillment de fluxo e de parâmetro. Você também definiu seu próprio comando de texto que o recurso de substituição generativa transmite a um modelo de linguagem grande para produzir respostas generativas.

Na próxima seção, você vai testar novamente o agente para ver como ele responde às mesmas perguntas desafiadoras de antes.

9. Testar seu agente de novo

Agora que você configurou e ativou a substituição generativa no agente virtual, pode fazer perguntas desafiadoras semelhantes e ver como ele responde.

Clique em Testar agente para abrir o simulador novamente.

Testar o agente de novo

Pergunte novamente ao agente sobre liveaboards e mergulho em liveaboards. A partir de agora, observe como cada diálogo destaca em caixas vermelhas as mensagens definidas pelo usuário e as respostas geradas.

Teste o agente de novo e pergunte o que é um liveaboard.

Você recebeu uma resposta informativa em vez de um comando genérico? Ótimo! Depois que você descreveu de forma clara e concisa as tarefas que o agente deve realizar (no comando de texto e na descrição do fluxo), seu bot ficou muito mais inteligente para responder a perguntas detalhadas sem criar intents específicas. Seu cliente vai gostar de receber uma resposta mais embasada!

Não tenha medo de desafiar o agente. Pergunte se ele pode ajudar você a encontrar um curso de mergulho, já que você ainda não tem certificação.

 Pergunte ao agente se ele pode ajudar você a encontrar um curso de mergulho.

Isso mesmo, ainda não projetamos o Agente para ajudar com cursos de mergulho. Como o agente sabe disso? No comando de texto, descrevemos claramente o que o agente pode e não pode fazer. "At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts"

Agora teste novamente o cenário ideal e enriqueça a conversa. Vamos ver como a experiência mudou.

Teste novamente o cenário ideal e seja criativo no diálogo

Teste novamente o cenário ideal e seja criativo no diálogo

Quando o Dialogflow encontra uma intent ou tenta coletar um parâmetro de acordo com o design do fluxo, ele mostra os fulfillments definidos durante o design. Quando o usuário muda a conversa e pede um resumo dos detalhes da viagem ou envia um número de telefone, a substituição generativa entra em ação.

Legal! Você testou novamente o cenário ideal e esperamos que tenha tido uma conversa agradável e natural com o agente, o mais próxima possível da experiência com um atendente humano.

Infelizmente, as coisas podem dar errado em uma conversa. Vamos fazer um teste diferente. Desta vez, quando o agente perguntar o número de convidados, diga um número maior que 15.

Forneça um número de convidados maior que 15

Forneça um número de convidados maior que 15

Vamos analisar os pontos importantes:

  1. Por que 20 não é um número válido? Porque definimos um limite para o número de convidados na descrição da intent: "The agent collects info such as departure period, destination, number of guests ***(min 4 max 15 people)****, contact details*" . A resposta generativa do LLM foi "Sorry, we can only assist with group bookings of up to 15 guests". Ela segue as restrições que demos sobre o número de hóspedes. Para reforçar ainda mais isso, number-of-guests é uma entidade RegExp personalizada que corresponde apenas a números entre 4 e 15.
  2. A conversa continua porque o usuário ainda quer receber uma oferta para 15 mergulhadores. Isso acontece com frequência durante conversas naturais, mudamos de ideia direto! Veja como o agente é cooperativo e direciona o usuário de volta ao caminho certo.

Para projetar conversas, você precisa escrever o roteiro de metade da conversa e torcer que ele seja robusto o suficiente para que qualquer usuário possa completar a outra metade. Ao projetar para a cauda longa, os desenvolvedores precisam se concentrar no que o usuário pode dizer ao agente de conversação em cada etapa. Assim, eles conseguem definir rotas, manipuladores e parâmetros. O recurso de substituição generativa veio para ajudar nessa tarefa: ele ajuda os desenvolvedores a se concentrem mais nos princípios de design de conversas e menos nos detalhes de implementação. Tudo para que os usuários tenham uma experiência completa de conversa!

Vamos fazer mais um teste. Desafie o bot com um lugar que não está na lista de destinos disponíveis, como as Maldivas. Depois, vamos analisar rapidamente o que acontece nos bastidores.

Desafie o bot com um lugar que não está na lista de destinos disponíveis, como as Maldivas.

Como também ativamos a substituição generativa no evento no-match para o parâmetro destination, uma solicitação é enviada a um modelo de linguagem grande para gerar a resposta. As respostas regulares predefinidas (em "Agent says") são ignoradas.

As caixas de texto abaixo vão ajudar você a entender como os marcadores de posição moldam a solicitação enviada ao modelo de linguagem grande.

Este é o comando de texto personalizado que configuramos no Dialogflow com os marcadores de posição destacados em negrito:

You are a friendly agent that likes helping traveling divers.
You are under development and you can only help
$flow-description

At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.

Currently you can $route-descriptions

The conversation between the human and you so far was:
${conversation USER:"Human:" AGENT:"AI"}

Then the human asked:
$last-user-utterance

You say:

Na caixa de texto abaixo, incluí a entrada recebida pelo modelo de linguagem grande e a saída com a resposta gerada para o usuário:

llm_input:
You are a friendly agent that likes helping traveling divers.
You are under development and you can only help search, find and book liveaboards.

At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.

Currently you can assist users who are looking for a group reservation or a full charter. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands.

The conversation between the human and you so far was:
Human: Hi, my name's Alessia
AI Hi Alessia, what can I help you with today?
Human: Can you help me find a nice boat for myself and my family?
AI To assist you with that I need to collect the details of your travel and then we'll get back to you with an offer shortly.
Where would you like to go? We can organize a charter in Costa Rica, Galapagos Islands and several locations around Mexico

Then the human asked:
The kids want to go to the Maldives

llm_output:
You say:
I'm sorry Alessia, we can only help you with liveaboards in Costa Rica, Galapagos Islands and several locations around Mexico.

Assim como no teste anterior, a resposta enviada ao usuário é gerada pelo modelo e depende das informações que fornecemos na descrição da intent: "The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands".

Modificar a lista de frases proibidas

A substituição generativa pode ser configurada de várias maneiras:

  1. Escolher um comando específico (já definido) que será usado na geração de respostas.
  2. Definir um comando personalizado.
  3. Mudar a lista de frases proibidas.

Até agora, analisamos as duas primeiras maneiras. Vamos analisar a terceira forma.

  1. Em Configurações do agente, acesse a guia ML e depois a subguia IA generativa.
  2. Na seção Frases proibidas, adicione as seguintes frases à lista:
  3. Dangerous country
  4. Hateful place
  5. Medical assistance
  6. Clique em Salvar.
  7. Clique no ícone Reset e teste novamente o último cenário. Em vez de informar um belo destino de mergulho, digite uma das frases proibidas.

Teste uma das frases proibidas

O comando e a resposta gerada são comparados com a lista de frases proibidas. Essas são frases que a IA generativa não pode usar. Se a entrada incluir frases proibidas ou consideradas não seguras, a geração será impedida. Em vez dela, a resposta prescrita regular (em "Agent says", no mesmo fulfillment) será mostrada ao usuário.

Excelente! Você viu várias situações de conversação em que as respostas generativas podem fazer a diferença. Continue testando!

10. Parabéns

Você concluiu o codelab. Hora de relaxar!

Cbo Chill

Você criou um agente virtual e ativou a substituição generativa nos manipuladores de eventos no-match usados em fluxos e durante o preenchimento de parâmetros.

A substituição generativa, combinada com boas descrições de fluxo e intent, pode dar ao agente respostas específicas e cooperativas, em vez de frases genéricas como "Desculpe, não sei como ajudar" ou "Sinto muito, esse comando não é válido". Respostas relacionadas a erros geradas por modelos de linguagem grandes podem levar os usuários de volta a cenários ideais ou redefinir as expectativas sobre o que é e o que não é possível.

Teste outras conversas e conheça mais funções relacionadas ao Dialogflow CX e à IA generativa.

Limpeza

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

  • Navegue até o console do Dialogflow CX e exclua todos os agentes que você criou.
  • No console do Google Cloud, navegue até a página "APIs e serviços" e desative a API Dialogflow.

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