Chatbot Arisa: Tutorial

De Aulas

Este tutorial serve como guia de referência para a utilização da interface de alimentação da base de conhecimento do chatbot da Arisa e do formato das premissas de perguntas/respostas.


Interface

Esta interface é simplificada e tem como função o gerenciamento das informações na base de conhecimentos, armazenada em banco de dados.

Login

O sistema do chatbot permite que sejam criados múltiplos chatbots. Para criar um novo chatbot, basta clicar no botão superior direito Novo Chatbot. Contudo, ainda não está pronta a automatização da interface de conversação. Isso estou fazendo manualmente, no momento.

Para logar, basta digitar o login do chatbot, a senha e clicar no botão Entrar.

Tela de Login.

Configurações

O menu do sistema possui as seguintes opções:

  • Contextos: Listagens de contextos e diálogos.
  • Conversas: Contatos e logs de conversas.
  • Configurações: Informações básicas e configurações do chatbot.
  • Sair: Efetuar o logout do sistema.
Tela de Configuração.

A Tela de Configurações, conforme figura abaixo, possui os seguintes campos:

  • ID do chatbot: login único de identificação do chatbot. Ele é escolhido na hora da criação do chatbot e não pode ser mais alterado. Evitar utilizar caracteres especiais e não utilizar espaço em branco.
  • Nome do chatbot: O nome extenso do chatbot. Pode ser o mesmo do ID, mas aqui dá para ser um nome composto.
  • E-mail do contato: E-mail da pessoa responsável pelo chatbot.
  • Imagem do chatbot: Ao pressionar o botão Selecionar arquivo, você poderá escolher um arquivo de imagem (JPG ou PNG) no computador para representar o avatar do chatbot. A imagem será recortada no formato quadrado e redimensionada para 200x200 pixels.
  • Senha: Use esse campo apenas no caso de você querer trocar a senha de acesso.
  • Botão Texto em negrito: Armazena as alterações no banco de dados.
  • Botão Apagar chatbot: Exclui o chatbot e toda a sua base de dados. Você será direcionado para uma tela de confirmação.

Contextos

Um contexto é um grupo de diálogos de conversação baseados em um assunto específico. Esse recurso serve para que um chatbot saiba responder conforme o assunto que está conversando. Por exemplo:

Contexto Séries de TV:

Usuário: Qual sua favorita?
Chatbot: Eu gosto muito de Star Trek.

Contexto Comidas:

Usuário: Qual sua favorita?
Chatbot: Adoro sushi!
Tela de Contextos.

A listagem de contextos possui no cabeçalho um pequeno ícone sinal de (+). Este serve para adicionar um novo contexto. Na listagem, ao lado de um contexto existente, existe um ícone de lixeira (para excluir o contexto) e um ícone para editar o contexto. Quando clicar no nome do contexto, você entra neste para poder editar os diálogos deste contexto.

É importante observar que deve existir um, e apenas um, contexto com nome 0. Este é o contexto raíz.

Edição de Contextos

Na tela de Cadastro/Edição de contextos, o campo nome é uma descrição curta e Comentários é uma explicação do que se trata o contexto em questão.

Tela de Edição de Contextos.

Diálogos

Um contexto pode ser composto de divérsos módulos de diálogos. Estes servem para identificar se a fala do usuário se encaixa em algum deles para poder fornecer uma resposta condizente. Caso mais de um diálogo seja encontrado, será escolhido um aleatoriamente.

Tela de Conversas.

A listagem de diálogos possui um ícone com sinal de (+) para acrescentar um novo contexto. Na listagem, há o ícone de lixeira para excluir, um ícone de edição e, caso clicar no nome do contexto, o diálogo vai ser expandido para mostrar detalhes deste.

Diálogo Expandido

Ao clicar no nome do diálogo na listagem, uma descrição mais detalhada das informações deste diálogo é mostrada.

Tela de Conversa Expandida.

Em Perguntas: são mostrados padrões para as possíveis mensagens enviadas pelo usuário. Caso alguma se enquadre neste padrão, este diálogo será selecionado como um dos candidatos à responder. As perguntas são separadas por ponto e vírgula (;).

Em Respostas são as possíveis respostas à mensagem que fechou com algum padrão deste diálogo. A resposta escolhida é aleatória.

O Link é utilizado para algumas interfaces redirecionarem um site para o link cadastrado ou para mostrar o link no chat.

