我正在尝试使用RASA学习和创建聊天机器人,该聊天机器人必须将输入从cmdline传递到公开为Flask API的Python数据帧,并获取响应。
所有零碎的部分都可以正常工作,但是当我缝合在一起时,无法将输入参数从RASA cmdline传递给Pandas。
这是到目前为止我所做的总体摘要:
创建了一个熊猫数据框,并将其公开为Flask API。
能够手动点击它并在浏览器中查看输出。
将Flask API路由修改为“ @ app.route(“ / webhook”)”,以从RASA收集输入。
RASA endpoint.yml也包含“ webhook”地址。
创建了一个自定义动作,并提到了domain.yml文件。自定义操作的内容-actions.py如下所述。
Domain.yml还具有以下语句“ action_factory:remote”,我认为这是为了利用自定义操作。虽然不确定。
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 cmdline获取值,因此我在下面的行中进行了硬编码以进行检查:
genre_results = pyflask_api.get_genre(genre =“ Action”)
此值将转至Flask代码,并从Panda数据框中提取数据,并将响应成功返回到命令行。
需要做什么 :
因此,只有待处理的事情是我应该从cmdline成功获取该值,以便每当在action.py代码中执行print(genre_val)时,它都应该返回从cmdline获取的值,而不是像现在那样返回“ None”。
更新:
domain.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
story.md的内容:
#create your story here
## greet
* greet
- utter_greet
## get genre
* book_search{"genre": "Fantasy"}
- action_genre_search
## good bye
* goodbye
- utter_goodbye
## Thank you
* thanks
- utter_happy_reading
nlu_data.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
python参考方案
您必须annotate your NLU examples例如:
## intent:book_search
- I want to read some [Fantasy](genre) books
- I want to read some [Classics](genre) books
- I want to read some [Fictional](genre) books
另外,您还必须添加更多示例以使实体提取更加可靠。
为了完成这项工作,请确保ner_crf在您的NLU管道中。
我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…
Python pytz时区函数返回的时区为9分钟 - python由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…
用大写字母拆分字符串,但忽略AAA Python Regex - python我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…
如何打印浮点数的全精度[Python] - python我编写了以下函数,其中传递了x,y的值:def check(x, y): print(type(x)) print(type(y)) print(x) print(y) if x == y: print "Yes" 现在当我打电话check(1.00000000000000001, 1.0000000000000002)它正在打印:<…
Python:如何根据另一列元素明智地查找一列中的空单元格计数? - pythondf = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice','Jane', 'Alice','Bob', 'Alice'], 'income…