Skip to main content

Criando um chatbot com uma poderosa ferramenta Open Source

Vamos conhecer o Rasa 2.0 e criar um chatbot com ele.

Os sistemas de conversação artificial estão se tornando uma parte indispensável do ecossistema humano. Exemplos bem conhecidos de IA de conversação incluem o Siri da Apple, o Alexa da Amazon e a Cortana da Microsoft.

Um chatbot entende o contexto da conversa e pode lidar com qualquer objetivo do usuário normalmente e ajudar a realizá-lo da melhor forma possível. Isso nem sempre significa que o bot poderá responder a todas as perguntas, mas pode lidar bem com a conversa.

Rasa Stack

Atualmente o Rasa está em sua versão 2.0.1 e é essa versão que iremos usar para implementar o nosso bot.

A Rasa 2.0 possui dois módulos principais:

  • NLU para entender mensagens do usuário
  • CORE para manter conversas e decidir o que fazer em seguida
  • Rasa x é uma plataforma para criar visualmente os fluxos conversacionais

Um chatbot equipado com NLU pode entender as perguntas mais frequentes.

O principal benefício de usar NLU é que o bot aprende com a entrada de dados e interações com os usuários. Com o tempo, o bot se torna mais inteligente e fornece recomendações melhores com base nas preferências dos clientes.

Depois de fornecer a resposta, adicione uma parte de acompanhamento ao fluxo. Pergunte ao cliente “Foi útil?” Ou “Tem outra pergunta?”. Finalmente, a conversa deve ser encerrada com uma despedida adequada.

Instalação do Rasa 2.0

É necessário que você tenha pré instalado o python e preferível que instale o pip, então poderá usar esse comando para instalar o rasa e o rasa x

Vamos começar pelo virtual enviroment, esta etapa é opcional, mas é altamente recomendável isolar projetos Python usando ambientes virtuais. Ferramentas como virtualenv e virtualenvwrapper fornecem ambientes Python isolados, que são mais limpos do que a instalação de pacotes em todo o sistema (pois evitam conflitos de dependência). Eles também permitem que você instale pacotes sem privilégios de root.

$python3 -m venv ./venv

Ative o ambiente virtual:

$.\venv\Scripts\activate

Instale o rasa

$pip3 install rasa

O primeiro passo é criar um novo projeto Rasa. Para fazer isso, execute:

$rasa init

O comando rasa init cria todos os arquivos que um projeto Rasa precisa. Se você deixar de fora a sinalização — no-prompt, você será perguntado sobre como deseja que seu projeto seja configurado.

Entendendo os termos

Intenções/Intents: A intenção descreve quais são as mensagens. Por exemplo, para um bot de previsão de tempo, a frase: como está o tempo amanhã? ”Tem uma intenção request_weather.

Entidades/Entitys: Pedaços de informação que ajudam um chatbot a entender o que especificamente um usuário está perguntando, reconhecendo os dados estruturados na sentença.

Ações/Actions: Coisas que seu bot pode fazer ou dizer. Seu bot poderia por exemplo acessar um serviço externo e consultar a previsão de tempo para amanhã.

Respostas/Responses: São os textos em si que seu bot pode dizer.

Conhecendo os arquivos

Esta é nossa estrutura de pastas em nosso projeto rasa, Deu fome

Rasa 2.0 - config.yml
Rasa 2.0 – config.yml

Comecemos pelo config.yml nosso arquivo gerado deve parecer com isso

Rasa 2.0 - config.yml
Rasa 2.0 – arquivo config.yml gerado

O arquivo de configuração define os componentes e políticas que seu modelo usará para fazer previsões com base na entrada do usuário.

Por hora só precisamos alterar a linha language: en para utilizar o português

language: pt

Agora vamos em data/nlu.yml

O primeiro ponto de um chatbot Rasa é o modelo NLU. NLU significa Natural Language Understanding, que significa transformar as mensagens do usuário em dados estruturados. Para fazer isso com o Rasa 2.0, você fornece exemplos de treinamento que mostram como a Rasa 2.0 deve entender as mensagens do usuário e, em seguida, treina um modelo mostrando esses exemplos.

