Desenvolvimento

18 ago, 2016

Um guia para desenvolvedores de chatbots

Publicidade

O primeiro chatbot, ELIZA, foi desenvolvido há 50 anos no Instituto de Tecnologia de Massachusetts (MIT). Ele simulou uma psicoterapeuta Rogerian, alguém que apenas repete as palavras do usuário humano de volta para o ser humano; não é muito bom. Nas décadas seguintes, chatbots eram, em sua maioria, de interesse acadêmico. Mas, nos últimos anos, chatbots baseados em smartphones ganharam grande interesse por parte da indústria com produtos de alto perfil, como Siri da Apple, Amazon Eco e WeChat da China.

Em 2016, chatbots são uma das principais tendências na tecnologia. As maiores plataformas de mensagens, como Facebook Messenger e Skype, anunciaram programas de desenvolvimento para suportar aplicativos chatbot. Ao mesmo tempo, plataformas de mensagens menores, como Slack e Telegram, lançaram “lojas de bot” e fundos de investimento para atrair desenvolvedores. O Google está apostando diretamente em um aplicativo chatbot (Allo) desenvolvido por sua inteligência artificial e Big Data. Para os desenvolvedores, agora é o melhor momento de surfar a grande onda da “próxima grande coisa” em tecnologia.

A convergência das forças de mercado

A ascensão dos chatbots é o resultado direto da mudança de comportamento do usuário no mundo móvel pós-app e do amadurecimento das tecnologias facilitadoras essenciais.

  • Após quase uma década de crescimento explosivo, aplicativos móveis pararam amplamente de crescer. E como o Wall Street Journal diz em “What Comes After Apps“, usuários de smartphones chegaram ao seu limite da quantidade de aplicativos que querem instalar e abrir diariamente.
  • Usuários estão passando cada vez mais tempo em poucos apps. E os grandes vencedores nesse sentido são aplicativos sociais e de mensagens. Eles não gostam de sair de seu app de mensagem apenas para pegar fragmentos de informações (por exemplo, checar o clima, preços de ações ou procurar por um restaurante ou um mapa).
  • Usuários mais novos cresceram com computadores e são muito mais experientes nesse sentido do que os usuários mais velhos. Como resultado, os usuários mais jovens estão mais confortáveis com mensagens de texto e na comunicação com computadores usando comandos, que têm sido favorecidos por usuários avançados sobre GUIs mais lentas.
  • Os consumidores, especialmente os ricos, estão terceirizando suas “tarefas”, como dirigir, fazer compras, limpeza, entrega de refeições e outras atividades, dando origem à “economia show” e à necessidade de mais serviço ao cliente.
  • A inteligência artificial (IA) ficou muito melhor nos últimos anos em entender o que o usuário quer em linguagem natural.
  • A economia de API amadureceu ao ponto de que muitos serviços úteis podem ser acessados a partir de computadores para executar tarefas do mundo real.

Em suma, chatbots são usados nos ambientes preferidos dos usuários humanos (aplicativos de mensagens), conversam com usuários em linguagem natural, entendem o que os usuários querem, e realizam comandos humanos através de uma grande rede de serviços relacionados.

Plataformas de bot

Agora, vamos dar uma olhada em algumas plataformas de mensagem nas quais você pode construir bots.

O Facebook Messenger é uma das plataformas de mensagens mais populares, com mais de 1 bilhão de usuários ativos mensais. Após alguns meses de o Facebook ter aberto sua plataforma de bot para os desenvolvedores, mais de 23.000 desenvolvedores estavam construindo bots. Até agora, eles lançaram mais de 18.000 bots. Bots do Facebook Messenger estão amplamente associados às páginas do Facebook, o que é bastante onipresente entre as empresas.

O Kik Messenger é um popular aplicativo de mensagens com mais de 200 milhões de usuários ativos mensais. Uma característica fundamental do Kik é seu anonimato, o que também é controverso, dado o grande número de adolescentes na plataforma. O Kik lançou uma bot store para promover bots em sua plataforma, em abril de 2016.

