我试图学习并创建一个使用RASA的聊天机器人,它必须将输入从cmdline传递到作为flaskapi公开的Python数据帧,然后获得响应。在
所有的部分都可以单独工作,但是当我缝合在一起时,我无法从RASA命令行将输入参数传递给Pandas。在
以下是我迄今为止所做工作的总体总结:
class ActionBookSearch(Action): def name(self): return 'action_genre_search' def run(self, dispatcher, tracker, domain): import pyflask_api ### File name of the Python Flask code genre_val = tracker.get_slot('genre') ### Defined slots in domain.yml print(genre_val) ### This always gives None :( That's the issue. Not able to get the value from cmdline genre_results = pyflask_api.get_genre(genre="Action") ### Method present in pyflask_api.py code if genre_results: dispatcher.utter_message(genre_results) return [SlotSet("genre", genre_results if genre_results is not None else "Nothing Matched. Please Try again")]
解决方法:
由于我无法从Bot命令行中获取值,因此我硬编码了以下行以进行检查:
genre_results = pyflask_api.get_genre(genre="Action")
这个值将进入Flask代码,并从Panda dataframe中提取数据,并成功地将响应返回到命令行。在
需要做什么:
所以唯一悬而未决的事情是我应该成功地从cmdline获取值,这样无论何时在动作.py代码应该返回从cmdline获取的值,而不是像现在那样返回“None”。在
更新:
内容域名.yml公司名称:
entities:
- genre
slots:
genre:
type: text
action_factory: remote
intents:
- greet
- book_search
- thanks
- goodbye
actions:
- utter_greet
- utter_goodbye
- action_genre_search
- utter_happy_reading
内容故事.md公司名称:
^{pr2}$nlu内容_数据.md公司名称:
## intent:greet
- hey
- hello
## intent:book_search
- I want to read some Fantasy books
- I want to read some Classics books
- I want to read some Fictional books
## intent:thanks
- perfect
- very good
## intent:goodbye
- bye
你必须annotate your NLU examples例如:
此外,您还必须添加更多示例,以使实体提取更加可靠。 要完成此工作,请确保ner_crf位于NLU管道中。在
相关问题 更多 >
编程相关推荐