-
Notifications
You must be signed in to change notification settings - Fork 42
Uso de slots e entidades
Os Slots funcionam como a memória do Bot. As informações dos slots serão armazenadas na forma de pares de chaves-valores.
Os Slots podem ou não influencia na tomada de decisões do bot, de acordo com o seu tipo.
O tipo text pode ser utilizado para coleta de informações diretas do usuário, por exemplo para pegar o nome de uma cidade, de um local, o CPF do usuário, etc. Para este tipo, durante o fluxo de conversa, só é possível saber quando o slot foi preenchido ou não.
Os tipos categorical ou bool devem ser usado quando o valor em questão é importante para tomada de decisões.
Em casos onde se quer apenas armazenar dados mas não se espera que o slot afete o fluxo de conversação, deve-se utilizar o tipo unfeaturized.
Para utilizar um slot é preciso incluí-lo no arquivo domain.yml
, dentro de uma tag de slots:
slots:
pronac:
type: unfeaturized
Dentro das intents deve-se definir exemplos de entities, que terão seu valores preenchidos de acordo com o slot correspondente:
## intent:pronac
- meu pronac é [1234567](pronac)
- [98765](pronac)
- [098778](pronac)
- [97656](pronac)
- [1234567](pronac)
- o número do pronac é [6556789](pronac)
- o pronac do meu projeto é [093596](pronac)
- meu numero de pronac é [9104835](pronac)
- o pronac é [92749502](pronac)
- me fale sobre o projeto do pronac [0927493](pronac)
- quero saber do projeto [0439582](pronac)
- me fale sobre o projeto do pronac [029385](pronac)
Quando o slot é preeenchido, seu valor pode ser acessado dentro das Actions através do tracker. Ex:
class ActionInformacaoProjeto(Action):
def name(self):
return "informacao_projeto"
def run(self, dispatcher, tracker, domain):
pronac = tracker.current_slot_values()['pronac']
from rasa_core_sdk.actions import Action
from rasa_core_sdk.events import SlotSet
import requests
class ActionTipoDeProjeto(Action):
def name(self):
return "tipo_de_projeto"
// Descobrir tipo de porjeto
def run(self, dispatcher, tracker, domain):
url = "http://projetos.com"
data = requests.get(url).json
return [SlotSet("tipo_de_projeto", data["tipo_de_projeto"])]
Uma vez que os valores possíveis para um slot foram definidos no domain
, deve-se escrever exemplos de caminhos a serem seguidos de acordo com o valor captado. Ex:
# story_01
* cumprimentar
- action_tipo_de_projeto
- slot{"tipo_de_projeto" : "tipo_1"}
- utter_projeto_tipo_1
# story_02
* cumprimentar
- action_tipo_de_projeto
- slot{"tipo_de_projeto" : "tipo_2"}
- utter_projeto_tipo_2
- Conteúdo atual
- Novos tópicos para inserir no futuro
- Intents classificados errado
- Sinônimos de tópicos existentes
- Tópicos complicados para avaliar
- Sugestões de Fluxo
- intents_depreciadas
- utters_depreciadas
- Estudo sobre ferramentas de bots
- Estudo sobre melhores práticas de bots
- Estudo sobre pipeline do RASA
- Estudo sobre intents eficientes
- Estudo sobre refinamento da Taís
- Estudo de ferramentas de edição de conteúdo
- Estudo de Slots e Entidades
- Estudo de teste automatizado
- Estudo de Custom Actions
- Estudo de Interação
- Estudo de Métricas para Bots
- Estudo de Embedding Policy