Goto é utilizado para navegar entre contextos. Caso este diálogo seja selecionado, além de dar uma resposta, o usuário irá pular para o contexto apontado em Goto.

Esta tela aparece em dois casos, quando ao editar um diálogo selecionado ou, com os campos em branco, quando no cadastro de um novo diálogo.

O campo Descrição informa sobre o que é este diálogo.

Contexto mostra em que contexto este diálogo está. Ele pode ser movido para outro contexto ao alterar esta informação.

Os campos seguintes são os mesmos descritos em Diálogo Expandido

Tela de Edição de Conversa.

Conversas

No menu Conversas é apresentada a lista de contatos ordenado pela última conversa realizada. Esta área é importante para manter logs das conversas. Um dos principais objetivos de se saber o que estão conversando com o chatbot é poder entender quais as perguntas que são feitas com mais frequência e como são feitas. Este recurso auxilia a melhorar a base de conhecimento do chatbot.

Tela de Lista de Contatos.

Além dos ícones de exclusão (não está funcionando no momento) e edição do contato, as informações presentes na listagem são:

  • id: é um identificador e é diferente conforme o meio que o usuário está utilizando para conversar com o chatbot. Ao clicar no id, é possível alterar algumas informações do contato.
  • Nome: do usuário. As vezes é fornecido pela própria interface de conversa.
  • Linguagem: que a pessoa quer conversar. Há um sistema de tradução, não está habilitado no momento para este sistema, pois estou trabalhando em melhoras deste recurso para uma nova versão.
  • Tipo: podendo ser mestre ou contato. Servirá para alguns casos futuramente. No momento não há utilidade.
  • Último contato: Quando foi enviada a última mensagem do usuário para o chatbot. Formato: Ano-Mês-Dia Hora:Minuto:Segundo.

Edição de Contato

Pode-se alterar algumas informações como Nome, Tipo e Linguagem. Deve-se observar que algumas interfaces podem alterar o nome automáticamente. Em baixo dessas informações é apresentada a lista de contextos que o usuário está. No caso da figura acima, ele estava no contexto 0 e entrou no contexto Comidas.

Tela de Edição de Contato.

Contato: Logs de conversas

O Log das conversas é apresentado com as informações de quando a mensagem foi enviada, quem enviou (usuário ou chatbot) e a mensagem, começando da primeira, até a última (em baixo).

Tela de Logs das conversas com um contato.

Estrutura dos Diálogos

Para as Respostas pode se usar acentos e caracteres especiais. Apenas lembre-se sempre de colocar ponto e vírgula (;) para separar cada resposta.

Para as Perguntas é importante seguir algumas regras.

  • usar apenas caracteres e números, sem acentos ou cedilha ou caracteres especiais.
  • usar letras minúsculas.
  • usar o caracter porcento na forma de curinga (%) para as perguntas. O curinga é de grande importância, pois é o que dará maior maleabilidade para interpretar a mensagem de entrada do usuário. Contudo, deve-se ter o cuidado para não generalizar demais, o que pode deixar as respostas do chatbot aleatórias demais e muitas vezes sem sentido.

Muitas vezes a prática de criação de diálogos vai ajudar a criar chatbots com respostas mais condizentes, assim como para melhorar os diálogos já cadastrados. Utilizando o sistema de logs de conversas também serve como recurso para verificar como os usuários estão conversando com o chatbot para poder criar diálogos que satisfaçam melhor os questionamentos e dúvidas dos usuários.

Contexto 0

É importante haver um contexto para conversas genéricas como cumprimentos, despedidas, ou mesmo com assuntos gerais. Isso serve como socialização do chatbot para com os usuários e também uma forma de tentar buscar do usuário o que ele quer extrair de informações do chatbot. Este contexto genérico é o contexto 0. Caso você tenha um contexto para conversar sobre comidas, por exemplo, pode-se criar um diálogo no Contexto 0 com perguntas que tentem interpretar quando o usuário está falando sobre comida e direcione este para um outro contexto específico.

Também pode haver uma estrutura de árvores de contextos, especificando ainda mais o que o usuário quer conversar. Por exemplo, se o usuário quer conversar sobre uma comida específica, no caso sushi, pode-se criar um diálogo que leve-o para outro contexto onde há apenas diálogos que conversem sobre sushi.

> 0 > [Comidas] > [Sushi]

