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:
1 – rasa 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.
- NLP com scikit-learn
- Classificação com scikit-learn
- Agrupamento com scikit-learn
- Previsão de Séries Temporais com SKTime
- Sistemas de Recomendações com Surprise
- Regressão com scikit-learn
- Visualização de Dados com Altair Python
- Pipeline de Dados Airbyte com GA4 e Snowflake
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.
Apaixonado por dados e tecnologia ❤️ , criando soluções com dados 📊 📈 , desde 2015, sempre buscando tornar os processos orientados! Com formação em Engenharia da Computação 💾 , MBA Gestão da Informação e Business Intelligence e Especialização em Data Science.
Também atuo como professor na área de dados. Nas horas vagas crio modelos de Machine Learning 🤖 com Python em desafios do Kaggle e escrevo no Dados ao Cubo sobre o mundo dos dados 🎲 !
Compartilhando conhecimentos sempre 🚀