As linhas que começam com – intent: definem os nomes das suas intenções, que são grupos de mensagens com o mesmo significado. O trabalho do Rasa 2.0 será prever a intenção correta quando seus usuários enviarem mensagens novas e invisíveis ao seu assistente. Você pode encontrar todos os detalhes do formato de dados no formato de dados de treinamento.

Rasa 2.0 - arquivo nlu.yml
Rasa 2.0 – arquivo nlu.yml

Agora vamos em domain.yml para criar os textos de resposta do nosso bot.

O domínio define o universo em que seu assistente opera. Ele especifica as intents, entidades, slots, respostas, formulários e ações que seu bot deve conhecer. Ele também define uma configuração para sessões de conversação

Rasa 2.0 - arquivo domain.yml
Rasa 2.0 – arquivo domain.yml

Agora que temos definidos todos os elementos do nosso bot iremos criar uma Stories, As Stories são um tipo de dado de treinamento usado ​​para treinar o modelo de gerenciamento de diálogo de seu assistente. As Stories podem ser usadas para treinar modelos capazes de generalizar caminhos de conversação. Você irá criar a storie em data/stories.yml, como mostrado na imagem abaixo.

Rasa 2.0 - Stories
Rasa 2.0 – Stories

Uma ótima ferramenta pra aumentar as capacidades do nosso bot são as Rules, que encontramos no arquivo data/rules.yml. As Rules são um tipo de dados de treinamento usados ​​para treinar o modelo de diálogo de seu assistente. As Rules descrevem pequenas partes de conversas que devem sempre seguir o mesmo caminho.

Rasa 2.0 - Rules
Rasa 2.0 – Rules

Actions

Ações são as coisas que seu bot pode realmente fazer. Por exemplo, uma ação poderia:

  • Responder um usuário
  • Fazer uma chamada a uma API externa
  • Consultar um banco de dados
  • Alguma outra ação via código

No nosso exemplo as actions estão respondendo apenas texto(responses), então não precisamos declarar como actions e sim como responses, nas outras versões, nos criaríamos as actions e depois declararíamos o retorno nos templates, mas agora pode criar diretamente com as responses, mas poderíamos criar uma classe e processor alguma chamada pra trazer a resposta, para essas custom actions usamos a classificação de actions realmente.

Aqui um exemplo de uma custom action.

O trabalho da Rasa Core é escolher a ação correta a ser executada em cada etapa da conversa. Nesse caso, nossas ações simplesmente enviam uma mensagem para o usuário.

Treinando um modelo

O próximo passo é treinar uma rede neural em nossas histórias de exemplo e dados NLU. Para fazer isso, execute o comando abaixo. Este comando chamará as funções de trem Rasa Core e NLU e armazenará o modelo treinado no diretório models/.

$rasa train

O comando rasa train procurará pelos dados do seu bot e treinará um modelo.

Converse com seu bot

O próximo passo é experimentá-lo! Comece a conversar com seu assistente executando:

$rasa shell

Agora você pode conversar com o seu bot usando pelo seu terminal, no próximo tutorial veremos como usar o rasa x para aprimorar o nosso bot.

Outro grande Beneficio do Rasa são suas ferramentas e comunidade ativa, alem do projeto rasa x que é a plataforma padrão do rasa para criar o bot visualmente como no Dialog Flow do google e Watson da IBM também temos varias ótimas ferramentas open source, vou deixar duas que já testei aqui.

botfront/botfrontHighlights * Features * Quick start * Documentation * Development Release Notes * Get help * Botfront.io Conversational…github.com

samtecspg/articulateArticulate is a platform for building conversational interfaces with intelligent agents. It is built primarily on top…github.com

Espero que seja de alguma ajuda pra quem está iniciando no mundo dos chatbots e procura uma opção barata e open source, já que o custo de um bot criados na soluções pagas de mercado são relativamente caras dependendo do volume de dados.

Segue o link do projeto completo no github.

Escrito pelo #FERA Odilio Noronha para Medium.

https://medium.com/rapaduratech/rasa-2-0-criando-um-chatbot-com-uma-poderosa-ferramenta-open-source-289430afcfb5

BRQ fale conosco