Skip to content
Tais é uma assistente virtual para responder dúvidas dos usuários relacionadas à Lei Rouanet.
Branch: master
Clone or download
RochaCarla Merge pull request #461 from iurisevero/master
Atualizações de acordo com o recomendado-- conteudo do rasa referente a tais
Latest commit 96a87f8 Apr 25, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.docs Starting pages Mar 27, 2019
.github Adds Contribuiting doc and issues templates Apr 1, 2019
analytics
bot Merge remote-tracking branch 'origin/master' into decouple_bot Apr 24, 2019
coach Merge remote-tracking branch 'origin/master' into decouple_bot Apr 24, 2019
docker
docs
elasticsearch Adds visualization and dashboards backup Apr 22, 2019
images Finish Readme structure Mar 29, 2019
kibana-tais Update settings.py Apr 22, 2019
kibana-web Fix Flake8 Apr 22, 2019
notebooks
scripts Simplify build and deploy stages Apr 21, 2019
web Merge branch 'master' into storie Apr 22, 2019
.editorconfig
.gitignore Create Coach Dockerfile Apr 15, 2019
.gitlab-ci.yml Merge remote-tracking branch 'origin/master' into decouple_bot Apr 24, 2019
CHANGELOG.rst Finish Readme structure Mar 29, 2019
LICENSE Organizing project structure, and env config and docs May 25, 2018
Makefile
README.md Merge branch 'master' into decouple_bot Apr 22, 2019
dev.requirements.txt Add test stage to 'gitlab-cy.yml' and 'dev.requirements' file Apr 21, 2019
docker-compose.yml Remove rocketchat depends_on in bot Apr 23, 2019

README.md

Tais - Assistente Virtual da Cultura

A Taís é uma assistente virtual desenvolvida pelo LAPPIS - Laboratório Avançado de Produção, Pesquisa e Inovação em Software (FGA/UnB), em parceria com o Ministério da Cultura. O nome é uma sigla para Tecnologia de Aprendizado Interativo do Salic.

Esse repositório contém o código do framework do chatbot Tais, composto por:

  • Bot: Inteligencia artificial do próprio bot, feito em Rasa.
  • Analytics: Sistema de análise das conversas dos usuários com o chatbot, feito com o Kibana.
  • Notebooks: Notebooks Jupyter para a análise da estrutura do chatbot.
  • Web: Página com verificação de usuário para Beta Testers.


O que é a Tais?

A Tais é um chatbot desenvolvido pelo LAPPIS junto com a Secretaria Especial da Cultura para o projeto da Lei Rouanet. A Lei Rouanet é o principal mecanismo de fomento a cultura do Brasil, e a Tais tem o objetivo de ajudar os proponentes nos momentos de dúvida. Para saber mais sobre o que é a Lei Rouanet, SALIC e como funciona todo o processo acesse o Portal da Lei Rouanet lá Tais está em produção e também pode explicar esses conceitos.

Entenda a Arquitetura

É utilizado na Tais diversas tecnologias que interagem entre si para obter um melhor resultado. Veja a arquitetura implementada:

O usuário interage com a Tais via RocketChat, que manda as mensagens para o Rasa NLU, que identifica a intent, e responde pelo Rasa Core, de acordo com as stories e actions. Os notebooks avaliam o funcionamento de acordo com o formato das intents e stories. O elasticsearch coleta os dados da conversa e armazena para a análise feita pelo kibana, que gera gráficos para avaliação das conversas dos usuários e da Tais.

Como Rodar a TAIS

Subindo o chatbot

RocketChat

Para testar a Tais utilizando da plataforma do RocketChat, siga os seguintes comandos para subir os containers em seu computador:

sudo docker-compose up -d rocketchat
# aguarde o container subir
sudo docker-compose up bot

Após esses comandos o RocketChat deve estar disponível na porta 3000 do seu computador. Entre em http://localhost:3000 para acessar. Será pedido que faça login. Por padrão é gerado um usuário admin: username: admin senha: admin

Instalação

Para colocar a Tais em um site você precisa inserir o seguinte código em Javascript na sua página:

