Code Monkey home page Code Monkey logo

rasa-ptbr-boilerplate's Issues

Tutorial - como criar o primeiro chatbot

Criar um tutorial que guie a criação de um primeiro chatbot

Tarefas

  • Passo a passo como criar um novo projeto

  • passo a passo como subir o boilerplate e executá-lo

  • Passo a passo como criar uma utter

  • Passo a Passo como criar uma intent

  • Passo a passo como criar stories

  • Passso a passs de como treinar e validar o novo conteúdo

Critérios de Aceitação

  • Tutorial em formato Markdown na pasta docs/ do repositório

  • Qualquer desenvolvedor é capaz de criar um chatbot no seu contexto

  • O desenvolvedor é capaz de validar o novo conteúdo no chatbot em ambiente local

Tutorial - Como avaliar o seu Dataset de treinamento (Intents + stories)

Criar um tutorial que guie o usuário na avaliação da qualidade do chatbot, ou seja, a capacidade do chatbot de classificar corretamente as intents e as stories.

Tarefas

  • Passo a passo como subir o jupiter-notebook das intents + stories

  • passo a passo executar o notebook

  • Explicação sobre o que significa a matriz de confusão das intents e stories

  • Explicação sobre como refinar os dados de treinamento (exemplos de intents e stories) de modo a melhorar a assertividade do seu chatbot

Critérios de Aceitação

  • Tutorial em formato Markdown na pasta docs/ do repositório

  • Qualquer desenvolvedor é capaz de avaliar a matriz de confusão da sua base de treinamento e saber refatorar os dados de treinamentos pertinentets (tanto intents quanto stories)

Implementar testes de integração

Atualmente existem várias plataformas integradas no rasa-ptbr-boilerplate mas nenhum teste automazido foi feito para verificar se tudo funciona corretamente relacionado à integração. Uma solução deve ser feita para este problema, possíveis soluções:

  • Adicionar na integração contínua uma vericação da integração
  • Adicionar script sh nas configurações de docker

Nova Intent: Negar_Despedir

Importância

Guando o usuário vai despedir em qualquer contexto significa que ele não quer mais continuar perguntando ou não tem mais interesse na conversa, mas existem várias formas de fazer isso, uma delas é negar após a utter_continuar_conversa. Se o bot pergunta se ele tem mais alguma dúvida e ele não tem, isso significa uma despedida, porém é uma negação diferente de uma negação comum. Para que o bot não confunda todos esses contextos é necessário criar uma utter_negar_despedir.

Tarefas

  • criar intent

  • criar story

  • testar

Critérios de aceitação

  • a intent melhora a eficiência do bot

  • as atualizações foram documentadas

  • os testes passaram

Melhoria de Intents

Tarefas

  • Mapear Intents que precisam ser melhoradas

Intents

  • Geral

  • cumprimentar

  • despedir

  • out_of_scope

  • negar_despedir

  • negar

  • diga_mais

  • tudo_bem

  • elogios

  • Aleatório

  • religiao

  • esporte

  • time

  • linguagens

  • genero

  • star_wars

  • piada

  • license

  • onde_voce_mora

  • como_estou

  • playlist

  • comida

  • cor

  • de_onde_voce_eh

  • relationship

  • me

  • filhos

  • filme

  • signo

  • triste

  • hobby

  • bff

  • historia

  • risada

  • Implementar novos exemplos de intents

  • Testar

Critérios de aceitação

  • Documentar quais atualizações foram feitas

  • As atualizações melhoram a eficiência do Bot

  • Os testes passaram

Kibana do ambiente de homologação não está coletando dados

Descrição

O Kibana não está conseguindo comunicar com o ElasticSearch e importar os dados armazenados nele. É necessário investigar o que está acontecendo.

Tarefas

  • Testar subir novamente o container para ver se resolve o problema de comunicação
  • Investigar o que pode ter acontecido - Domínio, container, SSL, etc.

Critérios de aceitação

  • É possível visualizar os dados reais no Kibana

Traduzir intents gerais

Existem intents com títulos em inglês usadas nos arquivos domain.yml e aleatorio.md nos arquivos de intents e stories. É necessário traduzi-los para português para manter o padrão do projeto.

Permitir criar um canal de conversa pela API

Criar um endpoint na API do Rasa para criar um canal de comunição (novo id de conversa).

Problema: hoje o rasa só permite acesso à uma conversa via API via ID ou \default. Para que diferentes bots possam "compartilhar" conteúdo, há a necessidade de criar um canal de conversa via api de forma segura

