Data Science Machine Learning Python

Como Criar um Chatbot com Rasa Open Source

Fala Galera! Tudo bem por aí? O tema de hoje já faz parte da vida de todos. Quem nunca conversou com um chatbot? Então, agora você pode criar um chatbot para chamar de seu. A área de processamento de linguagem natural, também conhecida como NLP, é fascinante. Além do mais, tem evoluído de uma forma exponencial com o avanço da inteligência artificial.

A ideia é apresentar a criação de um chatbot de uma forma bem simplista. Criar um chatbot em python, como vamos fazer aqui, não quer dizer que você é um especialista. Mas, já dá para ter uma noção do que pode ser feito, além de entender a estrada que tem pela frente para ser um profissional especialista na área.

Primeiramente, vamos entender alguns conceitos importantes. Em seguida, conhecer um pouco mais sobre o Rasa. E para finalizar, um parque de diversões na prática com o Rasa. Sem mais delongas, partiu criar um chatbot.

Conceitos Importantes sobre Chatbot

Iniciamos com alguns conceitos que devem estar claros para começar a brincadeira. O funcionamento de um chatbot acontece a partir da interação de uma pessoa com a máquina. Dessa forma, para que isso seja possível, precisamos estruturar o chatbot para que ele compreenda a interação do usuário e o mesmo seja direcionado para o objetivo final.

Vamos exemplificar para ficar mais claro. Pense em um chatbot que diz ao usuário qual o artigo do site que é mais adequado para o problema dele. Sendo assim, de uma forma bem simples, o usuário acessa o site digita uma frase para o bot, que por sua vez indica quais artigos podem auxiliar o usuário com seu problema.

Cada ação, seja do usuário ou do chatbot, requer programação. Então, vamos a cada uma dessas etapas a seguir.

Intenção do Chatbot

A intenção está no núcleo do chatbot, é onde ocorre a compreensão de linguagem natural (também conhecida como NLU). Esse é o momento quando o usuário interage com o bot, demonstrando o que deseja. Essa intenção é alimentada com exemplos para treinamento do modelo do chatbot. Ao receber uma intenção, como resultado será emitida uma resposta programada.

Resposta do Chatbot

A resposta é a voz do bot. Nesta etapa precisamos programar todas as respostas possíveis para o bot. Assim, a cada interação do usuário o bot tem uma resposta programada. Em alguns casos, se programado, essa resposta pode vir em forma de uma ação do bot.

Ação do Chatbot

A ação é um evento em forma de programa. Sendo assim, algumas intenções do usuário podem acioná-lo. Esta ação pode ser uma consulta no banco de dados, algum cálculo ou qualquer outro exemplo nesse sentido. Todas essas etapas configuram o fluxo do chatbot.

Fluxo do Chatbot

Os fluxos do chatbot são as histórias exemplos para treinamento do bot. Dessa forma, o bot aprende como interagir com o usuário em determinada situação. A estrutura da interação direciona a intenção do usuário para uma resposta ou ação do bot. 

Agora, que já estamos familiarizados com esses conceitos, podemos conhecer o Rasa. Apresentaremos essa ferramenta na criação do chatbot.

O que é o Rasa Open Source Conversational AI?

O Rasa é um framework de machine learning open source para criação de chatbots. Uma das vantagens do Rasa é a sua documentação e a comunidade, ambos fornecem uma gama de exemplos e até soluções pré-prontas. Em seguida vamos para a melhor parte, bater código. Vamos lá!!!

Instalação do Rasa

Temos alguns pré-requisitos para a instalação do Rasa. O python deve estar instalado e de forma opcional, a criação de um ambiente virtual. Lembrando que vamos trabalhar em ambiente Linux Ubuntu, caso utilize outro sistema operacional, basta procurar o comando semelhante do seu SO.

Configuração do Ambiente Python

Com o python configurado, podemos verificar se está tudo certo checando a versão com o comando abaixo.

python3 --version

Em seguida, vamos verificar a configuração do pip, com o comando abaixo.

pip3 --version

A imagem abaixo exibirá a saída dos comandos de versões do Python e do pip quando executados.

Caso precise instalar o python ou o pip, aqui vai encontrar tudo o que precisa Instalando o Python no Linux.

Configuração do Ambiente Virtual

