Desenvolvimento

5 set, 2016

O desafio do projetar um chat de conversação – Parte 01

Publicidade

Os usuários adoram chatbots porque eles são muito simples e minimalistas – eles podem ser tão simples como uma conversa de texto em threads. Os usuários também preferem permanecer dentro de seu aplicativo de mensagens favorito. Eles querem ir direto ao ponto, sem terem que navegar por apps, URLs, menus, botões, anúncios e outros elementos. Mas essa simplicidade também apresenta um desafio de design grande. O chatbot deve entender exatamente o que o usuário está dizendo e agir de forma adequada. Isso é uma característica muito complexa atualmente, mesmo para melhor inteligência artificial de linguagem natural (IA).

Com o estado atual da IA, uma conversa de texto em threads ou UI de conversação (CUI) é quase sempre inferior a uma interface gráfica de usuário bem projetada (GUI). Comparado com o GUI, o CUI ainda está em sua infância. Como uma comunidade, ainda estamos explorando padrões de design e as melhores práticas do CUI. Neste artigo, vou explicar por que chatbots podem falhar e o que pode ser feito para desenvolvê-los com sucesso.

Nota: Dr. Robert Kosara publicou recentemente um texto intitulado “The Personified User Interface Trap“. Ele descreveu Shneiderman e o Maes Debate de 1997, relativos a “direct manipulation” em comparação com os estilos de UIs “interface agent”. Ele concluiu que as lições de 20 anos atrás ainda se aplicam atualmente: a menos que o “agente” possa perfeitamente prever as necessidades do usuário (IA perfeita), apresentando ao usuário uma janela GUI melhor, porque a informação é mais detectável e a interação não requer nenhuma “sintaxe”. No entanto, a forte preferência dos usuários por uma UI minimalista dentro de seu aplicativo de mensagens favorito não pode ser ignorada.

Razões para os chatbots falharem

Após o Facebook lançar sua plataforma de bot em abril de 2016, muitas pessoas experimentaram as suas funcionalidades para “parceiros de lançamento” e descobriram que a plataforma era muito carente. Os chatbots não eram capazes de entender questões básicas que estavam dentro dos domínios da sua aplicação (por exemplo, verificar o tempo). Foi especialmente doloroso assistir aos chatbots implodirem quando o usuário tentava falar “naturalmente” e se afastava das perguntas robóticas que os chatbots esperavam.

Mikhail Larionov, um gerente de produto do Facebook Messenger, revisou muitos chatbots na plataforma da rede social, e identificou três razões para falta de traquejo de alguns chatbots:

  • Plataforma pobre com muito pouca explicação sobre o que o chatbot faz;
  • Objetivos pouco específicos, tentando fazer demais dentro de um único chatbot;
  • Depender demais do processamento da linguagem natural.

Caminhos para fazer um chatbot de sucesso

No entanto, Larionov também deu alguns conselhos concretos para corrigir esses problemas.

Primeiro, um chatbot deve ter um escopo muito limitado. Ele deve dar importância a um assunto específico e fazê-lo bem. Mas, principalmente, ele deve ser capaz de explicar o que ele faz em uma ou duas frases.

Em segundo lugar, você deve usar a capacidade build-in de cada plataforma de mensagens para transmitir as características do chatbot durante o processo de integração do usuário. Para o Facebook Messenger, isso acontece na forma de uma janela de saudação bem trabalhada e uma call to action (CTA). Para o Slack, é a descrição na bot store.

Em terceiro lugar, você deve usar botões estruturados tanto quanto possível. Se você precisar receber a entrada do usuário em um formulário, você precisa lidar com casos em que a IA não poderá compreender a entrada e, então, você deve fornecer mensagens de ajuda sobre como usar corretamente a sintaxe. As sintaxes para um chatbot são comandos e palavras-chave para desencadear ações.

Eu gostaria de acrescentar um quarto item: você não deve fazer spam. Seu chatbot deve entender e responder a comandos como stop, unsubscribe e cancel. E ele deve parar imediatamente o envio de mensagens. Se o seu bot envia mensagens excessivas e indesejadas ao usuário, este não terá escolha e bloqueará o seu chatbot. É sabido que o Facebook deixa seu chatbot offline se 4% dos usuários bloquearem o seu chatbot.

