为了账号安全,请及时绑定邮箱和手机立即绑定

在 rasa 中运行自定义操作时遇到错误

在 rasa 中运行自定义操作时遇到错误

四季花海 2022-05-24 13:24:37
我最近开始研究 rasa。我的聊天机器人很简单。每当用户提出问题时,机器人都会从sqlite3数据库中过滤数据并返回结果。我添加了训练示例,为流程创建了故事,并编写了一个自定义操作来过滤数据库中的数据。对于自定义操作,我指定了一个端点并启动了操作服务器。到目前为止,这是我的代码动作.pyfrom typing import Any, Text, Dict, Listfrom rasa_core_sdk import Action, Trackerimport sqlite3class TestAction(Action):    def name(self) -> Text:        return "action_testAction"    def run(self, dispatcher, tracker, domain):        UserId = tracker.get_slot('UserID')        query = 'SELECT User_name FROM sales WHERE UserID=?'        conn = sqlite3.connect("test.db")        cursor = conn.cursor()        cursor.execute(query, (UserId,))        name = cursor.fetchall()        msg = 'Hello {}!'.format(name)        dispatcher.utter_message(msg)端点.ymlaction_endpoint:  url: "http://localhost:5055/"为了运行端点,我在单独的终端窗口中运行了以下代码python -m rasa_sdk --actions actions但是当我使用rasa shell --endpoints endpoints.yml基于此链接的命令运行程序时,出现以下错误rasa.core.processor  - Encountered an exception while running action 'action_testAction'. Bot will continue, but the actions events are lost. Please check the logs of your action server for more information.这是我的动作端点服务器返回的127.0.0.1 - - [2019-09-09 11:07:23] "POST / HTTP/1.1" 404 342 0.005443我不确定,我做错了什么。我检查了代码 actions.py 文件。我似乎没有在那里犯任何错误。
查看完整描述

2 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

您收到Exception: No registered Action found for name 'action_testAction'.错误的原因是因为您在运行操作服务器时出现第一个异常,即因为:


rasa.core.processor  - Encountered an exception while running action 'action_testAction'. Bot will continue, but the actions events are lost. Please check the logs of your action server for more information.

尝试debug mode使用调试标志运行操作服务器,以查看代码中的问题所在-vv。rasa run actions -vv(问题可能是因为您可能没有导入 Action 或 sqlite3 或其他任何东西)。


希望有帮助。


编辑:


确保action文件名匹配。


运行rasa run actions --actions action -vv产量


(chatbot) PS C:\Users\user\Documents\Python\rasa-test> python -m rasa_sdk --actions action -vv

2019-09-09 21:02:56 INFO     rasa_sdk.endpoint  - Starting action endpoint server... 

2019-09-09 21:02:56 INFO     rasa_sdk.executor  - Registered function for 'action_testAction'.

2019-09-09 21:02:56 INFO     rasa_sdk.endpoint  - Action endpoint is up and running. on ('0.0.0.0', 5055)       

action.py


import sqlite3


from rasa_sdk import Action


class TestAction(Action):


    def name(self):

        return "action_testAction"


    def run(self, dispatcher, tracker, domain):


        UserId = tracker.get_slot('UserID')

        query = 'SELECT User_name FROM sales WHERE UserID=?'


        conn = sqlite3.connect("test.db")

        cursor = conn.cursor()

        cursor.execute(query, (UserId,))

        name = cursor.fetchall()


        msg = 'Hello {}!'.format(name)

        dispatcher.utter_message(msg)


查看完整回答
反对 回复 2022-05-24
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

我遇到了这个错误,简单的解决方案是在 actions.py 文件的下面部分中观察错误和代码。


class TestAction(Action):


    def name(self) -> Text:

        return "action_testAction"

类的名称是'TestAction','name'函数的返回值是'action_testAction'。所以错误是 - 您在域文件中使用的操作的名称与此类中此“名称”方法返回的名称不匹配。在 NLU 训练数据和域文件中使用此“action_testAction”。


查看完整回答
反对 回复 2022-05-24
  • 2 回答
  • 0 关注
  • 648 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信