O Telegram é um relativamente novo aplicativo de mensagens. Ele foi lançado em 2013 e agora tem 100 milhões de usuários ativos mensais. Um diferencial importante do Telegram são seus recursos avançados de segurança e criptografia. O serviço tem suporte para bots desde junho de 2015. De forma semelhante ao Facebook Messenger, seus bots exibem elementos ricos de interface de usuários, como botões e cartões formatados.

O Skype é uma plataforma de mensagens com mais de 300 milhões de usuários ativos mensais. Além de mensagens de texto, o foco tradicional do serviço é em chamadas de vídeo e por voz.

O Twitter é uma plataforma pública de mensagens com cerca de 300 milhões de usuários ativos mensais. Bots sempre foram uma parte do Twitter como usuários “não-humanos”. Ao usar a API do Twitter, um bot pode seguir pessoas e enviar tweets.

WeChat é a plataforma mobile de mensagens dominante na China e tem mais de 700 milhões de usuários ativos mensais. Ela é pioneira em chatbots, com uma plataforma de bots muito bem sucedia. Na China, as empresas muitas vezes têm um bot WeChat muito antes de criarem um site.

SMS e e-mail são plataformas de mensagens tradicionais com o maior alcance de usuários. Dito isso, o número de mensagens enviadas usando aplicativos móveis, tais como Facebook Messenger, ultrapassou em muito o SMS nos últimos anos. Você pode usar APIs de telecomunicações, como Twilio, para construir bots SMS, e bots de e-mail podem ser construídos nos protocolos de e-mail abertos da Internet ou usando fornecedores de API especiais, como lonelybots. A plataforma de e-mail já tem chatbots úteis, por exemplo, o assistente inteligente de agendamento x.ai bot.

O Slack é uma plataforma de mensagens de grupo voltada para equipes de trabalho. Em fevereiro de 2016, registrou 2,3 milhões de usuários ativos mensais, e está crescendo rapidamente. O Slack é um dos pioneiros na atual onda de renascimento dos chatbots. O serviço fornece uma das primeiras bot stores na indústria para que as equipes possam descobrir e instalar bots facilmente. Como esperado, a maioria dos bots do Slack está relacionada a trabalho e produtividade.

Além dos aplicativos móveis de mensagens, existem muitos prestadores de serviços de mensagens. Aplicativos móveis integram seus serviços para fornecer recursos de mensagens in-app que os usuários podem utilizar para se comunicarem com outros. Como esses serviços de mensagens são orientados a API, é possível desenvolver bots para interagir diretamente com essas APIs e conversar com usuários do aplicativo. Exemplos de tais bibliotecas de mensagens in-app e SDKs incluem EaseMob, Camada, Tiger Connect e outros.

Frameworks de bots

Como um desenvolvedor de chatbot, pode ser esmagador desenvolver e direcionar tantos SDKs de mensagens ao mesmo tempo. Frameworks de bots são frameworks de software que abstraem muito do trabalho manual que está envolvido na construção de chatbots. Muitas dessas ofertas estão no mercado.

No entanto, embora muitos frameworks de bots sigam a máxima “escreva uma vez, e faça deploy em qualquer lugar”, você está mais propenso a criar um chatbot separado para cada uma de suas plataformas de mensagens. Isso ocorre porque soluções do tipo “one-size-fits-all” devem estar em conformidade com o menor denominador comum de todas as plataformas de bots que eles suportam. Isso muitas vezes cria uma experiência de usuário menos ideal, especialmente nos primeiros dias do ecossistema, quando as próprias plataformas de bot nativas estão evoluindo rápida e constantemente, adicionando novos recursos.

Além disso, as soluções de framework não são ótimas para iniciantes aprenderem sobre o desenvolvimento de chatbots. Elas tentar automatizar muito e obscurecem o mecanismo subjacente para iniciantes. Esses obrigam você a usar as características de interface do usuário que eles suportam, mas sua inovação está pelo menos um passo atrás das plataformas de mensagens nativas. Finalmente, frameworks existentes são baseados principalmente em node.js, enquanto uma grande maioria dos desenvolvedores do lado do servidor está em ambientes de programação mais maduros, como Java e PHP.

