Skip to content

Commit

Permalink
Merge pull request #82 from lappis-unb/devel
Browse files Browse the repository at this point in the history
Atualização do Rasa para 1.2.2
  • Loading branch information
arthurTemporim authored Sep 19, 2019
2 parents 7ad502f + 4222720 commit 891c420
Show file tree
Hide file tree
Showing 16 changed files with 197 additions and 236 deletions.
10 changes: 5 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
bot/models
rasa_core.log
errors.json
models/dialogue/
models/nlu/current/

### Rasa evaluation ###
.ipynb_checkpoints/
Expand Down Expand Up @@ -35,10 +37,11 @@ notebooks/stories/matrix.pdf
/data
uploads


### database
### database ###
web/postegres-data

### PyCharm ###
.idea/

# Created by https://www.gitignore.io/api/vim,linux,macos,python

Expand Down Expand Up @@ -198,6 +201,3 @@ tags

# End of https://www.gitignore.io/api/vim,linux,macos,python

models/dialogue/

models/nlu/current/
4 changes: 4 additions & 0 deletions .gitlab-ci.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
image: python:3.6-slim

before_script:
- apt-get update --yes
- apt-get install gcc

variables:
BOT_IMAGE: $DOCKERHUB_USER/bot
COACH_IMAGE: $DOCKERHUB_USER/coach
Expand Down
13 changes: 7 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,16 @@ build-bot:
./docker/build-base.sh
make train

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

train:
docker build . -f docker/coach.Dockerfile -t lappis/coach:boilerplate
docker-compose build bot

run-telegram:
docker-compose up telegram_bot

run-console:
docker-compose run bot make run-console

test-dialogue:
docker-compose run --rm bot make e2e
150 changes: 38 additions & 112 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,33 @@
<a href="https://www.gnu.org/licenses/gpl-3.0.pt-br.html"><img src="https://img.shields.io/badge/licence-GPL3-green.svg"/></a>
<a href="https://codeclimate.com/github/lappis-unb/rasa-ptbr-boilerplate/maintainability"><img src="https://api.codeclimate.com/v1/badges/3fe22bf52000e147c6df/maintainability"/></a>

## Tutorial para configurar todo o projeto

```sh
```

```sh
sudo docker-compose up -d rocketchat

sudo docker-compose up -d rabbitmq
sudo docker-compose up -d rabbitmq-consumer

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

sudo docker-compose up -d bot
```

## Introdução

### For English version, see [README-en](docs/README-en.md)

Um projeto feito em Rasa com configurações necessárias para a construção de um projeto grande de chatbot.