<!-- Start of Rocket.Chat Livechat Script -->
<script type="text/javascript">
(function(w, d, s, u) {

    // !!! Mudar para o seu host AQUI !!!
    host = 'http://localhost:3000';
    // !!! ^^^^^^^^^^^^^^^^^^^^^^^^^^ !!!

    w.RocketChat = function(c) { w.RocketChat._.push(c) }; w.RocketChat._ = []; w.RocketChat.url = u;
    var h = d.getElementsByTagName(s)[0], j = d.createElement(s);
    j.async = true; j.src = host + '/packages/rocketchat_livechat/assets/rocketchat-livechat.min.js?_=201702160944';
    h.parentNode.insertBefore(j, h);
})(window, document, 'script', host + '/livechat');
</script>
<!-- End of Rocket.Chat Livechat Script -->

Atenção: Você precisa alterar a variável host dentro do código acima para a url do site onde estará o seu RocketChat.

Console

Para testar somente o diálogo com o bot, não é necessário rodar o RocketChat. Caso queira apenas rodar a Tais pelo seu terminal, rode os seguintes comandos:

sudo docker-compose run --rm bot make run-console

Essa forma de rodar trás também os logs e previsão de intents do Rasa.

Treinamento

Caso precise atualizar os dialogos com o bot após modificações nas intents e stories (coach/data/intents e stories), utilize o seguinte comando na pasta raiz do projeto para treinar o bot novamente:

make train

Caso queira atualizar o treinamento padrão da aplicação, será necessário atualizar a versão da imagem Coach no dockerhub do lappis:

make train
sudo docker push lappis/coach:latest

Site do Beta

Nesse repositório temos também o site para beta testers da Tais. Ele se conecta com a Tais via RocketChat, então para ela estar hospedada é necessário subir o RocketChat.

Setup

Antes de rodá-lo é necessário fazer algumas configurações e criar um usuário. Para isso rode os comandos abaixo e crie o seu usuário.

sudo docker-compose run --rm web python manage.py migrate
sudo docker-compose run --rm web python manage.py createsuperuser

Execução

Para rodar o site em localhost suba o container com esse comando:

sudo docker-compose up -d web

Você pode acessar o site por padrão na url http://localhost:8000. Será necessário fazer o login, com o usuário criado, esse usuário é um super usuário, então ele tem acesso a parte admin, que poderá ser acessada em http://localhost:8000/admin/ e poderá criar novos usuários.

Dashboards Visualização

Dashboards que disponibilizamos para a Secretaria Especial da Cultura.

Setup

sudo docker-compose run --rm kibana-web python manage.py migrate
sudo docker-compose run --rm kibana-web python manage.py createsuperuser

Execução

sudo docker-compose up -d kibana-web

Você pode acessar o site por padrão na url localhost:8080

Analytics

Para a análise dos dados das conversas com o usuário, utilize o kibana, e veja como os usuários estão interagindo com o bot, os principais assuntos, média de usuários e outras informações da análise de dados.

Setup

Para subir o ambiente do ElasticSearch rode os seguintes comandos:

sudo docker-compose up -d elasticsearch
sudo docker-compose run --rm -v $PWD/analytics:/analytics bot python /analytics/setup_elastic.py

Lembre-se de configurar as seguintes variáveis de ambiente no docker-compose.

ENVIRONMENT_NAME=localhost
BOT_VERSION=last-commit-hash

Lembre-se também de configurar como True a seguinte variável do serviço bot no docker-compose.

ENABLE_ANALYTICS=False

Para habilitar o backup rode o seguinte comando:

sudo docker exec -it tais_elasticsearch_1 curl -XPUT -H "Content-Type: application/json;charset=UTF-8" 'http://localhost:9200/_snapshot/backup' -d '{
  "type": "fs",
  "settings": {
     "location": "/elasticseacrh/backup",
     "compress": true
  }
}'

# A resposta esperada é: {"acknowledged": true}

Visualização

Para visualização do site rode o comando:

sudo docker-compose up -d kibana

Para acesso do site é necessário fazer o login. Por padrão o usuário criado é admin e a senha é admin

Você pode acessar o kibana no http://locahost:5601

Para visualização dos Dashboards básico

Visualizações de métricas importantes para o desenvolvimento de chatbots, estão disponibilizados para este contexto. Para usar estes templates execute os seguintes passos:

  • Suba o container do Kibana e acesse http://locahost:5601;
  • Na interface, acesse Management e clique em Saved Objects;
  • Clique em Import;
  • Utilize o arquivo export.json na pasta elasticsearch/ do projeto.

