使用RASA和Python、Flask构建的聊天机器人

2024-04-27 19:58:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图学习并创建一个使用RASA的聊天机器人,它必须将输入从cmdline传递到作为flaskapi公开的Python数据帧,然后获得响应。在

所有的部分都可以单独工作,但是当我缝合在一起时,我无法从RASA命令行将输入参数传递给Pandas。在

以下是我迄今为止所做工作的总体总结:

  • 创建了一个Panda数据帧并将其作为flaskapi公开。在
  • 能够手动点击并在浏览器中查看输出。在
  • 将烧瓶原料药路线修改为“@应用程序路径(“/webhook”)“从RASA收集输入。在
  • 拉萨终结点还包含“webhook”地址。在
  • 创建了一个自定义操作并提到了它域名.yml文件也一样。自定义操作的内容-动作.py如下所述。在
  • 在域名.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命令行中获取值,因此我硬编码了以下行以进行检查:

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

Tags: to数据api内容searchgetymlaction
1条回答
网友
1楼 · 发布于 2024-04-27 19:58:38

你必须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管道中。在

相关问题 更多 >