Cheff BOT: Criando um bot especialista em nhoques usando DialogFlow

Cínthia Pessanha
Macaé Tech
Published in
9 min readApr 19, 2020

Não é necessário ser um nerd especialista em TI para ficar fascinado pela ideia de poder conversar com um computador. São incontáveis os filmes e séries que exploram esse tema. Pode-se dizer que desde o surgimento de ELIZA, a precursora dos chatbots, os estudos envolvendo processamento de linguagem natural tem evoluído substancialmente. Exemplo disso é a popularização e grande aceitação de assistentes como Google Assistant, Alexa e Siri.

Se a possibilidade de conversar com esses assistentes e ser compreendido já é incrível, imagina poder criar seu próprio chatbot? Neste artigo, será abordada a construção do Cheff BOT, o bot especialista em molhos para nhoque, utilizando a ferramenta do Google para chatbots, o Dialogflow. Garanto que será muito mais fácil que preparar um nhoque 😉

Entendendo os fundamentos por trás dos BOTs: NLP, Intents e Contexts

Antes de iniciar a construção de um chatbot, é importante compreender os conceitos e a estrutura comumente seguida, que é independente de ferramenta.

Para construir um chatbot, é fundamental entender que existe uma área de conhecimento responsável por focar na interação humano X computador através de linguagem natural. Essa área é conhecida como NLP (natural language processing).

O uso de técnicas de NLP permite que se descubra qual é a intenção (intent) do usuário embutida na mensagem. Uma intent captura a intenção do usuário e dispara uma resposta. Um chatbot possui várias intents que irão representar os cenários de conversação contemplados pelo bot.

Porém, na vida real, é comum fazer diversas perguntas a respeito de um mesmo assunto. É o que chamamos de contexto (contexts). Vejamos um exemplo:

Note que o usuário pergunta “vc tem uma receita?”, que é muito genérica se olhada isoladamente. Mas veja que a resposta anterior menciona molho de queijo brie. Logo, de acordo com o contexto, é possível deduzir que a usuária deseja uma receita para fazer o nhoque de banana da terra com molho de queijo brie, sugerido anteriormente. Sem contexto, muito provavelmente o resultado seria:

Os contextos trazem inteligência para um chatbot e, se bem projetado, é um importante aliado para evitar que o usuário fique impaciente e abandone a conversa antes de atingir seu objetivo.

O Problema

Simular uma conversação em linguagem natural com uma máquina requer alguns cuidados. Afinal, não queremos que nosso usuário tenha uma experiência ruim. Desta forma, é importante definir o que nosso bot faz e qual é seu objetivo:

O CheffBOT é um bot capaz de sugerir os melhores molhos para determinados tipos de nhoque, com o objetivo de aumentar as vendas de nhoques saborizados.

Ou seja: nesta versão, o bot apenas será capaz de sugerir molhos de nhoque. Não está contemplada nenhuma intent para compra dos nhoques pelo bot nesse momento, apesar de que o DialogFlow possui recursos que viabilizariam isso.

Um outro ponto importante é descrever alguns fluxos de interação entre o usuário e o bot. Esse processo nos ajudará a pensar na personalidade do bot, mapear contexts e intents. Digamos que um cliente novo chega a um estabelecimento comercial interessado em conhecer os nhoques saborizados, mas não sabe bem como prepará-los:

Neste pequeno exemplo é possível classificar como intenção do usuário o fato de descobrir qual molho combina com nhoque de banana da terra e, mediante a resposta, que é molho de queijo brie, o usuário já engata em uma segunda pergunta relacionada a resposta anterior, solicitando uma receita de molho, sem citar o nome do molho. Como vimos anteriormente, é preciso mapear o momento em que um contexto deve ser estabelecido. E os fluxos de interação ajudam bastante neste processo.

Conhecendo o DialogFlow

O DialogFlow é uma ferramenta que se propõe a facilitar a interação entre usuários e produtos/serviços através de interfaces de conversação e textos, tais como aplicativos de voz e chatbots. O grande diferencial desta ferramenta é que ela faz uso de toda a infraestrutura do Google de inteligência artificial e cloud, permitindo que o usuário foque no que de fato interessa: a interação do bot com seus clientes.

O Dialogflow possui divesas features, mas neste artigo vamos focar apenas nas que precisaremos utilizar na versão inicial do nosso bot. Mas antes, acesse o link www.api.ai e crie sua conta associada no DialogFlow, utilizando a sua própria conta do Gmail.

Criando o Agent

O primeiro passo para criar o Cheff BOT no DialogFlow é a criação de um Agent. O Agent é como se fosse o identificador do BOT.

Quando criamos um novo agente, algumas configurações padrão já vêm estabelecidas, tais como saudações iniciais, encerramento do agente, etc. É bom revisitar essas intents para aprimorar e customizar seu bot.

Criando Intents

Com o BOT criado, é hora de cadastrar as intents. As intents são a alma de um chatbot, por isso é tão importante desenhar fluxos de interação.

Para criar uma intent, é necessário definir uma tag para ela e uma série de frases que servirão de treinamento para os algoritmos de NLP, que serão acionados quando um usuário interagir com o BOT. Quanto mais diverso seu conjunto de treinamento, maiores as chances de assertividade na identificação da intenção do usuário.

Nomeie a intent com uma tag e na seção Training phrases, use a imaginação e pense em todas as formas que alguém pode perguntar ao BOT sobre um molho que combine com nhoque de banana da terra, por exemplo. Nesse momento é possível perceber por que é primordial submeter um BOT a vários testes, com diferentes usuários e, no nosso caso, de diferentes faixas etárias.

