原文:将Rasa 1.x助手迁移到Rasa 2.0
上周,我们发布了Rasa Open Source 2.0-一个重要的新版本,标志着Rasa Open Source开发的新里程碑。 它具有许多新功能和改进,我们希望它们可以使与Rasa构建出色的对话式AI助手变得更加容易。
如果你现在是使用Rasa 1.x构建助手的,那么你会注意到Rasa 2.0中的工作方式有很多变化。
在本文中,我们想向你展示如何安全地将使用Rasa Open Source 1.x构建的助手迁移到2.0。
我们将介绍的内容:
- 搭建环境
- 训练数据格式
- Policy configuration
- Forms
- Slots
1. 搭建环境
在将现有应用程序迁移到新版本的Rasa Open Source时,我们建议你使用项目的副本,以便在出现问题时始终可以恢复到原始版本。
要开始迁移,请创建一个目录,其中包含你的助手副本。 在该目录中,创建一个虚拟环境并安装Rasa 2.0:
python3 -m venv ./venv
source ./venv/bin/activate
pip install rasa==2.0
安装完成后,你就可以开始迁移助手了。
2. 训练数据格式
新的训练数据格式将影响大多数使用Rasa 1.x构建的助手。 自Rasa 2.0发行以来,NLU,stories 和NLG训练数据的默认数据格式为YAML。
要从以前的Rasa版本中使用的markdown格式转换到现有的训练数据,你可以使用能够自动转换nlu,stories和nlg数据的数据转换器。
假设你Rasa 1.x助手遵循通常的项目结构,其中nlu和story训练数据文件分别存储在./data/nlu
和./data/stories
目录中:
要将数据文件转换为YAML格式,请运行以下命令:
rasa data convert nlu -f yaml --data=./data/nlu --out=./data/nlu
rasa data convert core -f yaml --data=./data/stories --out=./data/stories
其中,--data
参数指向现有的训练数据文件,而--out
参数指向应该存储转换后的数据文件的目录。
转换后的文件将具有与原始文件相同的名称,但是名称后会附加后缀_converted
:
如果你的训练数据包含任何带有forms或response selectors的stories,那么到目前为止,你将必须手动更新这些stories。 我们将在本文的后续步骤中介绍如何实现这一目标。
3. Policy configuration
Rasa 2.0中已更改的Rasa的另一部分是policy configuration。 Mapping Policy, Fallback Policy, Two Stage Fallback Policy 和 Form Policy 已被弃用,并由Rule Policy代替。 要将policy configuration迁移到Rasa 2.0,可以运行Converter命令,该命令将自动为你实施更改。
让我们以下面的Rasa 1.x policy configuration为例。 这里我们已弃用了Mapping Policy, Fallback Policy 和 Form Policy:
要将此配置迁移到Rasa 2.0,我们可以运行以下命令:
rasa data convert config
此功能将更新config.yml文件,使其与Rasa 2.0兼容。 它将用规则策略替换不推荐使用的策略,并迁移配置参数以与Rasa 2.0兼容。 上例中的config.yml文件转换后的样子如下:
除了更新config.yml文件之外,此功能还将对domain.yml文件进行更新,并将创建一个rules.yml文件,可以在其中进一步向策略配置中添加新规则。
注意:如果你的Rasa 1.x助手包含Forms,则必须对配置进行一些其他手动更改。 我们将在本文的下一部分中介绍这些细节。
4. Forms
Forms在Rasa Open Source 2.0中进行了重大修改。 首先,它们已从Rasa SDK中移出并移至Rasa Open Source中,以简化实现并使其更容易用其他语言编写action servers。 其次,在Rasa Open Source 2.0中,必须使用domain.yml文件来实现 forms,而不是使用FormAction来实现。
以下是将现有Forms迁移到Rasa 2.0的步骤:
1.更新config.yml文件中的 policy configuration,并将FormPolicy替换为RulePolicy(如果你已使用rasa data convert config
命令更新了 policy configuration,则将自动为你完成此操作)。
2.更新domain.yml文件,并包括你助手中的Forms配置。 配置应包括Forms名称,请求的slots以及适用的 slot mappings。 例如:
3.如果你使用rasa data convert
命令将你的stories数据迁移到Rasa Open Source 2.0,则包含forms的stories将被更新,以包括form activation和 form deactivation的步骤。 为了将表单正确地迁移到2.0,我们建议你从Storys.yml文件中删除这些stories,并通过添加form activation 和 form submission来更新rules.yml文件。 例如:
4.如果你的 forms 包括slot validation,请更新domain.yml文件以包括用于validating slots的 custom action。 例如:
5.在actions.py文件中创建一个custom action以validate the slots。 这与Rasa Open Source 1.x中的工作方式类似,但是主要区别在于,slot validation
的 custom action类继承自Rasa SDK中的FormValidationAction类。 我们建议你查阅 Rasa documentation,以获取有关如何创建用于validating slots的custom actions的更多详细信息。
5. Slots
Rasa Open Source 2.0中引入的另一个更改是弃用了unfeaturized
slot类型。 在Rasa Open Source 1.x中,这种 slot 类型用于定义不影响对话的slot。 在Rasa Open Source 2.0中,可以通过定义text
slot 类型并使用influence_conversation
标志来控制 slot 是否影响对话来实现相同目的。 例如:
总结
Rasa Open Source 2.0包含了许多令人兴奋的new exciting features和改进,我们希望它们可以使开发人员更轻松地使用Rasa构建出色的对话式AI助手。 你是否已将Rasa 1.x助手迁移到Rasa 2.0? 在 Rasa Community Forum上与我们分享你的经验和反馈。