Para configurar o ambiente virtual, vamos utilizar o venv. Caso o venv não esteja instalado, utilize o comando a seguir: 

sudo apt-get install python3-venv.

Com o comando abaixo criamos o ambiente virtual, note que no lugar de nome_ambiente_virtual você pode optar pelo nome que lhe for mais conveniente.

python3 -m venv ./nome_ambiente_virtual

Em seguida, precisamos ativar o ambiente com o comando abaixo.

source ./nome_ambiente_virtual/bin/activate

Após ativar o ambiente virtual, ele exibirá conforme a última linha da imagem abaixo. Note que o nome do ambiente virtual é exibido entre parênteses (venv) no início, o que significa que o ambiente virtual está ativo.

Com o ambiente virtual configurado, conseguimos separar os ambientes de desenvolvimentos. Assim é possível instalar versões do python e de bibliotecas diferentes em cada ambiente. Agora vamos instalar o Rasa no ambiente virtual criado acima.

Instalação do Rasa Open Source

Mais simples de instalar impossível, através do comando pip abaixo tudo vai ficar pronto para começar a brincadeira.

pip3 install rasa

Após a instalação, podemos verificar se o Rasa foi instalado corretamente através do comando.

rasa --version

Rasa instalado, vamos ver os comandos para trabalhar com ele.

Rasa Command Line Interface

O rasa possui uma série de comandos para que seja possível, configurar, treinar e testar o nosso chatbot. Abaixo uma relação extraída da documentação do próprio Rasa. Mas vamos por partes, aqui só vamos ver alguns desses comandos.

Basicamente vamos, iniciar um novo projeto, treinar o modelo e fazer testes com ele. Então, precisamos conhecer os comandos abaixo: 

1rasa init —> Para criar um novo projeto exemplo com toda a estrutura necessária para desenvolvimento.
2 – rasa train —> Para treinar o modelo de acordo com as configurações de intenções, respostas, ações e histórias.
3 – rasa shell —> Para carregar o modelo treinado e interagir com o bot via linha de comando.

Prática com o Rasa

Ao executar o rasa init, você criará a estrutura de arquivos abaixo. Nesses arquivos podemos fazer as modificações necessárias para que o bot funcione da forma como você espera.

Observe na imagem abaixo que temos exatamente a mesma estrutura prevista para iniciar o projeto com o Rasa.

Dando sequência a configuração do rasa init veremos algumas perguntas que serão feitas para configuração do projeto.

Perguntas na configuração do rasa init.

  • ? Please enter a path where the project will be created [default: current directory] MyProjectRasa – Informar o diretório onde será configurado o projeto Rasa.
  • ? Path ‘MyProjectRasa’ does not exist 🧐. Create path? Yes – Caso a estrutura de pastas não exista, ele vai criar.                     
  • ? Do you want to train an initial model? 💪🏽 Yes – Realizar o treinamento inicial do modelo padrão Rasa (rasa train).                              
  • ? Do you want to speak to the trained assistant on the command line? 🤖 Yes – Iniciar o chatbot via linha de comando (rasa shell).    

Mesmo sem fazer nenhuma alteração, já podemos treinar esse modelo padrão e ver ele em funcionamento, com as respostas dadas acima. Observe na imagem abaixo.

Já podemos interagir com o bot, será que ele já entende alguma coisa?

O modelo padrão inicial já vem com uma configuração básica, porém no idioma em inglês. Agora, algumas modificações para compreender o funcionamento do chatbot.

Alterando o Idioma para Português

A primeira alteração a ser feita, será do idioma. No arquivo config.yml podemos informar a linguagem que o bot irá trabalhar. Então, na linha 3 no campo language deve ser alterado de en para pt ou simplesmente de inglês para português.

Alteração realizada e salva, vamos configurar a intenção.

Configurando uma Intenção no Rasa Chatbot

O nosso arquivo de intenção é o nlu.yml, e ele tem a seguinte estrutura:

nlu:
-   intent: nome_da_intenção
    examples:
        - exemplo_1
        - exemplo_2

Pensando na nossa primeira interação com o bot, colocamos a mensagem Olá e ele não entendeu. Então, com a intenção de saudação greet vamos acrescentar mais um exemplo, que pode ser observado na linha 6 do arquivo nlu.yml