Ainda na seção das intents, mais abaixo é possível encontrar a seção Responses. Nesta seção encontram-se as possíveis respostas fornecidas pelo chatbot caso a intent molho.banana_da_terra seja identificada pelo algoritmo como intenção do usuário. É bem legal colocar mais de uma opção de resposta, pois assim, a cada vez que um usuário fizer uma pergunta, o chatbot pode responder de uma forma um pouco diferente, trazendo realismo para a conversa.

Um detalhe importante: como chamar o seu BOT e como fazê-lo “desligar”? Temos que criar intents de entrada e de saída do BOT. As intents de entrada ouwelcome intentsdefinem saudações que farão o DialogFlow compreender que o seu agente precisa ser acionado. Quando um agente é criado, uma Welcome Intent já vem definida, basta customizá-la caso você ache necessário:

O mesmo deve ser feito para “desligar” o BOT. Mas para este caso, há um flag dentro do cadastro de Intents que desliga o BOT assim que a intent de encerramento é acionada:

Pronto! Agora é hora de salvar o nosso chatbot. Basta clicar em SAVE, no canto direito da tela. Observe que imediatamente é disparada uma rotina de treinamento do agente e ele já fica disponível para ser testado com o Google Assistant.

Agora é repetir o processo acima para todas as intents possíveis para o seu cenário. No caso do Cheff BOT, adicionamos algumas intents genéricas para o caso de algum usuário querer estabelecer uma conversa sobre nhoques.

Adicionando Contexts e Follow-ups

Digamos que um usuário solicite sugestão de molho para um nhoque de ricota. E o BOT forneça a seguinte resposta:

Sugiro um molho caseiro de tomate com manjericão para não sair da dieta. Finalize com parmesão ralado

E aí nosso usuário responde:

Não curto tomates, sou alérgico. Pode me sugerir outro?

Então é hora de adicionarmos contexto ao nosso BOT. Foi utilizada a estratégia de follow-up do DialogFlow para, antes de sugerir um molho, perguntar o gosto do usuário em relação a tomates, que é a resposta do bot. Assim, de acordo com a resposta do usuário, o bot recomenda um molho diferente.

A resposta do Cheff BOT para o usuário que não curte tomates foi:

Ok… sabe que ricota também vai muito bem com um molho de manteiga? Ao final do preparo, adicione umas folhas de sálvia ao molho de manteiga para adicionar um aroma especial a esse prato cheio de personalidade e sofisticação

Mas queremos deixar o nosso bot alerta para mais perguntas, como a receita do molho sugerido. Neste caso, para essa intent, criamos um Context com a receita para o molho de manteiga sugerido. Para isso, basta criar uma intent e mapeá-la como Context Output do follow-up intent molho.ricota-curte-tomates-no:

O número 5 ao lado representa a quantidade de interações as quais o BOT ficará com esse contexto ativo. Ele é customizável e varia de acordo com o cenário. Não é legal deixar o contexto ativo por muito tempo, pois isso pode frustrar o usuário, já que o bot pode responder coisas relacionadas a um contexto que não interessa mais ao usuário.

Testando o Cheff BOT

Hora do teste! Basta digitar/falar na caixa do Google Assistant disponível no próprio DialogFlow:

Inicio a conversa pedindo uma recomendação para nhoque de ricota, porém de uma forma um pouco diferente das frases estabelecidas no treinamento. E ainda assim, o algoritmo pegou a intent correta:

Respondo que não gosto de tomates. Observe que o contexto de receita de molho de manteiga foi corretamente ativado pelo DialogFlow:

Com o contexto ativado, ao perguntar sobre a receita, o BOT já entende que é do molho de manteiga que o usuário se refere:

Testando o CheffBot no Google Home

Dado que estamos em uma ferramenta do Google, é hora de testar o Cheff BOT via Google Home. Veja o resultado:

Caso queira usar o Cheff BOT no seu celular utilizando o Google Assistant, exportei os arquivos deste tutorial e disponibilizei no meu GitHub cinthiabpessanha com algumas instruções.

Considerações Finais

Apesar do uso de BOTs não ser algo novo, é fato que atualmente existe uma grande preocupação em se criar chatbots inteligentes e que proporcionem uma experiência boa aos usuários. Diante disso, seguem alguns itens seguidos para criar o Cheff BOT:

  • Escolha um avatar que possa criar empatia com o usuário
  • Na hora de definir as respostas, buscamos criar uma personalidade semelhante a de um cheff de cozinha de verdade (jargões e estilos de retórica). Isso traz realismo e torna a experiência muito mais interessante e divertida
  • Diversifique as respostas de uma mesma Intent (ex.: molho para nhoque de abóbora pode ser de tomate com carne seca, queijo com pesto…)
  • Fazer perguntas simples para o usuário responder facilitam a modelagem dos contextos
  • Contextos fazem toda a diferença
  • Coloque seu BOT a prova: teste-o com diferentes usuários (o uso de personas pode ajudar a mapear diferentes perfis de usuários do seu bot, as formas que cada um tem de se comunicar…)

Portanto, mesmo sendo uma ferramenta paga, é inegável que a versão free do DialogFlow proporciona um ambiente muito favorável a exploração de uma ideia, validação de um fluxo de interações e entendimento dos fundamentos necessários para a construção de um chatbot, além de fornecer um arcabouço enorme de ferramentas que tornam a construção e uso de um chatbot uma tarefa fácil, divertida e muito atraente para os mais diversos usuários.

--

--