Erros no notebook das stories

Estou tendo alguns problemas ao rodar ./notebooks/stories/stories-analysis.ipynb .

Ao rodar a terceira chunck de código há essa mensagem:

Processed Story Blocks: 100%|██████████| 19/19 [00:00<00:00, 637.54it/s, # trackers=1]
Processed Story Blocks: 100%|██████████| 19/19 [00:00<00:00, 284.42it/s, # trackers=16]
Processed Story Blocks: 100%|██████████| 19/19 [00:00<00:00, 227.21it/s, # trackers=15]
Processed Story Blocks: 100%|██████████| 19/19 [00:00<00:00, 190.55it/s, # trackers=18]
---------------------------------------------------------------------------
Exception                                 Traceback (most recent call last)
<ipython-input-9-ec4aa28a3bd6> in <module>
     13     training_data,
     14     validation_split=0.1,
---> 15     epochs = 10
     16 )
     17 

/usr/local/lib/python3.6/site-packages/rasa_core/agent.py in train(self, training_trackers, **kwargs)
    499         if kwargs.get('epochs') or kwargs.get('max_history') or kwargs.get(
    500                 'batch_size'):
--> 501             raise Exception("Passing policy configuration parameters "
    502                             "to `agent.train(...)` is not supported "
    503                             "anymore. Specify parameters directly in the "

Exception: Passing policy configuration parameters to `agent.train(...)` is not supported anymore. Specify parameters directly in the policy configuration instead. More info https://rasa.com/docs/core/migrations.html

Ao remover o argumento das epochs, o problema é resolvido, mas são usadas 100 epochs para treinar o agente.

agent.train(
    training_data,
    validation_split=0.1
)

Na chunk seguinte há outro erro

!{python} -m rasa_core.evaluate -d models/dialogue -s ../../bot/data/stories -o matrix.pdf --failed 
failed_stories.md
/usr/local/lib/python3.6/site-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.25.2) or chardet (3.0.4) doesn't match a supported version!
  RequestsDependencyWarning)
usage: evaluate.py [-h] {default,compare} ...
evaluate.py: error: unrecognized arguments: -d models/dialogue --failed failed_stories.md

As versões usadas são:
rasa_nlu: 0.14.1 rasa_core: 0.13.1

Atualizar versão do Rasa

  • Atualizar a versão do Rasa

  • Atualizar arquitetura (dockers)

  • Testar o funcionamento correto das demais funcionalidades e integrações

  • Documentar nova arquitetura

  • Atualizar o README

  • Atualizar os tutoriais de uso (como fazer seu primeiro bot,)

  • Atualizar notebooks

Recepcionar o usuário automáticamente

@MatheusRich comentou comigo que acessou o Lappisudo e sentiu falta de uma interação inicial do bot na página. Acessando a página do lappis, o bot aparece lá no cantinho e a caixa de texto fica vazia, o usuário tem que "adivinhar" que a caixa de texto é um chatbot e que ele deve conversar por ali.

Procurei nas issues e não consegui encontrar algo relacionado a recepcionar usuário, mas o que ele procurava era uma recepção automática do bot "Oi, sou um chatbot, se quiser falar comigo é só digitar aqui". Similar a chatbots de sites de compras, isso é possível implementar? é problema? como fazer?

[Kibana] Atualizar o repositório com os dashboards existentes da Tais

Descrição

Foram desenvolvidos dashboards baseados em alguns estudos desenvolvidos no repositório da Tais. Assim, é necessário reaproveitar o trabalho realizado lá para o repositório do boilerplate.

Tarefas

  • Comitar no boilerplate os dashboards desenvolvidos na Tais
  • Documentar no README como subir com os dashboards

Critérios de aceitação

  • A partir do readme é possível subir uma instância do elastic/kibana com os dashboards existentes.

Dockerização total [Ploc Twist]

Com a evolução do boilerplate um problema foi identificado, toda a evolução gera um imenso retrabalho de configuração do bot.

Pessando nisso a solução proposta é dockerizar tudo. Simplesmente abstrair toda a pasta docker do projeto para um container e publica-lo no dockerhub. Dessa forma é necessário apenas uma pasta data e um docker-compose para ter um chatbot Rasa.

Tarefas:

  • Implementar "dockerzão"
  • Publicar no dockerhub "dockerzão"
  • Permitir o treinamento com o Coach em execução, não só durante a build docker
  • Identificar tudo que pode ser abstraído para um container
  • Transformar o coach em um FTP para fornecer os modelos do rasa
  • Fornecer versão das modelos através de checksum da pasta src_models
  • Adaptar o bot para obter as models através do Coach novo
  • Bot verificar por atualizações nas modelos baixadas comparando por checksum
  • Bot verificar se o coach está disponível
  • Configurar bot via variável de ambiente
  • Corrigir a obtenção dos modelos pelo container de notebooks
  • Publicar as imagens novas no dockerhub
  • Remover a implementação do bot do lappisudo e utilizar as imagens novas

Critérios de Aceitação:

  • "dockerzão" implementado
  • A garantia que a solução evita retrabalhos
  • É possível implementar um bot criando apenas o seu próprio coach

Translate the README to English

It is needed to create a translated README file and add it to the repository, so this boilerplate could reach more contributors.

Integração com Analytics

Descreva o bug
Verificar se o Analytics está funcionando na versão 1.2.2 do Rasa na branch devel.

Para reproduzir o bug
Passo-a-passo para reproduzir o comportamento do bug:

  1. Executar a stack de Analytics
  2. Verificar se os dados podem ser visualizados no Kibana

Comportamento esperado
Conseguir visualizar todos os dados no Kibana.

Adicionar configuração de virtualenv

É necessário ter configurações básicas de uso do boilerplate utilizando virtualenv além de docker images.

Scripts que ajudem na criação de uso de virtual env e documentações devem ser adicionadas.

Adicionar integração contínua

Descrição
Implementar integração contínua usando preferencialmente gitlab-ci deve ser implementado para verificar se todo o boilerplate está funcionando corretamente.

Tarefas:

  • Realizar mirror do repositório para o gitlab
  • Configurar arquivo .gitlab-ci.yml com os stages que foram utilizados na tais

Critérios de aceitação:

  • Pipeline ser executado corretamente no gitlab

Novas stories de Teste

Aumentar a cobertura de testes do bot

Tarefas

  • Criar novas histórias com fluxos de conversas nos testes

Fluxos

  • Geral
    cumprimentar
    negar_despedir
    despedir
    tudo_bem

  • Aleatório
    religiao
    time
    linguagens
    star_wars
    license
    playlist
    comida
    de_onde_voce_eh
    relationship
    bff
    risada

Critérios de aceitação

  • Todos os testes devem passar

Exemplo de Uso de Knowledge base

Fazer um exemplo de uso, no contexto br, do uso de knowledge base com o Rasa.
Utilizar o repositório do rasa https://github.com/RasaHQ/tutorial-knowledge-base como referência. Fazer um tutorial em pt explicando quando usar, por que usar, e como usar.

  • Criar o código base utilizando tutorial-knowledge-base

  • Documentar a solução

  • Tutorial como fazer tutorial-knowledge-base

Atualização do CI/CD

Descreva o bug
O CI atual não está funcionando, ele deve ser corrigido ou outra solução configurada.

[Kibana] Diferenciação de usuário

Descrição

Foi disponibilizado a feature de segurança que faz a diferenciação de usuário no plano Basic, após a atualização do Kibana para a versão 7.3.0. Com isso, não existe mais a necessidade de mantermos os serviços do dados.lappis.rocks e do analytics.lappis.rocks. São serviços que criamos para fazer a diferenciação de usuários.

É preciso estudar como que faz para configurar os usuários na nova versão.

Tarefas

  • Habilitar o security no elastic
  • Criar usuário administrador com total permissão
  • Criar usuário apenas para visualização dos dashboards, sem direito a editar

Critérios de aceitação

  • É possível acessar como administrador e editar os dashboards/visualizações
  • É possível acessar o kibana como usuário comum somente para visualizar, sem permissão para editar os dashboards/visualizações

[Fallbeck] Remover hardcodes do custom fallback

Descrição

No custom fallback foi desenvolvida uma condição que se as confianças das respostas dos sub-bots forem menor do que o core_threshold o bot principal responde com o seu próprio fallback. Porém é necessário passar esse valor via variável de ambiente, ainda encontra-se hardcoded.

Além disso, é necessário alterar a lógica para retornar ao fallback do próprio bot. Neste momento ele retonar se for menor do que o core_threshold como explicado acima. Contudo, antes de entrar na condição para saber se é menor do que o threshold, ele faz uma soma da confiança da intent com a confiança da utter, com isso é bem provável que a soma seja maior do que o core_threshold, mesmo se a confiança da intent for menor do que o esperado.

Tarefas

  • O valor do core_threshold e do nlu_threshold deve ser passado via variável de ambiente para a config do bot
  • Substituir o número mágico do core_threshold para a variável de ambiente
  • Eliminar da lista de resposta qualquer uma que não tenha a confiança mínima da intent (core_threshold)

Critérios de aceitação

  • É utilizado variável de ambiente ao invés de números mágicos
  • Intents com confiança menor do que o core_threshold não são aceitas

Consertar README e pontos do Boilerplate

Descrição

É necessário subir toda a stack do boilerplate para validar se toda a documentação do README está correto e todos os comandos estão funcionando corretamente. Cada erro encontrado é necessário documentar e consertar.

Tarefas

  • Executar todos os comandos do README para ver se estão funcionando corretamente
  • Relatar nesta issue os erros encontrados
  • Consertar os erros encontrados e relatados

Critérios de aceitação

  • É possível subir toda a stack do boilerplate a partir do README sem nenhum problema

Problema na utilização do TensorFlow

Após executar o comando sudo make first-run o seguinte erro acontece:

bot_1_d64506d9a1d9 | make[1]: Leaving directory '/bot'
bot_1_d64506d9a1d9 | python3 run-rocketchat.py
bot_1_d64506d9a1d9 | 2019-07-02 15:16:31.670672: F tensorflow/core/platform/cpu_feature_guard.cc:37] The TensorFlow library was compiled to use AVX instructions, but these aren't available on your machine.
bot_1_d64506d9a1d9 | make: * [run-rocketchat] Aborted (core dumped)
bot_1_d64506d9a1d9 | Makefile:2: recipe for target 'run-rocketchat' failed

Um comentário com problema semelhante aponta que o problema pode estar no TensorFlow aqui, e nesse link diz que as instruções AVX podem não funcionar em CPUs antigas.

Melhoria de Stories

Tarefas

  • Mapear Stories que precisam ser melhoradas

  • Stories
    continuar_conversa
    cumprimentar (novos exemplos de stories com o cumprimentar)
    negar_despedir

  • Melhorar Stories

  • Testar

Critérios de Aceitação

  • Documentar quais atualizações foram feitas

  • As atualizações melhoram a eficiência do Bot

  • Os testes passaram

Erro ao rodar make train-online

Subi o bot e fui capaz de treiná-lo e usá-lo.

Ao seguir o passo-a-passo sugerido no readme.md, contudo, este comando falhou ao rodar:

sudo docker-compose run --rm bot make train-online

Starting chatbot_actions_1 ... done
python3 -m rasa_core.train -d domain.yml -s data/stories -o models/dialogue --epochs 15 --online --nlu models/nlu/current/
usage: train.py [-h] {default,compare,interactive} ...
train.py: error: unrecognized arguments: --epochs 15 --online --nlu models/nlu/current/
Makefile:19: recipe for target 'train-online' failed
make: *** [train-online] Error 2

Vale notar que não é uma falha que impede o uso do bot/projeto.

Problema na Integração coma Rocket.Chat

Descreva o bug
A integração com a Rocket.Chat não está funcionando depois da atualização da versão do Rasa para 1.2.2. Esse problema está acontecendo pois o script run-rocketchat.py foi removido e a utilização padrão do rasa, usando credentials foi feita, mas o Rasa não possui a integração correta com a Rocket.Chat. Provavelmente um PR corrigindo o Rasa seja necessário.

Para reproduzir o bug
Passo-a-passo para reproduzir o comportamento do bug:

  1. Descomente a configuração da Rocket.Chat no `credentials.py
  2. Execute o container bot-rocketchat
  3. Bot não responde na rocket.chat

Comportamento esperado
O bot deveria aparecer online e responder na Rocket.chat.

Elaborar template de botão para o telegram

O rasa permite o envio de botões para muitos conectores como especificado nesse link da documentação. Seria interessante a criação de um template básico de botões para um dos conectores com esse suporte, no caso o telegram. A implementação pode ser feita assim como explicado aqui.

Critérios de aceitação:

  • Botão enviar mensagem correta de acordo com a opção selecionada pelo usuário
  • Botão ser exibido corretamente

Tarefas:

  • Criação de utters e stories necessárias para funcionamento do botão
  • Criação de utters e stories para redirecionamento após seleção do botão pelo usuário

Documentar Ecossistemas de SL

Descrição
Coletar métricas dos repositórios do Ecossistema de Software Livre (TED MinC)

Tarefas

  • Selecionar métricas a serem coletadas
  • Criar notebook geral
  • Criar notebook Tais
  • Criar notebook SalicML
  • Criar notebook Promova Cultura
  • Criar notebook BotFlow
  • Mapear se há mais repositórios a possuirem notebooks
  • Verificar se contribuições a outros softwares livres entram nas métricas (contribuições no Rasa, RocketChat...)

Critérios de Aceitação

  • Métricas validadas com algum sênior
  • Notebooks criados
  • Notebooks validados por algum sênior

Estudar e documentar migração para o kubernetes

Descrição

A infra do lappis está no kubernetes, deve-se entender como funciona a mudança do lappisudo para o kubernets, e documenta-la

PS: Deve-se usar a branch ploc-validation

Aparentement, o davi está fazendo a issue de migrar o lappisudo, checar com ele.

Tarefas

  • Migrar lappisudo para pod do kubernetes

Critérios de aceitação

  • Lappisudo deve estar migrado para o kubernetes
  • Deve existir uma docmentação passo-a-passo genérica afim de se auxiliar a migração do boilerplate

Automatizar a importação dos dashboards

Descrição

A importação é feita de modo manual, precisando acessa a página de saved_objects no Kibana e fazendo o upload manual do arquivo responsável por armazenar os ids e estrutura dos dashboards, visualizações e índices.

É necessário "desburocratizar" a importação dos dashboards.

Tarefas

  • Analisar a API do Kibana referente à importação e exportação de dashboards
  • Implementar um script para automatizar a importação

Critérios de aceitação

  • Os dashboards se encontram disponíveis após subir a stack do analytics

Conexão com o telegram por meio de arquivo python

Atualmente o boilerplate realiza a conexão com o telegram por meio desse comando no Makefile:

run-telegram:
	python -m rasa_core.run -d /models/dialogue -u /models/nlu/current --port 5001 --credentials credentials.yml --endpoints endpoints.yml

Isso poderia ser realizado por meio do telegram input em um arquivo python (assim como a conexão do rocketchat é feita por meio do arquivo em bot/run-rocketchat.py) conforme mostrado nesse link da documentação do rasa e na imagem a seguir:

image

Tutorial - Como calibrar os hyperparâmetros do seu modelo - Rasa Core

Criar um tutorial que guie na escolha dos hyperparâmetros dos modelos do chatbot.

Tarefas

  • Como funciona a Policy de um chatbot (as 3 principais camadas: memoization, Keras/Embedding, FallbackPolicy)

  • Passo a passo de como escolher os algoritmos, quais hyperparâmetros, e onde atualizá-los (Keras Policy e Embedding Policy)

  • O que significa os hyperparâmetros dos modelos (Keras,Embedding) - falar tb sobre augmentation

  • Passo a passo de como calibrar e validar calibração dos hyperparâmetors

Critérios de Aceitação

  • Tutorial em formato Markdown na pasta docs/ do repositório

  • Qualquer desenvolvedor é capaz de calibrar os hyperparâmetros dos seus modelos

Criar módulo de integração com ElasticSearch

A integração do boilerplate com Elastic search é feita aqui, no script run-rocketchat.py. Porém caso queira coletar os dados de outro mensageiro é necessário refazer essa configuração em outro script.

O objetivo é fazer com que a integração com o ElasticSearch seja feita de forma direta, e não apenas na integração com a Rocket.Chat.

Erro gramatical README.md

No README, no tópico de Visualização, está escrito com "Z" ao invés de "S". Segue forma correta:

Visualização

sudo docker-compose up -d kibana

Você pode acessar o kibana no locahost:5601

Melhorar README

Para engajar a comunidade e melhorar a descrição do projeto, a evolução do README deve ser feita. Um bom exemplo é o README da tais.

[Kibana] Elaborar um tutorial para criação de novas visualizações

Descrição

Já existe um webinar sobre como criar visualizações e dashboards no canal do youtube, porém é necessário fazer um tutorial escrito para deixar melhor documento e não tornar obrigatório a visualização do vídeo.

Tarefas

  • Elaborar uma documentação de como criar visualizações e dashboards variados

Critérios de aceitação

  • É possível através do tutorial como criar um dashboard e visualizações no Kibana.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.