Após as alterações feitas, precisamos treinar novamente o modelo através do comando rasa train. Em seguida vamos iniciar a interação através do comando rasa shell.

Observe que agora o nosso bot entendeu a mensagem e retornou perguntando como eu estava. Mas, ainda no idioma em inglês, apesar da alteração do idioma principal do bot, ainda precisamos alterar as intenções e respostas para o idioma configurado.

Configurando uma Resposta no Rasa Chatbot


Devemos criar as respostas no arquivo domain.yml, que possui a seguinte estrutura:

intents:
    - nome_da_intenção_1
    - nome_da_intenção_2
responses:
	nome_da_resposta:
    - text: "texto da resposta"

Sendo assim, vamos responder a intenção de saudação greet com a resposta utter_greet na linha 13 informando um texto resposta a ser dado pelo bot na linha 14, Oi! Como você está?.

Mais uma vez, precisamos treinar novamente o modelo através do comando rasa train. Em seguida vamos iniciar a interação através do comando rasa shell.

Agora o nosso boot além de entender a mensagem Olá respondeu adequadamente com o texto Oi! como você está?, que configuramos na resposta. Dessa forma, começamos a construir um fluxo de interação entre o usuário e o bot. 

Criando um Fluxo no Rasa Chatbot

A configuração do fluxo ou histórias é feita no arquivo stories.yml, mas pode ser necessário voltar nos dois passos acima ( intenções e respostas). Abaixo a estrutura do arquivo stories.yml

stories:
    - story: nome_da_história
      steps:
        - intent: nome_da_intenção_1
        - action: nome_da_resposta_1
        - intent: nome_da_intenção_2
        - action: nome_da_resposta_2

Seguindo o fluxo de conversa com o bot. Ao inserir uma intenção com a mensagem mais ou menos, não foi possível interpretar essa intenção. Então, precisamos criar um fluxo para essa nova possibilidade de intenção.

O primeiro passo é criar uma intenção para as novas possibilidades de interações do usuário. Vamos chamar de mood_so e citar alguns exemplos possíveis para essa nova intenção. Abaixo os detalhes da criação da nova intenção no arquivo nlu.yml, da linha 4 a 8. 

Em seguida, criaremos uma resposta para esta nova interação do usuário. Batizada pelo nome de utter_mood_so e descrito o texto resposta do bot, nas linhas 14 e 15. Ainda incluímos a nova intenção criada também no arquivo domain.yml como se vê na linha 11. 

Para finalizar, incluímos a intenção do usuário e a resposta dada pelo bot na criação do fluxo. Aproveitando a história happy path, adicionamos a intenção mood_so e a resposta utter_mood_so como pode ser observado abaixo no arquivo stories.yml nas linhas 9 e 10.

Fluxo devidamente configurado partiu treinar o modelo e interagir.

Antes da criação do fluxo ao inserir mensagem mais ou menos o bot não entendeu a intenção do usuário. Porém, após o fluxo devidamente configurado, observe como a interação do bot foi muito mais coerente. E assim devemos criar todos os fluxos necessários para que o chatbot resolva o seu problema. Seja de sugestão de conteúdo ou para pedir uma pizza.

Chatbot com Rasa ao Cubo

E assim finalizamos essa introdução de como criar um chatbot com Rasa Open Source. Aprendemos alguns conceitos importantes sobre chatbots. Fizemos a instalação do Rasa no detalhes e começamos as alterações do modelo padrão para entender o funcionamento e a lógica por trás dele.

Mas lembre-se que esse conteúdo é só o dedo mindinho, dá para fazer muita coisa legal com o Rasa. A sua criatividade é o limite!

Então, espero que vocês tenham curtido essa introdução a criação de chatbot com Rasa, compartilhem com a sua rede e não esqueçam de mandar aquele feedback do que você achou do conteúdo. Um abraço e até a próxima.

Conteúdos ao Cubo

Por fim, deixo algumas sugestões de conteúdos que você pode encontrar no Dados ao Cubo, sempre falando sobre o mundo dos dados.

Então, finalizo com um convite para você ser Parceiro de Publicação Dados ao Cubo e escrever o próximo artigo, compartilhando conhecimento para toda a comunidade de dados. Mas, não esqueça de assinar a nossa Newsletter para ficar por dentro de todas as novidades. 

Gostou? Compartilhe!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *