Por que escolhi o Rasa para construir chatbots?

Daniel Silva
Serasa
Published in
7 min readAug 10, 2020

Olá,

Muito bem vindo(a) ao meu primeiro artigo. Desde muito tempo que tenho a intenção de criar um espaço onde eu possa escrever sobre o meu dia a dia e dividir experiências com a comunidade.

Uma pequena introdução…

É difícil pra mim organizar as ideias e transportar tudo para o teclado do computador. Estou tomando isso como um desafio pessoal e um exercício diário. Então, estou me propondo dedicar algumas horas semanais para escrever sobre algumas experiências do meu dia a dia que acho relevantes de serem compartilhadas. Espero que as leituras não sejam entediantes, prometo que irei melhorar a cada novo post.

Nesse primeiro momento tenho a intenção de escrever uma série de artigos semanais para mostrar um pouco da minha trajetória na escolha e uso do Rasa Framework para construção do Chatbot no Serasa.

Esse Bot atualmente é responsável por tirar dúvidas dos nossos consumidores sobre os diversos produtos da Serasa e negociar suas dívidas utilizando a plataforma do Limpa Nome.

Neste artigo pretendo mostrar um pouco sobre o processo de escolha da tecnologia, os fatores relevantes que me guiaram na escolha dessa plataforma e alguns prós e contras que encontrei após sua implantação, então vamos lá.

Dentro do Serasa (Startup da Serasa Experian) levamos muito a sério o conceito de MVP. Costumo usar a analogia do parquinho de areia, onde constantemente estamos construindo e desconstruindo coisas a fim de encontrar o melhor modelo e a melhor experiência para os nossos consumidores. Partindo dessa premissa, através de uma ação pioneira começamos o desenvolvimento do nosso primeiro Chatbot, nesse momento eu ainda não participava da equipe responsável, era tudo uma super novidade pra mim, mas posso contar um pouco do que captei com o pessoal e como se deu sua evolução.

Mas primeiro, eu gostaria de elucidar um pouco os diferentes tipos de Bots que podemos encontrar em operação no mercado.

Um papo rápido sobre os tipos de Bots…

Ao se construir um Bot a primeira coisa a ser observada é o contexto ao qual ele será inserido, o tipo de interação que se busca com o usuário e o quão profundo e semelhante a um humano queremos que suas interações sejam. Dessa forma, podemos dividi-los em 3 grandes categorias:

  1. Bots baseado em regras
  2. Baseado em inteligência artificial com processamento da linguagem natural.
  3. Híbridos

Os Bots baseados em regras são um pouco mais limitados do que os baseados em IA, porque só podem atender a um número restrito de regras. Eles seguem um vocabulário pré definido, geralmente compostos por um conjunto de palavras chaves de contexto limitado.

Isso não quer dizer que os Bots baseados em regras sejam uma escolha ruim. Como eu falei, tudo depende do contexto no qual ele será inserido. Um exemplo são os Chatbots para marcação de consultas, onde o conjunto de regras é limitado normalmente a escolha dentro de uma lista pré definida de médicos, datas e horários. Se valem muito bem desse modelo justamente porque proporciona uma construção rápida e simples. Em contrapartida, em casos onde o usuário forneça uma opção que o Bot não esteja esperando, ele irá responder com uma mensagem padrão solicitando as mesmas informações ou passando o atendimento para um humano. É comum ver essa abordagem associada ao uso de botões, onde o usuário é limitado a escolher apenas uma das opções apresentadas.

Os Bots baseados em inteligência artificial vão mais além, eles tentam simular a interação humana de várias formas. Boa parte da tecnologia é baseada em redes neurais, utilizando o que chamamos de processamento de linguagem natural. Dessa forma é possível identificar as intenções dos usuários e executar ações de acordo com padrões ensinados e aperfeiçoar esse comportamento apresentando novos padrões, fazendo com que o Bot "aprenda" e evolua a todo momento.

Dessa forma é possível atingir um alto grau de assertividade nas intenções, proporcionando uma experiência cada vez mais humana. É possível inserir esses Bots em contextos mais complexos, pois quanto mais ele interage mais "inteligente"ele fica, fazendo com que consiga se virar bem em cenários onde o usuário pode facilmente desviar do fluxo padrão.

Já os híbridos se valem das duas abordagens para construir experiências onde é possível que mesmo durante o preenchimento de um formulário de atendimento médico, por exemplo, o usuário esteja livre para tirar dúvidas sobre o perfil do médico escolhido. Dessa forma, o modelo de regras ajuda a capturar as escolhas sobre a consulta, como data, hora e o médico. Enquanto o modelo de IA ajuda a identificar a intenção do usuário para que possa auxiliá-lo em suas escolhas.

O que tínhamos e para onde queríamos ir…

Depois dessa rápida introdução, vamos voltar ao nosso contexto dentro da Serasa…

Com o objetivo de colocar um Chatbot o mais rápido possível no mercado e testar a sua adoção e desempenho no mundo real, em uma primeira versão foi utilizada uma ferramenta de mercado. Nela você desenha todo o fluxo através de uma estrutura visual no estilo "arrastar e soltar". Você apenas conecta componentes de IA, como o Dialogflow ou IBM Watson e adiciona inteligência para manipular as intenções dos usuários. Dessa forma nosso esforço estava direcionado na integração com nossos serviços e aprimoramento das intenções. Até aí tudo mamão com açúcar não é mesmo?

