Qual a melhor linguagem para se criar um Chatbot?

Olá, amigos! Essa é uma pergunta que escuto de muita gente, o tempo todo, e a resposta curta é depende! Nesse post vou listar algumas características do porque e como eu faço para definir não exatamente a melhor linguagem de programação, mas sim qual a melhor plataforma para criação de Chatbots para cada projeto.

A primeira coisa ao começar a estudar sobre Chatbots é que existe uma infinidade de agentes envolvidos no processo de desenvolvimento desses serviços conversacionais e nem sempre criar um Chatbot do zero é a melhor solução. Então precisamos conhecer, pelo menos o mínimo, sobre cada um destes agentes e se, ou quando, precisamos utilizá-los.

Plataformas de Mensagens

O nome é auto sugestivo, ou seja, é a plataforma para qual você vai criar seu Chatbot. Basicamente é a interface por onde o usuário irá interagir com seu serviço e é ela que fornece toda a estrutura de API’s para que isso seja possível.

Atualmente, quase todas as grandes plataformas de mensagens disponibilizam API’s para que você possa criar um Chatbot (menos o Whatsapp 😞). Por exemplo, podemos citar Facebook MessengerSkypeTelegram , Twitter , SlackDiscordAmazon AlexaGoogle Home/Google Assistant dentre outros que são menos utilizados no Brasil (ahh, também é possível fazer Chatbots para e-mail e claro Webchats — que são uma categoria a parte).

Plataformas de processamento de linguagem natural

As plataformas de processamento de linguagem natural (PLN) ou em inglês Natural Language Process (NLP), são uma das maiores aliadas de um Chatbot inteligente. Com essas plataformas é possível extrair intenções (o que o usuário deseja)e entidades (elementos importantes do texto) presentes em frases enviadas por usuários e a partir disso entregar valor com mais assertividade.

Em muitos casos é possível criar o Chatbot completo apenas usando plataformas de NLP, pro exemplo, se você for fazer um FAQ inteligente. São ferramentas extremamente poderosas e úteis para o desenvolvimento de seu bot. Ex: WIT.aiDialogFlow (antigo api.ai), Rasa NLU (open source), IBM Watson, etc.

Plataformas para criação de Chatbots

Essas plataformas são especializadas em desenvolvimento de Chatbots, diferentemente das plataformas de NLP, o foco delas é prover um conjunto de ferramentas agregadas para que você possa ter em um lugar só, tudo que vai necessitar, ou ainda integrações de fácil configuração, para criação de um Chatbot. Elas podem também incluir, ferramentas de análise, criação de fluxos de conversação, NLP, canais de integração, broadcast de mensagens, etc. Certamente esse é o melhor lugar para quem está iniciando ou quem não tem noção de programação, mas quer criar um bot.

É importante ressaltar que se você é desenvolvedor, existem formas para que você consiga estender suas capacidades usando de programação. Ex: ChatfuelManyChatBLiP (Brasileira :D), FlowXOMotion.ai, etc.

Bibliotecas, SDKs e Framewokrs

Agora vamos colocar a mão na massa! Praticamente toda linguagem de programação já possui um cliente para você conectar e manipular as requisições oriundas das plataformas de mensagens (já listadas anteriormente). A maioria delas fornecem, de maneira simples, uma API em alto nível para receber, processar e responder cada mensagem ou evento enviado pelas plataformas. Para encontrá-las basta dar uma googlada: “chatbot + sua linguagem”+ a plataforma que você quer desenvolver, que certamente você vai achar. Ex: messenger-bot (node), python-telegram-botfacebook-messenger (ruby), etc.

Existem ainda frameworks mais completos que podem, desde se conectar simultaneamente a várias plataformas, como possuir NLP nativo, ter uma interface web rica, etc. Ex: BotPressBotkitlitaBotmaster, etc.

Ferramentas ou utilitários

