Rasa 对话引擎
注意
这是 Rasa Core 0.8.5 版的文档。确保为本地安装选择适当的文档版本!
欢迎来到 Rasa 文档!
我在看什么?
Rasa 是构建会话式软件的框架:Messenger / Slack 僵尸程序,Alexa 技能等。
我们将 在此文档中将其缩写为 bot。您可以
实现您的机器人可以在 Python 代码中执行的操作(推荐),
或者使用 Rasa Core 作为 web 服务(实验性,请参阅 HTTP 服务器)。
它有什么好处?
if/else 您的机器人的逻辑不是基于一堆陈述,而是基于训练有关示例对话的概率模型。
这听起来比写几句话更难
在一个项目的开始阶段,只是硬编码一些逻辑确实比较容易。当你想要通过它时,Rasa 会
帮助你,创建一个可以处理更多复杂问题的机器人。
我可以看到它在行动吗?
我们认为你永远不会问!确保遵循安装, 然后检查构建一个简单的机器人!
入门
动机
但我不用 python 代码!
安装
教程
建立一个简单的机器人
监督学习教程
互动学习
没有 Python 的 Rasa Core
深潜
域,插槽和操作
故事 - 训练数据
常见模式
探究 - 如何融合在一起
HTTP 服务器
连接到消息和语音平台
计划提醒
Python API
代理人
事件
开发者文档
Featurization
解释器
自定义策略
跟踪对话状态
迁移指南
更改日志
动机
Rasa Core 适用于哪里
Rasa Core 接受结构化输入:意图和实体, 按钮点击等,并决定你的机器人下
一步应该运行哪个动作。如果您希望系统处理自由文本,则还需要使用 Rasa
NLU 或其他 NLU 工具。
指导原则
Rasa Core 的主要思想是将对话视为流程图不会扩展。很难明确地推断出所有可
能的对话,但如果对方是对还是错,在对话中间很容易分辨出来。
错误的方式™
实现对话流的典型方法是使用状态机。例如,你可能需要从用户收集一些数据来
完成他们的订单,然后手动把他们经历的状态 BROWSING,CHECKING_OUT,
ADDING_PAYMENT,ORDER_COMPLETE,等的复杂性来自于当用户从“幸福路径”流浪,你
需要添加代码用于处理问题,澄清,比较,拒绝等。将这些边缘案例手动插入状
态机是一个很大的麻烦。
一个典型的“简单”机器人可能会有 5-10 个州和几百个规则来管理它的行为。当
你的机器人不像你想要的那样工作时,找出错误是非常棘手的。
同样,当你想添加一些新功能时,你最终会碰到你之前编写的规则,并且变得越
来越难。
我们的观点是,从字面上理解流程图并将它们实现为状态机并不是一个好主意,
但流程图对于描述开心路径和可视对话仍然有用。
Rasa 方式
if/elseRasa 机器人并没有编写大量的语句,而是从真实的对话中学习。概率模
型选择要采取的行动,并且可以使用监督,强化或交互式学习来训练。
这种方法的优点是:
调试更容易
你的机器人可以更灵活
无需编写更多代码,您的机器人可以从经验中改进
您可以在不调试数百条规则的情况下为您的机器人添加新功能。
从哪儿开始
在完成安装之后,大多数用户应该从 构建简单的机器人开始。但是,如果您已
经有一系列想要用作训练集的对话,请查看监督学习教程。
问题
为什么选择python?
由于其机器学习工具的生态系统。转到但我不使用 Python 代码!了解详情。
这仅适用于ML 专家吗?
如果你对机器学习一无所知,你可以使用 Rasa,但如果你这么做,那么实验起
来很容易。
我需要多少训练数据?
通过使用交互式学习,您可以从零训练数据中引导。试试教程!
但我不用 python 代码!
虽然 python 是机器学习的通用语,但我们知道大多数聊天机器人都是用
javascript 编写的,而且很多企业在 Java,C#等平台上构建和发布应用程序更
加舒适。
即使您不想使用 python,我们也尽一切努力确保您仍然可以使用 Rasa Core。
但是,请考虑 Rasa Core 是一个框架,并且不像 Rasa NLU 那样容易适合 REST
API。
Rasa Core 与最小的 Python
您可以通过以下方式与 Rasa Core 构建聊天机器人:
定义一个域(一个 yaml 文件)
写作/收集故事(markdown 格式)
运行 python 脚本来训练和运行你的机器人
您需要编写 python 的唯一部分是当您要定义自定义操作时。有一个名为
requests 的优秀 python 库,这使得 HTTP 编程变得轻松无比。如果 Rasa 只需
要通过 HTTP 与您的其他服务进行交互,您的操作将全部如下所示:
from rasa_core.actions import Action
import requests
class ApiAction(Action):
def name(self):
return "my_api_action"
def run(self, dispatcher, tracker, domain):
data = requests.get(url).json
return [SlotSet("api_result", data)]
带有 ZERO Python 的 Rasa Core
如果你真的被限制为不使用任何 python,你也可以通过 HTTP API 使用 Rasa
Core 。
安装
安装 Rasa Core 以开始使用 Rasa 堆栈。
安装 Rasa Core
推荐的安装 Rasa Core 的方法是使用 pip:
pip install rasa_core
除非您已安装 numpy&scipy,否则我们强烈建议您安装并使用 Anaconda。
如果您想使用 Rasa 的最新版本,请使用 github + setup.py:
git clone https://github.com/RasaHQ/rasa_core.git
cd rasa_core
pip install -r requirements.txt
pip install -e .
注意
如果您想更改 Rasa Core 代码并想运行测试或构建文档,则需要安装开发依赖
项:
pip install -r dev-requirements.txt
pip install -e .
添加自然语言理解
我们使用 Rasa NLU 进行意图分类和实体提取。为了得到它,运行
pip install rasa_nlu
完整的说明可以在这里找到。
您也可以使用其他 NLU 服务,如 wit.ai,dialogflow 或 LUIS。实际上,如果您
的消息传递应用程序使用按钮而不是自由文本,则根本不需要使用 NLU。
入门
要查看刚安装的 Rasa Core,请参阅建立简单 Bot 的入门教程。
建立一个简单的机器人
注意
本教程将向您展示构建 bot 的不同部分。请注意,这是一个快速入门的小例子。
它不包含大量的训练数据,所以最终的机器人性能有一定的提升空间。
GitHub 上的示例代码
在这里我们展示了如何创建你的第一个机器人,添加一个 Rasa 应用程序的所有
部分。如果你也看看探究 - 这一切如何融合在一起,这可能会更容易遵循。
目标
我们将创建一个非常简单的机器人,检查我们目前的心情,如果我们感到难过,
就试图让我们振作起来。它会查询我们的情绪,并根据我们的回复将回应一个有
趣的图像或消息。
我们首先创建一个项目文件夹:
mkdir moodbot && cd moodbot
我们需要创建两个数据文件(对话故事和 NLU 示例)以及两个配置文件(对话
域和 NLU 配置)。最终的结构应该如下所示: