4. 将Rasa 1.x助手迁移到Rasa 2.0

原文:将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目录中:

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:


policy configuration

要将此配置迁移到Rasa 2.0,我们可以运行以下命令:

rasa data convert config

此功能将更新config.yml文件,使其与Rasa 2.0兼容。 它将用规则策略替换不推荐使用的策略,并迁移配置参数以与Rasa 2.0兼容。 上例中的config.yml文件转换后的样子如下:

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。 例如:


更新domain.yml文件,并包括你助手中的Forms配置

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文件。 例如:

建议从story.yml文件中删除这些故事并更新rules.yml文件,而不是通过添加 form activation 和 form submission 规则

4.如果你的 forms 包括slot validation,请更新domain.yml文件以包括用于validating slots的 custom action。 例如:


更新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 是否影响对话来实现相同目的。 例如:

image.png

总结

Rasa Open Source 2.0包含了许多令人兴奋的new exciting features和改进,我们希望它们可以使开发人员更轻松地使用Rasa构建出色的对话式AI助手。 你是否已将Rasa 1.x助手迁移到Rasa 2.0? 在 Rasa Community Forum上与我们分享你的经验和反馈。

你可能感兴趣的:(4. 将Rasa 1.x助手迁移到Rasa 2.0)