Dashboards Visualização do Kibana

Dashboards mais básicos do Analytics, sem permissão de admin, que disponibilizamos para a Secretaria Especial da Cultura.

Setup

Rode as configurações:

sudo docker-compose run --rm kibana-web python manage.py migrate
sudo docker-compose run --rm kibana-web python manage.py createsuperuser

Execução

Para visualização do site, rode o comando:

sudo docker-compose up -d kibana-web

Você pode acessar o site por padrão na url http://localhost:8080

Notebooks - Análise de dados

Para análise de como estão as intents e stories construidas, se está havendo alguma confusão por intents similares ou outros problemas, utilize os notebooks para gerar os gráficos de matriz de confusão e diagrama da estrutura das stories.

Setup

Levante o container notebooks

docker-compose up -d notebooks

Acesse o notebook em http://localhost:8888. Lá entre na pasta notebooks e vá para a pasta intents ou stories, dependendo do que quer analisar, e abra o arquivo .ipynb.

QuickStart

A Tais, no ambiente de produção, consiste no Rasa, RocketChat, página para Beta Testers e o Kibana. Para levantar todo esse ambiente, use os seguintes comandos:

sudo docker-compose up -d rocketchat

sudo docker-compose run --rm web python manage.py migrate
sudo docker-compose run --rm web python manage.py createsuperuser
sudo docker-compose up -d web

sudo docker-compose up -d kibana
sudo docker-compose run --rm -v $PWD/analytics:/analytics bot python /analytics/setup_elastic.py

# aguarde os containers serem levantados
sudo docker-compose up -d bot

Documentação

A documentação feita está no github pages, veja no link: lappis-unb.github.io/tais A documentação se encontra na pasta docs deste repositório. É feita com Jekyll para o github pages. Para rodar a página em seu computador basta rodar o comando:

jekyll serve

Ou rode com docker (atualmente nem sempre funciona o mapeamento de porta - issue #441):

docker-compose up

Acesse a pagina em http://localhost:4000.

Passos necessários para gerar uma nova release

A criação de uma nova versão Release é bem simples. Os seguintes passos são necessários para lançar uma nova versão

  • edite o CHANGELOG.rst, crie uma nova seção para a release e crie uma nova master loggins section
  • Edite o guia de migração para dar assistência para usuários atualizarem para a nova versão
  • Commite todas as mudanças acima e gere uma tag para a nova versão usando
git tag -f 0.7.0 -m "Some helpful line describing the release"
git push origin 0.7.0

Tecnologias do Projeto:

  • Rasa - Inteligência Artificial do Bot
  • RocketChat - Mensageiro de comunicação do Bot
  • Django - Site para beta testers
  • Jupyter Notebook - Notebooks para análise da estrutura de intents e stories
  • Elasticsearch - Para coleta de dados para análise
  • Kibana - Análise dos dados coletados a partir das conversas
  • Docker - Os ambientes são todos dockerizados

Como Contribuir

Ficaremos muito felizes de receber e incorporar suas contribuições. Tem algumas informações adicionais sobre o estilo do código e a documentação.

Em geral o processo é bem simples:

  • Crie uma issue descrevendo uma feature que você queira trabalhar (ou olhe as issues com o label help-wanted e good-first-issue)
  • Escreva seu código, testes e documentação
  • Abra um pull request descrevendo as suas alterações propostas
  • Seu pull request será revisado por um dos mantenedores, que pode levantar questões para você sobre eventuais mudanças necessárias ou questões.

Leia o Guia de Contribuição para melhores informações.

Como conseguir ajuda

Parte da documentação técnica do framework da Tais está disponível na wiki do repositório. Caso não encontre sua resposta, abra uma issue com a tag duvida que tentaremos responder o mais rápido possível.

Em caso de dúvidas em relação ao Rasa, veja o grupo Telegram Rasa Stack Brasil, estamos lá também para ajudar.

Veja mais informações de contato em nosso site: https://lappis.rocks

Licença

Todo o framework da Tais é desenvolvido sob a licença GPL3

Veja a lista de dependências de licenças aqui

You can’t perform that action at this time.