Desafio da qualidade
Além do grande desafio de como gerenciar o conteúdo de maneira viável e organizada, existe o desafio de como crescer o domínio do bot com qualidade. À medida que a base de treinamento do bot muda, muitas vezes é necessário também atualizar os parâmetros de treinamento da rede para garantir que a acurácia do bot se mantenha.
Aliado à isso, no contexto colaborativo de uma equipe com diversas pessoas evoluindo o bot simultaneamente, é preciso alinhar a visão dos membros do time em relação aos parâmetros de qualidade.
Qualidade em ChatBots Rasa
Se Tratando de Chatbots desenvolvidos com Rasa, os parâmetros de qualidade estão relacionados principalmente à dois aspectos:
Identificação de intenções: Qual o desempenho do bot em classificar um texto em uma categoria que define a sua intenção;
Desempenho em fluxos de conversa: O quão bem o bot consegue se comportar de acordo com as intenções classificadas e responder corretamente o usuário de acordo com o histórico das interações e a base de treinamento;
Também há a preocupação em relação à usabilidade do bot, uma vez que caso o bot tenha uma Experiência de Usuário ruim, ele poderá ter um péssimo desempenho e se comportar de forma inesperada, mesmo com uma boa base de treinamentos e uma rede muito bem configurada. A melhoria desta experiência está relacionada há fatores como desenvolvimento de personalidade, construção de roteiros de conversa, adequação da linguagem do bot ao público-alvo, etc. Porém, aferir de forma automatizada a qualidade desses parâmetros ainda é uma tarefa inviável, sendo assim a qualidade dessas métricas exige uma análise direta e profunda por parte da equipe.
Abordagem de aferição da qualidade
Tendo em consideração os parâmetros anteriores, a construção desta abordagem é baseada no objetivo de garantir de forma automatizada a acurácia do ChatBot em relação à detecção de intenções e o desempenho nos fluxos de conversas.
Estágio 1: O primeiro estágio consiste em garantir a consistência de sintaxe dos arquivos de treinamento do bot. O Rasa utiliza um formato de configuração que depende de um arquivo principal chamado domain
, onde devem estar definidas todas as intents e utters definidas e utilizadas. Caso haja alguma inconsistência entre essas informações o desempenho do bot poderá ser afetado, uma vez que parâmetros importantes podem não ser corretamente utilizados durante o processo de treinamento e predição do bot.
Objetivo: O foco deste estágio é sanar possíveis erros de digitação, inconsistências durante merges e definições incorretas de intents e utters nos arquivos de configuração.
Solução proposta: Dentro da TAIS é utilizado um script de validação automatizada desses parâmetros, que analiza os arquivos de configuração do Rasa e o dataset para garantir que não hajam inconsistências.
Estágio 2: O segundo estágio consiste na validação do comportamento do bot durante as interações e a execução dos fluxos de conversa.
O Rasa já oferece um recurso de validação dos fluxos de conversação. Através desse evaluation é possível testar o comportamento do bot dentro do contexto de uma conversa, e entender se ele está fazendo uma predição correta das ações a serem tomadas de acordo com cada intenção identificada. Além disso, esse mecanismo facilita o teste da capacidade de generalização do bot.
Objetivo: O objetivo deste estágio é garantir que o bot está se comportando da forma esperada para determinados fluxos de conversa.
Solução proposta: Pode-se utilizar a funcionalidade de evaluation do Rasa para testar diretamente o funcionamento de um fluxo de conversa.
Dentro da TAIS foi adicionada mais uma camada de testes com um script para melhoria da visualização dos testes. Onde é possível ver no console quais são as intents e utters que falharam. Isso permite que a equipe de desenvolvimento possa identificar diretamente os pontos onde a acurácia do bot não está tão boa ou o comportamento não está sendo o esperado.
Ao fim desse script é exibido um log das histórias que falharam dentro de cada um dos arquivos.
Utilização do Pipeline
Pode-se configurar tasks para a execução destes scripts dentro de cada contexto.
Uma das alternativas, que é utilizada dentro da TAIS, é utilizar um serviço de CI para validação automatizada destes passos simultaneamente ao processo de contribuição no repositório.
Na TAIS foram configuradas duas tasks simples utilizando um Makefile
. A primeira task executa a validação dos arquivos de configuração do bot e recebe como parâmetro o path para o arquivo domain
, e os diretórios onde estão as intents
e stories
. A segunda task executa o evaluation
nos fluxos de teste que estão dentro do diretório e2e
.
run-validator:
python3 validator.py --intents data/intents/ --stories data/stories --domain domain.yml
test-stories:
python3 test_stories.py --stories e2e/ --e2e
Após isso foram definidas duas tasks simples para validação dos parâmetros definidos. Estes estágios são validados no CI a cada commit, mas podem ser configurado segundo regras específicas, por exemplo serem executados apenas em determinadas branches do repositório.
run dataset validator:
stage: validate format
image: lappis/coach:latest
script:
- cd coach/
- make run-validator
test stories:
stage: test stories
image: lappis/bot:latest
script:
- cd bot/
- make test-stories