Hello, everyone.
I’m just starting to use RASA to create a medical bot. I’m also not very experienced with Python and other languages related to RASA open source (I’m a physician) but I’m trying to make things work.
I think my actions.py is where the problem is but I would like your suggestions.
Error when using “rasa train”:
Traceback (most recent call last):
File "c:\anaconda3\envs\redflagv1\lib\runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "c:\anaconda3\envs\redflagv1\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Anaconda3\envs\redflagv1\Scripts\rasa.exe\__main__.py", line 7, in <module>
File "c:\anaconda3\envs\redflagv1\lib\site-packages\rasa\__main__.py", line 76, in main
cmdline_arguments.func(cmdline_arguments)
File "c:\anaconda3\envs\redflagv1\lib\site-packages\rasa\cli\train.py", line 76, in train
kwargs=extract_additional_arguments(args),
File "c:\anaconda3\envs\redflagv1\lib\site-packages\rasa\train.py", line 46, in train
kwargs=kwargs,
File "c:\anaconda3\envs\redflagv1\lib\asyncio\base_events.py", line 579, in run_until_complete
return future.result()
File "c:\anaconda3\envs\redflagv1\lib\site-packages\rasa\train.py", line 84, in train_async
domain = await file_importer.get_domain()
File "c:\anaconda3\envs\redflagv1\lib\site-packages\rasa\importers\importer.py", line 242, in get_domain
domains = await asyncio.gather(*domains)
File "c:\anaconda3\envs\redflagv1\lib\site-packages\rasa\importers\rasa.py", line 66, in get_domain
domain = Domain.load(self._domain_path)
File "c:\anaconda3\envs\redflagv1\lib\site-packages\rasa\core\domain.py", line 72, in load
other = cls.from_path(path)
File "c:\anaconda3\envs\redflagv1\lib\site-packages\rasa\core\domain.py", line 82, in from_path
domain = cls.from_file(path)
File "c:\anaconda3\envs\redflagv1\lib\site-packages\rasa\core\domain.py", line 95, in from_file
return cls.from_yaml(rasa.utils.io.read_file(path))
File "c:\anaconda3\envs\redflagv1\lib\site-packages\rasa\core\domain.py", line 105, in from_yaml
return cls.from_dict(data)
File "c:\anaconda3\envs\redflagv1\lib\site-packages\rasa\core\domain.py", line 110, in from_dict
slots = cls.collect_slots(data.get("slots", {}))
File "c:\anaconda3\envs\redflagv1\lib\site-packages\rasa\core\domain.py", line 200, in collect_slots
slot = slot_class(slot_name, **slot_dict[slot_name])
TypeError: __init__() got an unexpected keyword argument 'values'
actions.py:
from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
class FormDorToracica(FormAction):
def name(self) -> Text:
return "form_dor_toracica"
@staticmethod
def required_slots(tracker: Tracker) -> List[Text]:
return ["slot_tempo", "slot_tipo", "slot_irradiacao", "slot_fatores_piora","slot_outros_sintomas"]
def submit(
self,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any],
) -> List[Dict]:
"""Define what the form has to do
after all required slots are filled"""
if tracker.get_slot('slot_tempo') == 'minutos' :
return [SlotSet("dor_toracica_final","pronto_atendimento")]
dispatcher.utter_message(template="utter_dor_toracica_resposta_pronto_atendimento")
domain.yml:
intents:
- tchau
- oi
- cardiovasc_dor_toracica
- cardiovasc_dor_toracica_tempo
- cardiovasc_dor_toracica_tipo
- cardiovasc_dor_toracica_irradiacao
- cardiovasc_dor_toracica_fatores_piora
- cardiovasc_dor_toracica_outros_sintomas entities:
- sintoma
- quem
- topografia
- slot_tipo
- slot_tempo
- slot_irradiacao
- slot_fatores_piora
- slot_outros_sintomas
slots:
slot_tempo:
type: unfeaturized
values:
- minutos
- horas
- mais_de_um_dia
- mais_de_um_mes slot_tipo: type: unfeaturized values:
- queimacao
- aperto
- pontada slot_irradiacao: type: unfeaturized values:
- mandibula
- braco_esquerdo
- braco_direito
- abdome
- outro slot_fatores_piora: type: unfeaturized values:
- esforcos
- movimento
- puxoar
- soltoar
- tosse
- deita
- nenhum slot_outros_sintomas: type: unfeaturized values:
- falta ar
- tontura
- sonolencia
- nauseas_vomitos
- desmaios
- sonolencia
- sudorese dor_toracica_final: type: categorical values:
- pronto_atendimento
- ambulatorio templates: utter_oi:
- text: Olá! Diga o que você está sentindo e vou te ajudar a descobrir onde você deve procurar atendimento médico. utter_tchau:
- text: Até mais! utter_inicio_questoes:
- text: Certo. Eu vou fazer algum as perguntas sobre este sintoma para entender melhor. utter_ask_slot_tempo:
- text: Há quanto tempo essa dor começou?
buttons:
- title: “Há alguns minutos” payload: ‘/cardiovasc_dor_toracica_tempo{“slot_tempo”: “minutos”}’
- title: “Há algumas horas” payload: ‘/cardiovasc_dor_toracica_tempo{“slot_tempo”: “horas”}’
- title: “Mais de um dia” payload: ‘/cardiovasc_dor_toracica_tempo{“slot_tempo”: “mais_de_um_dia”}’
- title: “Mais de um mês” payload: ‘/cardiovasc_dor_toracica_tempo{“slot_tempo”: “mais_de_um_mes”}’ utter_ask_slot_tipo:
- text: Qual o tipo da sua dor?
buttons:
- title: “Queimação” payload: ‘/cardiovasc_dor_toracica_tipo{“slot_tipo”: “queimacao”}’
- title: “Há algumas horas” payload: ‘/cardiovasc_dor_toracica_tipo{“slot_tipo”: “aperto”}’
- title: “Mais de um dia” payload: ‘/cardiovasc_dor_toracica_tipo{“slot_tipo”: “pontada”}’ utter_ask_slot_irradiacao:
- text: A dor irradia (corre) para algum lugar?
buttons:
- title: “Sim, para a mandíbula” payload: ‘/cardiovasc_dor_toracica_irradiacao{“slot_irradiacao”: “mandibula”}’
- title: “Sim, para o braço esquerdo” payload: ‘/cardiovasc_dor_toracica_irradiacao{“slot_irradiacao”: “braco_esquerdo”}’
- title: “Sim, para o braço direito” payload: ‘/cardiovasc_dor_toracica_irradiacao{“slot_irradiacao”: “braco_direito”}’
- title: “Sim, para as costas” payload: ‘/cardiovasc_dor_toracica_irradiacao{“slot_irradiacao”: “costas”}’
- title: “Sim, para o abdôme” payload: ‘/cardiovasc_dor_toracica_irradiacao{“slot_irradiacao”: “abdome”}’
- title: “Sim, para outro lugar” payload: ‘/cardiovasc_dor_toracica_irradiacao{“slot_irradiacao”: “outro”}’ utter_ask_slot_fatores_piora:
- text: A dor piora com alguma ação destas abaixo?
buttons:
- title: “Aos esforços” payload: ‘cardiovasc_dor_toracica_fatores_piora{“slot_fatores_piora”: “esforcos”}’
- title: “Ao movimento” payload: ‘cardiovasc_dor_toracica_fatores_piora{“slot_fatores_piora”: “movimento”}’
- title: “Quando puxo o ar” payload: ‘cardiovasc_dor_toracica_fatores_piora{“slot_fatores_piora”: “puxoar”}’
- title: “Quando solto o ar” payload: ‘cardiovasc_dor_toracica_fatores_piora{“slot_fatores_piora”: “soltoar”}’
- title: “Quando tosse” payload: ‘cardiovasc_dor_toracica_fatores_piora{“slot_fatores_piora”: “tosse”}’
- title: “Quando deita” payload: ‘cardiovasc_dor_toracica_fatores_piora{“slot_fatores_piora”: “deita”}’
- title: “A dor não piora com nenhuma destas ações” payload: ‘cardiovasc_dor_toracica_fatores_piora{“slot_fatores_piora”: “nenhum”}’ utter_dor_toracica_resposta_pronto_atendimento:
- text: Você precisa ir para o pronto atendimento! utter_ask_slot_outros_sintomas:
- text: Além da dor, você tem algum outro desses sintomas?
buttons:
- title: “Falta de ar” payload: ‘cardiovasc_dor_toracica_outros_sintomas{“slot_outros_sintomas”: “falta_ar”}’
- title: “Tontura” payload: ‘cardiovasc_dor_toracica_outros_sintomas{“slot_outros_sintomas”: “tontura”}’
- title: “Sonolência” payload: ‘cardiovasc_dor_toracica_outros_sintomas{“slot_outros_sintomas”: “sonolencia”}’
- title: “Náuseas ou vômitos” payload: ‘cardiovasc_dor_toracica_outros_sintomas{“slot_outros_sintomas”: “nauseas_vomitos”}’
- title: “Desmaios” payload: ‘cardiovasc_dor_toracica_outros_sintomas{“slot_outros_sintomas”: “desmaios”}’
- title: “Sonolência” payload: ‘cardiovasc_dor_toracica_outros_sintomas{“slot_outros_sintomas”: “sonolencia”}’
- title: “Sudorese (suor frio)” payload: ‘cardiovasc_dor_toracica_outros_sintomas{“slot_outros_sintomas”: “sudorese”}’ forms:
- form_dor_toracica actions:
- utter_oi
- utter_tchau
- utter_entendi
- utter_inicio_questoes
- action_dor_toracica_PA
- utter_ask_slot_tempo
- utter_ask_slot_tipo
- utter_ask_slot_irradiacao
- utter_ask_slot_fatores_piora
- utter_ask_slot_outros_sintomas
- utter_dor_toracica_resposta_pronto_atendimento
Does anyone know what may be causing this issue?
Thanks a lot for your help!