Projetando um comando e controle CUI

O CUI muitas vezes lembra as pessoas da boa e velha linha de comando dos dias de DOS e UNIX. Na verdade, quando os chatbots se tornaram populares, eles foram amplamente utilizados pelos desenvolvedores para realizar tarefas altamente técnicas. Por exemplo, o HUBOT utilizou linhas de comandos internamente para gerenciar muitas operações no GitHub. Nesse caso de uso, a “conversa” não passava de comandos digitados pelos desenvolvedores diretamente na janela de chat, e o bot fazia a execução desses comandos. Será que isso significa que é aceitável construir um chatbot que responde a comandos pré-definidos que o usuário deve memorizar? A resposta é sim, em muitos casos.

Vamos olhar para alguns casos de uso:

  • Chatbots para trabalho e produtividade podem ser mais tolerantes com os comandos. Os usuários desses chatbots são tipicamente profissionais experientes da área de computação, e eles são usados para executar comandos no trabalho. Na verdade, muitos usuários avançados já dominam prompt, linha de comando e atalhos de teclado para substituir a lenta GUI na execução de tarefas repetitivas. Assim, um bot de “linha de comando” altamente eficiente é preferível a um chatty bot nesse cenário;
  • Os usuários mais jovens que cresceram com computadores usaram mensagens de texto ao longo de toda a sua vida. Eles são mais propensos a valorizar a eficiência dos comandos do que uma GUI lenta.

Se você for projetar um comando e controle CUI, aqui estão algumas considerações de design específicas:

  • Forneça auto-complete, ou outras formas de ajuda, para garantir que o usuário escreva os comandos corretamente. Dê uma atenção especial para iOS e recursos de autocorreção dos dispositivos Android, pois eles podem alterar a entrada do usuário se o seu comando estiver escrito de uma forma não convencional. Um bom exemplo de ajuda de comando integrado são os Slash commands no Slack. A aplicação UI do Slack sugere a grafia correta e fornece uma explicação dos comandos enquanto você digita;
  • Programe o seu chatbot para ser tolerante com erros ortográficos comuns ou com sinônimos. Por exemplo, “ajuda” também pode ser “Como posso fazer isso?”. Esse cenário implica a criação de uma lista de sinônimos, muitos deles podem ser expressões regulares, e a combinação de todos pode ir ao encontro das entradas dos usuários em tempo de execução.

Projetando uma breve conversa por slot filling

O oposto da linha de comando é um chatbot que pode manter uma conversa natural com o usuário. No entanto, dado o estado atual da IA da linguagem natural, é em grande parte impossível ter uma conversa livre com os usuários. E você não precisa. Para um chatbot ser útil, na maioria das vezes, ele apenas precisa de uma conversa altamente topificada. Por exemplo, para perguntar ao seu chatbot sobre o tempo, você poderia dizer:

Qual é o tempo em Austin, Texas, amanhã?

Observe que aqui você tem:

  • Intenção: relatório sobre o tempo;
  • Localização: Austin, Texas;
  • Tempo: amanhã.

O chatbot pode agora consultar o tempo. Mas, às vezes, o usuário não dá todas as informações ao mesmo tempo. Se o usuário inicia com uma intenção única, o chatbot deve ser capaz de pedir ao usuário para completar os outros parâmetros necessários, que são chamados slots. Aqui está como a conversa pode parecer:

Human: What is the weather?

Bot: I will look up weather for you. Do you want to check your local weather or somewhere else?

Human: Somewhere else

Bot: Okay, where is it?

Human: Austin Texas

Bot: Thanks. Do you want to know the weather right now or do you want a forecast?

Human: Forecast

Bot: Okay, when?

Human: Tomorrow

Bot: The weather tomorrow at Austin, Texas, is sunny with a high of 80 degrees and low of 75 degrees.

Você entende a ideia. Esse tipo de conversa altamente topificada pode acontecer em muitos cenários. Em geral, quando você pede ao bot para executar uma tarefa, ele deve ser capaz de ter uma breve conversa para completar todos os espaços em branco necessários.