Este projeto teve como base a [Tais](http://github.com/lappis-unb/tais).
Este projeto teve como base o projeto [Tais](http://github.com/lappis-unb/tais).

# Entenda a Arquitetura
### Entenda a Arquitetura

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

Expand All @@ -23,120 +43,45 @@ Os notebooks avaliam o funcionamento de acordo com o formato das *intents* e *st
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 do boilerplate.

## Bot

### Bot

Este script foi configurado para construir as imagens genéricas necessárias para execução deste ambiente.
Caso seu projeto utilize este boilerplate e vá realizar uma integração contínua ou similar, é interessante
criar um repositório para as imagens e substitua os nomes das imagens "lappis/bot", "lappis/coach" e "lappis/botrequirements" pelas
suas respectivas novas imagens, por exemplo "<organização>/bot" em repositório público.
criar um repositório para as imagens e substitua os nomes das imagens "lappis/bot", e "lappis/botrequirements" pelas suas respectivas novas imagens, por exemplo "<organização>/bot" em repositório público.

### RocketChat
Para testar o assistente virtual utilizando da plataforma do RocketChat, siga os seguintes comandos para subir os containers em seu computador:

### Treinamento

**Atenção**: o comando de treinamento é usado para criar os modelos necessários na conversação do bot para treinar o seu chatbot execute o comando:
```sh
sudo docker-compose up -d rocketchat

# Caso não vá subir a stack do Analytics
# aguarde o container do rocketchat subir
sudo docker-compose up -d bot
```

Caso queira subir toda a stack e vá utilizar do analytics é necessário substituir a seguinte variável de ambiente no `docker/bot-rocketchat.env` de **False** para **True**.
```
# Analytics config
ENABLE_ANALYTICS=True
# E logo após trocar, subir o container do bot
sudo docker-compose up -d 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. Nas próximas telas apenas clique na opção `Continue` e `Go to your workspace`.

Para configurar o bot no rocketchat e conseguir conversar com ele pelo próprio rocket, acesse o [link](http://github.com/lappis-unb/rasa-ptbr-boilerplate/tree/master/docs/add_bot_rocketchat.md).


Opcionalmente, é possível fazer uma configuração para que o assistente virtual inicie a conversa, para isso você deve criar um `trigger`.
Para criar um `trigger` entre no rocketchat como `admin`, e vá no painel do Livechat na
seção de Triggers, clique em `New Trigger`. Preencha o Trigger da seguinte forma:


```yaml
Enabled: Yes
Name: Start Talk
Description: Start Talk
Condition: Visitor time on site
Value: 3
Action: Send Message
Value: Impersonate next agent from queue
Value: Olá!
sudo make train
```

### Console

#### Instalação
Para executar o bot em um site você precisa inserir o seguinte Javascript na sua página
```js
<!-- Start of Rocket.Chat Livechat Script -->
<script type="text/javascript">
// !!! Mudar para o seu host AQUI !!!
host = 'http://localhost:3000';
// !!! ^^^^^^^^^^^^^^^^^^^^^^^^^^ !!!
(function(w, d, s, u) {
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 -->
```sh
sudo make run-console
```

**Atenção**: Você precisa alterar a variavel `host` dentro do código acima para a url do site onde estará o seu Rocket.Chat.

### Telegram

Após realizar o [tutorial](/docs/setup_telegram.md) de exportação de todas variávies de ambiente necessárias, é possível realizar a execução do bot no telegram corretamente.

<strong><em>Antes de seguir adiante. Importante:</strong></em> As variáveis de ambiente são necessárias para o correto funcionamento do bot, por isso não esqueça de exportá-las.
**Antes de seguir adiante. Importante:** As variáveis de ambiente são necessárias para o correto funcionamento do bot, por isso não esqueça de exportá-las.

Se ainda não tiver treinado seu bot execute antes:

```sh
make train
```
**Atenção**: o comando "make train" executa um container docker, caso precise de sudo em seu computador
para execução docker, utilize "sudo make train".


Depois execute o bot no telegram:

```sh
sudo docker-compose up bot_telegram
```

### Console

```sh
make train
sudo docker-compose run --rm bot make run-console
```

### Train Online

```
make train
sudo docker-compose run --rm coach make train-online
```

## Analytics
### Analytics

Para a visualização dos dados da interação entre o usuário e o chatbot nós utilizamos uma parte da Stack do Elastic, composta pelo ElasticSearch e o Kibana. Com isso, utilizamos um broker para fazer a gerência de mensagens. Então conseguimos adicionar mensagens ao ElasticSearch independente do tipo de mensageiro que estamos utilizando.

#### Setup RabbitMQ
### Configuração do RabbitMQ

Em primeiro lugar para fazer o setup do analytics é necessário subir o RabiitMQ e suas configurações.

Expand All @@ -163,9 +108,7 @@ RABBITMQ_DEFAULT_PASS=admin

Sendo que as configurações de `RABBITMQ_DEFAULT_USER` e `RABBITMQ_DEFAULT_PASS` devem ser as mesmas definidas no serviço do `rabbitmq`.



### Execução
#### Integração com Rasa

Existem duas formas para executar a Tais com o *broker*. A primeira delas é via linha de comando.
Para utilizar esta forma é preciso definir Dentro do arquivo `endpoints.yml` as configurações do broker:
Expand Down Expand Up @@ -201,7 +144,7 @@ Ao final é necessário buildar novamente o container do bot.
sudo docker-compose up --build -d bot
```

### Setup ElasticSearch
### Configuração ElasticSearch

O ElasticSearch é o serviço responsável por armazenar os dados provenientes da interação entre o usuário e o chatbot.

Expand All @@ -221,12 +164,13 @@ ENVIRONMENT_NAME=localhost
BOT_VERSION=last-commit-hash
```

### Setup Kibana (Visualização)
#### Setup Kibana (Visualização)

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.

O Kibana nos auxilia com uma interface para criação de visualização para os dados armazenados nos índices do ElasticSearch.

```
```sh
sudo docker-compose up -d kibana
```

Expand Down Expand Up @@ -282,24 +226,6 @@ docker-compose up -d notebooks

Acesse o notebook em `localhost:8888`



## Tutorial para levantar toda a stack

```sh
sudo docker-compose up -d rocketchat

sudo docker-compose up -d rabbitmq
sudo docker-compose up -d rabbitmq-consumer

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

sudo docker-compose up -d bot
```


# Como conseguir ajuda

Parte da documentação técnica do framework da Tais está disponível na
Expand Down
41 changes: 19 additions & 22 deletions bot/Makefile
Original file line number Diff line number Diff line change
@@ -1,39 +1,36 @@
run-rocketchat:
make config-bot
python3 run-rocketchat.py
python3 run_rocketchat.py

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

config-rocket:
python /scripts/bot_config.py

run-console:
python3 -m rasa_core.run -d /models/dialogue -u /models/nlu/current --debug
rasa shell -m /models/dialogue -vv

run-console-broker:
python3 -m rasa_core.run -d /models/dialogue -u /models/nlu/current --debug --endpoints endpoints.yml
rasa shell -m /models/dialogue -vv --endpoints endpoints.yml

run-api:
python3 -m rasa_core.run -d /models/dialogue -u /models/nlu/current \
--endpoints endpoints.yml --debug --enable_api

evaluate:
python3 -m rasa_core.evaluate -d /models/dialogue -s data/core/
rasa run -m /models/dialogue -vv --endpoints endpoints.yml --enable_api

run-actions:
python -m rasa_core_sdk.endpoint --actions actions
rasa run actions --actions actions

# Force Makefile to execute e2e command every time
.PHONY: all e2e clean
test-dialogue:
make e2e

e2e:
python3 -m rasa_core.evaluate default --core /models/dialogue --nlu /models/nlu/current --stories e2e/e2e_stories.md --e2e

test-stories:
python3 test_stories.py --stories e2e/e2e_stories.md --e2e

config-bot:
python /scripts/bot_config.py -r ${ROCKETCHAT_URL} -an ${ROCKETCHAT_ADMIN_USERNAME} -ap ${ROCKETCHAT_ADMIN_PASSWORD} -bu ${ROCKETCHAT_BOT_USERNAME} -bp ${ROCKETCHAT_BOT_PASSWORD}
#.PHONY: all e2e clean
#test-dialogue:
# make e2e
#
#e2e:
# python3 -m rasa_core.evaluate default --core /models/dialogue --nlu /models/nlu/current --stories e2e/e2e_stories.md --e2e
#
#test-stories:
# python3 test_stories.py --stories e2e/e2e_stories.md --e2e
#
#config-bot:
# python /scripts/bot_config.py -r ${ROCKETCHAT_URL} -an ${ROCKETCHAT_ADMIN_USERNAME} -ap ${ROCKETCHAT_ADMIN_PASSWORD} -bu ${ROCKETCHAT_BOT_USERNAME} -bp ${ROCKETCHAT_BOT_PASSWORD}
2 changes: 1 addition & 1 deletion bot/connector.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

from flask import Blueprint, request, jsonify, make_response

from rasa_core.channels.channel import UserMessage, OutputChannel, InputChannel
from rasa.core.channels.channel import UserMessage, OutputChannel, InputChannel

logger = logging.getLogger(__name__)

Expand Down
14 changes: 10 additions & 4 deletions bot/credentials.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
telegram:
access_token: ${TELEGRAM_TOKEN}
verify: ${TELEGRAM_BOT_USERNAME}
webhook_url: ${TELEGRAM_WEBHOOK}
#telegram:
# access_token: ${TELEGRAM_TOKEN}
# verify: ${TELEGRAM_BOT_USERNAME}
# webhook_url: ${TELEGRAM_WEBHOOK}

#rocketchat:
# user: ${ROCKETCHAT_BOT_USERNAME}
# password: ${ROCKETCHAT_BOT_PASSWORD}
# server_url: ${ROCKETCHAT_URL}

File renamed without changes.
Loading

0 comments on commit 891c420

Please sign in to comment.