Se o usuário tentar conversar algo com o chatbot e ele não encontra no contexto de sushi, o chatbot irá pesquisar nos diálogos do contexto anterior para tentar encontrar uma resposta. Caso não encontre alí, irá pro anterior e por assim em diante, até o contexto 0.

Importante: O contexto inicial é o contexto 0. Para que qualquer outro possa ser encontrado pelo chatbot, ele deve possuir um Goto para ele. Por exemplo, para acessar o contexto de Comidas, no contexto 0 há um diálogo com o assunto de comidas que tem um Goto para o contexto Comidas, assim como para acessar o contexto Sushi, no contexto Comidas há um diálogo falando sobre sushi que tem um Goto para o contexto Sushi.

Respostas genéricas

No contexto 0 deve existir um diálogo genérico, ou respostas de fuga. Quando o chatbot não conseguir encontrar nada que combina com a mensagem do usuário, ele irá escolher aleatoriamente uma resposta desse diálogo genérico.

Para criar um diálogo genérico, basta criar um diálogo com o campo perguntas vazio no Contexto 0. Pode se criar mais de um diálogo genérico para separar melhor as respostas de fuga.

Crie diálogos genéricos apenas no Contexto 0.

Utilização do Curinga %

Curinga no início:: quando o curinga é colocado no início, pode-se ter qualquer coisa antes da palavra.

%tudo bem;

Curinga no fim : quando o curinga é colocado no fim, pode-se ter qualquer coisa depois.

Gostaria de saber%;

Pode-se utilizar este recurso para o caso de diferença de gênero. Por exemplo. Se o avatar do chatbot é feminino, a frase como você é implementada termina com a, mas se for masculino, termina com o. Então utiliza-se o curinga para não ter problema com essa diferença.

como voce e implementad%

Curinga entre palavras: pode-se ter qualquer coisa entre duas palavras, sendo que obrigatóriamente deve haver na frase essas palavras e na ordem correta.

como%esta;

Exemplo 1

Caso o usuário queira perguntar para o chatbot se está tudo bem com o chatbot, o usuário pode enviar vários tipos de mensagems:

E aí? Tudo bem com voce?
Oi, tudo bem?
Como você está?
Hei, como está?
...

Pode-se abstrarir essas perguntas com algumas formas utilizando o curinga, como por exemplo:

%tudo bem?%;
%como%esta?%;

As duas primeiras perguntas foram abstraídas com a primeira linha acima e as duas seguintes com a segunda linha. O curinga entre como e está? significa que pode ter algo no meio como tu, a senhorita, etc. Observe o ponto e vírgula no final das frases acima.

Exemplo 2

Caso alguém quiser perguntar como o chatbot funciona, pode se cadastrar as seguintes perguntas:

%como voce e implementad%;
%como voce funciona%;
%seu funcionamento%;
%como voce trabalha%;
%voce funciona como%;

E como respostas, por exemplo, pode-se ter:

Este é um assunto bem complexo, na verdade. Quem sabe responder melhor pra você é meu mestre. Há também artigos publicados sobre meu funcionamento e estão disponíveis no meu blog: http://www.projetoarisa.com.br.;
Eu não sei ao certo, é melhor conversar com meu mestre sobre isso ou visite meu blog: http://www.projetoarisa.com.br.;

Observe o ponto e vírgula no final das frases acima.

Contextos e Diálogos codicionais

Você pode utilizar a estrutura dos contextos e diálogos para fazer uma pergunta específica para o usuário do chatbot. Por exemplo, imagine que você quer saber se o usuário quer pagar em crédito ou débito. No contexto em que você se encontra, você cria um diálogo para o usuário falar sobre pagamento.

O usuário fala: "Quero fazer o pagamento."

e entra em um diálogo por causa da palavra chave ***%quero%paga%***.

O bot responde: "Ok, como você pretende pagar? cartão crédito, cartão de débito ou boleto bancário?"

Neste mesmo diálogo, há um link para um contexto criado para gerenciar essa pergunta. Neste caso, ele é chamado de "Formas de Pagamento". Lá dentro são criados os diálogos para gerenciar cada uma das respostas. Cada um dos diálogos de resposta pode ter um link para um contexto específico para tratar cada um desses assuntos ou, nesse caso, formas de pagamento.

A estrutura dos contextos ficaria da seguinte forma:

[Contexto Atual] -> [Formas de Pagamento] -> [Cartao de Debito]
                                    |  |
                                    |  +---> [Cartao de Credito]
                                    |
                                    +------> [Boleto Bancario]