São diversas ferramentas que podem dar alguns poderes adicionais a seu Chatbot ou a sua plataforma de Chatbot. Podemos subdividi-las em algumas subcategorias:

  • Analytics: Ferramentas voltadas para mensurar e gerar estatísticas sobre sua audiência. Ex: BotMetricsDashbotFacebook Bot AnalyticsBotAnalyticsChatbase dentre outras.
  • Marketing: Ferramentas voltadas para analisar dados e converter em dados voltados para customer success entre outras coisas bacanas (ex: bCRMHunchWhatsHelp, etc.)
  • Monetização: Formas de realizar vendas em Chatbots, já que, infelizmente, nenhuma plataforma liberou pagamento nativo pro Brasil ainda (ex: RadBotswaves.ai,cashbot.ai)
  • Prototipação: Muitas vezes precisamos desenhar todo o fluxo de conversação para ai iniciarmos o desenvolvimento. Você pode usar ferramentas de diagramas, ou ainda melhor, usar uma dessas ferramentas para mostrar na prática como vai ficar seu Chatbot (ex: BotSocietyBotPreviewBotMockBotMockup for Telegram, etc.. )

Vocês podem conseguir uma lista bem completa de tudo isso que mostrei e muito mais nesse compilado feito pela BotCube: https://github.com/GetStoryline/awesome-bots#messaging-platforms

Agora que você está ciente de todas essas entidades, devem estar se perguntando: E agora, o que devo usar para criar meu Chatbot?

Se você não conhece nada de programação e deseja conhecer mais sobre os Chatbots ou precisa de uma solução mais simples que não precise de nenhum tipo de integração específica, com certeza você deve usar alguma plataforma de criação de Chatbot, e caso precise que uma integração customizada seja feita, fica muito mais simples para que um desenvolvedor utilize toda a estrutura e fluxos já criado por você ou ainda desenvolva apenas a parte da integração entre seu Chatbot e a API com as informações desejadas.

Se você é um desenvolvedor e deseja conhecer mais sobre como criar Chatbots, sugiro que, também, comece utilizando uma plataforma de criação de Chatbots, assim você conseguirá entender como os Chatbots se comportam, como você pode desenhar os fluxos de conversação melhores e depois disso conseguirá estendê-lo facilmente utilizando Webhooks disponibilizados por essas plataformas, além de conseguir ter resultados muito mais rapidamente.

Agora se você precisa ter controle total sobre todo o fluxo de conversação para poder executar ações bem específicas de seu modelo de negócio, as bibliotecas são a melhor solução. Mesmo sendo necessário um esforço um pouco maior, elas oferecem uma liberdade de construção que você não encontrará em nenhuma plataforma genérica.

Caso nenhuma das ferramentas seja o suficiente para o que você deseja e seu Chatbot precise de um grau de compreensão maior do que simples matches de palavras e um bom fluxo de conversação, vem a necessidade da utilização de NLP.

O NLP pode ser utilizando tanto para processamento de partes específicas de seu Chatbot, por exemplo compreensão de datas, quanto ser utilizado como o motor central de fluxo de conversação, orquestrado todas as entradas do usuário e direcionando para cada end point responsável requisições que julgar compatíveis, por exemplo, se o usuário enviar uma mensagem “quero uma pizza de calabresa e uma coca zero de 1L”, o serviço de NLP deve identificar a intenção de “solicitação de pizza” e “pedido de bebida”, identificar as entidades{pizza: “calabreza”} e “{bebida: “coca_cola, tamanho: 1000ml}” e enviar para sua API de solicitação de pizza essas informações.

Concluindo, plataformas genéricas de criação de Chatbots são extremamente rápidas para criação de bot, mas possuem limitações e engessamentos, além do preço por funcionalidades premium, na maioria dos casos. Bibliotecas/libs/sdks são mais flexíveis e escaláveis, mas demandam mais tempo e trabalho para criar funcionalidades básicas. Então a escolha da ferramenta certa está diretamente relacionada a seus objetivos e grau de conhecimento.

Já o processamento de linguagem natural deve ser utilizado dependendo de sua necessidade, lembrando que estes podem aumentar potencialmente a complexidade e custo de seu Chatbot, além de poder levar um tempo razoável para que você consiga uma boa base de treinamento.

Para os próximos posts vamos falar mais especificamente de alguma ou algumas dessas tecnologias em um stack real e como você pode criar seu Chatbot usando elas.

É isso, pessoal! Aproveitem e sigam a Vídeos de TI nas redes sociais para ficarem atualizados sobre esse e outros assuntos relativos à Tecnologia da Informação.

Um abraço e até a próxima!