Existem ferramentas disponíveis para ajudá-lo a realizar essas conversas. Por exemplo, o serviço de conversação IBM Watson pode suportar o slot filling dentro de um script de conversa.

Projetando para conversas interativas

Comandos e conversas de slot filling são formas eficazes para lidar com a falta de uma verdadeira IA de conversação. Mas há uma abordagem mais direta – como exibir botões depois de mensagens que exigem respostas específicas? Dessa forma, você claramente comunica a resposta esperada do usuário. Aqui está um exemplo de botões dentro de uma sessão de bate-papo Facebook Messenger.

image1

Sem esses botões, o chatbot normalmente dá opções numéricas ou palavras-chave (por exemplo, “Responder 1 para ler mais e 2 para ver todas as histórias”.). Esse tipo de interação pode muitas vezes parecer robótica. Independentemente disso, quando o chatbot pede ao usuário para selecionar a partir de uma lista numerada, ele deve ser capaz de lidar com a entrada do usuário, como 1, um, primeiro, a primeira escolha, e outros sinônimos.

Lembre-se de que o usuário pode não usar os botões ou uma lista numerada que você fornecer. O usuário pode ignorar as teclas e digitar algo completamente diferente. Um exemplo comum é quando o usuário vê um conjunto de botões, não sabe como reagir, e digita ajuda ou menu. Seu chatbot deve estar preparado para analisar esse cenário e interpretar qualquer resposta livre a fim de identificar se o usuário fez uma seleção de acordo com o esperado ou se o usuário queria começar uma nova tarefa.

Claro, se você tem botões, você pode também ter outros elementos interativos. Por exemplo, o Facebook Messenger suporta um carrossel que pode ser rolado horizontalmente. É uma ótima maneira de apresentar uma lista de itens sem encher toda a janela com uma lista muito longa.

image2

Antecipe os diversos modos de entrada do usuário

Uma grande feature de aplicativos de mensagens modernos é a capacidade de enviar imagens, áudio, vídeo, Emojis, localização e outras entradas. O Facebook Messenger é um grande exemplo para esses diversos recursos de bate-papo.

image3

Naturalmente, alguns usuários estão mais inclinados a usar a voz para se comunicar enquanto outros gostariam de enviar fotos. E a resposta à pergunta “onde você está” é melhor respondida com uma localização. O Facebook Messenger fornece seu chatbot com todos os ativos gerados por usuários. Mas cabe ao seu chatbot descobrir o seu significado (por exemplo, de voz para texto, reconhecimento de imagem, OCR, mapeamento de latitude e longitude para endereços, e outras entradas).

Nota: aplicativos de mensagens diferentes suportam diferentes tipos de entrada multimídia geradas pelo usuário, e eles têm maneiras diferentes de enviar esses dados para chatbots. Portanto, é muito difícil criar um chatbot multiplataforma genérico que funciona de forma consistente em todos os aplicativos de mensagens.

Usuários e escritores rudes como designers de UI

Quando você programar o chatbot, precisa antecipar todos os tipos de coisas que o usuário pode dizer. Às vezes, o usuário pode ser rude intencionalmente com o chatbot apenas para forçar a aplicação até o limite e ver como o chatbot reage. Você deve preparar uma série de respostas espirituosos para lidar com comentários rudes.

Em geral, para todas as suas respostas você deve detectar a intenção do usuário em primeiro lugar e, depois, tentar direcioná-lo para a mesma intenção por meio de várias respostas diferentes. Nada é mais robótico do que ver a resposta exata de chatbot repetidas vezes. Ferramentas de gerenciamento de conversa, como API.ai e IBM Watson Conversation ou serviços Dialog podem ajudar você a escolher aleatoriamente a partir de uma lista de respostas preparadas para cada cenário.

A necessidade de respostas espirituosas e de uma personalidade para chatbots deram origem ao movimento “escritor como designer de UI”. Relata-se que as empresas do Vale do Silício estão contratando mestres ingleses e poetas para melhorar seus mais recentes chatbots.

***

Na próxima e última parte, conheça o caso de uso do WeChat.

***

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: https://www.ibm.com/developerworks/library/cc-cognitive-chatbot-conversational-design/