Para uma aprendizagem eficaz, proponho uma abordagem de “framework open source leve”. Ele estabelece uma convenção de programação simples, baseada em solicitação e resposta para todos os bots. O objetivo é ter código “similar” para cada plataforma de bot, não código idêntico para ser executado em todos os lugares. Dessa forma, você tem a flexibilidade para adicionar recursos específicos para cada plataforma de bot, enquanto o framework ainda abstrai o código clichê comum, tais como segurança, registro, análise, armazenamento em cache e integração com API. Você pode baixar e aprender sobre meu próprio framework leve, tanto em Java quanto em PHP, no GitHub.

Serviços de IA

Como discutido anteriormente neste artigo, o avanço dos serviços de IA em linguagem natural é um fator fundamental para chatbots. A IA permite que modernos chatbots escapem da armadilha de uma “árvore de telefone” e se tornem parceiros de usuários humanos. Quatro tipos importantes de serviços de IA estão relacionados à linguagem natural.

  • Reconhecimento de padrões baseado em regras: exemplos desse tipo incluem data, e-mail, número de telefone, quantidade e acionar palavras. Essas regras são geralmente implementadas como expressões regulares no aplicativo. O benefício dessas regras é que elas são precisas, e você pode adicionar e subtrair regras para lidar com novas situações e corrigir erros.
  • Classificador de linguagem natural: esse tipo de serviço de IA é usado para detectar e classificar a intenção de um comando do usuário. Por exemplo, quando o usuário pergunta “Está muito quente hoje?”, a IA deve saber que o usuário está perguntando sobre a temperatura de hoje. Esse classificador é construído através do treinamento de um algoritmo com muitas expressões de fala do mundo real em uma área do aplicativo. Um exemplo disso é o Watson Natural Language Classifier, um serviço web fornecido pela IBM que você pode usar para treinar seu modelo. Após o treinamento, você pode enviar novas frases usando o serviço web, e ele voltará as classificações com um nível de confiança para cada um.
  • Gerenciador de conversa baseada em regra: com base na intenção do usuário e nos dados que estão associados com a intenção (chamados de entidades), tais como localização e tempo, o serviço pode aplicar regras e gerar respostas de script. A ideia por trás desse tipo de serviço é que a maioria das conversas de chatbots é muito semelhante. Portanto, elas podem ser capturadas em scripts sem o desenvolvedor ter que programar uma máquina de estado com inúmeras declarações IF-THEN.
  • Reconhecimento de voz: embora muitos smartphones high-end hoje tenham reconhecimento de voz que é construído diretamente em seus métodos de entrada de texto, o reconhecimento de voz de terceiros ainda é importante para muitos dispositivos móveis ou computadores mais baratos. Além disso, ele é importante em alguns casos de uso quando a voz do usuário pode ser armazenada para posterior análise (como em um serviço de cliente quando um supervisor pode querer rever o humor e o tom do usuário). O IBM Watson fornece um serviço text-to-speech e um serviço speech-to-text em sete idiomas internacionais.

Nota: O IBM Watson Developer Cloud tem uma coleção abrangente de serviços de IA prontos para serem usados e serviços NLP para o desenvolvimento de chatbots e muitas outras aplicações. Por exemplo, o Watson Conversation Service combina classificação de intenção NLP, detecção de entidade e gestão de conversa em script.

Resumo

Este artigo explicou as plataformas para desenvolvimento de chatbots, frameworks de desenvolvimento, e serviços de IA. Para iniciar no desenvolvimento de chatbots, eu recomendo começar com uma plataforma de mensagens popular, e depois baixar o código-fonte do framework leve no GitHub para você mesmo brincar.

***

Michael Yuan é autor do artigo. A tradução foi feita pela redação iMasters, e você pode acompanhar o artigo em inglês no link: http://www.ibm.com/developerworks/library/cc-cognitive-chatbot-guide/index.html