Conforme o Bot ia crescendo, com novas intenções e novos fluxos, foi ficando difícil de organizar tudo, o que logo se tornou um verdadeiro inferno para dar manutenção. Outro ponto que também pesou foi o financeiro.

Como um produto de alcance nacional, temos muita volumetria e com isso precisamos medir bem a sustentabilidade de todas as soluções que criamos. Dessa forma, por conta dessa grande volumetria rapidamente estávamos gastando mais de 4x o valor de tudo que conseguíamos arrecadar através desse Bot.

Devido esses fatores, logo identificamos que rodar nesse formato seria insustentável. Então, decidimos que era hora de desenhar uma solução interna que pudesse ser fácil o suficiente para dar um rápido pontapé inicial, fácil de manter e de usar, econômica e que suportasse todo o nosso tráfego (principalmente em épocas de campanhas televisivas).

Sendo assim, partimos em busca de uma solução que fosse Open Source e que pudesse atender a esses requisitos. Rapidamente encontramos diversas ferramentas, mas sempre ficava faltando um ponto ou outro para ser atendido (em breve irei escrever sobre um comparativo que fiz sobre essas ferramentas).

Então encontramos o Rasa…

E por que o Rasa?

Logo de cara fiquei bem animado em ver que o Rasa possui uma comunidade muito ativa e que está a todo momento propondo melhorias e soluções que facilitam o dia a dia do desenvolvedor. No começo era um pouco difícil encontrar materiais robustos que falassem sobre os recursos avançados, mas isso está mudando rapidamente.

Outro ponto que nos chamou a atenção foi o Rasa X. Apesar de ter uma opção de uma licença Enterprise que adiciona alguns recursos legais (e é onde os criadores do Rasa apostam suas fichas para fazer dinheiro), a versão Community nos atende muito bem. Ainda está em versão beta, mas conseguimos realizar os aprimoramentos necessários diariamente de forma bem satisfatória. Ainda temos alguns gaps relacionados ao treinamento de novos modelos a partir da sua interface, mas estamos no caminho para entender a melhor forma de utilizar esse recurso.

Algo que realmente me cativou foi poder trabalhar inteiramente Indoor, sem depender de ferramenta de terceiros como Dialogflow ou IBM Watson para fazer o processamento da linguagem natural. Através do Rasa NLU é possível criar excelentes modelos de predição. Obviamente, foi preciso realizar testes ostensivos para conseguir encontrar um modelo ideal que realmente pudesse nos atender. A língua portuguesa é maravilhosa, mas traz uma série de desafios computacionais para os algoritmos de NLP, e criar um modelo que entenda bem as diferentes formas de expressão em uma língua cheia de falsos cognatos (palavras semelhantes na escrita, porém diferentes no significado), uso excessivo de contextos e expressões regionais é bem desafiador.

Outro ponto bem interessante é que agora podemos adicionar eventos em diversas partes do fluxo de interação com o usuário para coletar métricas de uso, taxa de erros e acertos, entre outras coisas. Na estrutura antiga não tínhamos essa abertura e conseguíamos rastrear apenas quando a requisição chegava em nossas API`s. Dessa forma, temos muito mais informações que nos ajudam a direcionar nossas ações, seja em questões de melhoria nos diálogos ou em aspectos técnicos nos serviços de Backend.

Um grande desafio que o Rasa nos trouxe foi entender o seu core e quebrar um paradigma no modelo de construção das interações. Estávamos bem habituados ao modelo de construção baseado em regras a partir de uma interface visual de arrastar e soltar. No Rasa esse conceito é bem diferente e o que antes representávamos a partir de setas e ações, agora temos que representar como histórias. Dessa forma precisamos apresentar várias histórias ao Bot, com diferentes cenários para que ele saiba o que fazer em cada cenário.

Entender como montar histórias longas e complexas de forma eficaz dentro do Rasa é um grande desafio, mas que tem um resultado surpreendente quando bem executado. Conseguimos reduzir drasticamente cenários de bugs onde os nossos usuários ficavam presos em loops infinitos, pelo simples fato de que agora não existe um fluxo cascateado e cheio de estados, e sim um conjunto de situações e ações a serem executadas com pesos atribuídos de acordo com os cenários apresentados para o treinamento da IA.

Um aspecto importante é o número de conectores já implementados por padrão no Rasa, o que torna fácil conectar Slack, Facebook Messenger e Twillio, por exemplo. Basta uma pequena configuração e pronto, tudo funciona magicamente. Inclusive você pode personalizar o seu Bot de acordo com o canal, o que eleva bastante o poder da ferramenta, já que é possível explorar uma experiência exclusiva de acordo com o canal que o usuário escolher e manter um mesmo core, sem a necessidade de manter vários Bots de acordo com o canal.

Concluindo…

A nossa experiência com o Rasa ainda é bem recente, estamos aprendendo bastante, errando bastante e acertando também. Já conseguimos colher bons frutos, e um deles é fundamental, a redução significativa dos custos de operação. Entendemos que é um caminho longo e muitos desafios ainda estão por vir, afinal, o processo de construção de um Bot maduro requer muitas fases e muito estudo. Mas estamos com esperança de que estamos no caminho certo.

Então é isso aí, nos próximos posts, irei entrar mais a fundo na teoria que envolve o funcionamento do Rasa e trazer alguns tutoriais práticos pra vocês, até breve.

--

--

Daniel Silva
Serasa
Editor for

Desenvolvedor (Python, PHP, Java, Javascript), apaixonado por IA, chatbots e grandes desafios.