Command Line Interface
CLI (command line interface)提供了简单的常见任务命令。本页面描述了这些命令的行为以及可以传递给它们的参数。
- rasa init 创建一个新项目,包含训练数据、动作和配置文件。
- rasa train使用你的NLU数据和故事来训练一个模型,并将训练过的模型保存在/models中。
- rasa interactive 开始一个交互式的学习会话,通过与你的助手聊天来创建新的训练数据。
- rasa shell 加载你训练过的模型,让你在命令行上与你的助手交谈。
- rasa run 用你训练过的模型启动服务器。
- rasa run actions 使用- rasa SDK启动一个action服务器。
- rasa visualize 将你的故事可视化。
- rasa test 对任何以test_开头的文件测试一个训练过的- rasa模型。对你的NLU训练数据进行80/20的分割。
- rasa data convert 在不同格式之间转换训练数据。
- rasa data migrate 将2.0域迁移到3.0格式。
- rasa data validate 检查域、NLU和会话数据是否不一致。
- rasa export 将会话从跟踪器库导出到事件代理。
- rasa evaluate markers 从现有的跟踪器存储中提取标记。
- rasa X 以本地模式启动- rasa X。
- rasa -h 显示所有可用的命令。
rasa init
这个命令为你设置了一个完整的助手,带有一些示例训练数据:
它创建以下文件:
它会询问您是否想要使用这些数据训练一个初始模型。如果您回答否,则models目录将为空。任何默认的CLI命令都需要这个项目设置,所以这是开始的最佳方式。您可以运行rasa train, rasa shell和 rasa test,而无需任何额外的配置。
rasa train
下面的命令训练了一个Rasa开源模型:
如果您的目录中有已存在的模型(默认情况下在models/下),那么只有模型中已更改的部分将被重新训练。例如,如果你只编辑NLU的训练数据而不编辑其他内容,那么只有NLU部分会被训练。
如果你想单独训练NLU或对话模型,你可以运行rasa train NLU或rasa train core。如果你只为其中一个命令提供训练数据,默认情况下rasa train将回到这些命令中的一个。
Rasa train将把训练过的模型存储在——out, models/默认情况下定义的目录中。默认情况下,模型的名称是.tar.gz。如果您想要以不同的方式命名您的模型,您可以使用——fixed model-name标志指定名称。
以下参数可用于配置训练过程:
Incremental training 增量训练
新2.2版本:这个特性是实验性的。我们引入了一些实验性的功能,以从我们的社区获得反馈,所以我们鼓励您尝试一下!但是,将来可能会更改或删除这些功能。如果你有反馈(积极的或消极的),请在Rasa论坛上与我们分享。
为了提高助手的性能,练习对话驱动开发((Conversation-Driven Development,CDD)并根据用户与助手的交谈方式添加新的训练示例是很有帮助的。您可以使用rasa train —finetune来初始化一个已经训练过的模型的管道,并在包含其他训练示例的新训练数据集上进一步微调它。这将有助于减少新模型的训练时间。
默认情况下,该命令从models/目录中获取最新的模型,如果你有一个想要改进的特定模型,你可以通过运行rasa train ——finetune 来指定它的路径。与从头开始训练相比,对模型进行微调通常需要更少的时间来训练机器学习组件,如DIETClassifier、ResponseSelector和TEDPolicy。要么使用定义比以前更少的epoch的模型配置进行微调,要么使用标志——epoch-fraction。——epoch-fraction将在模型配置文件中为每个机器学习组件指定epoch的一部分。例如,如果DIETClassifier配置为使用100个epoch,指定——epoch-fraction 0.5将只使用50个epoch进行微调。
你也可以分别使用rasa train nlu -finetune和rasa train core -finetune来微调nlu -only或对话管理模型。
为了能够对模型进行微调,必须满足以下条件:
1、所提供的配置应该与用于训练正在进行微调的模型的配置完全相同。唯一可以改变的参数是单个机器学习组件和策略的epoch。
2、用于训练基本模型的标签集(意图、动作、实体和槽)应该与用于微调的训练数据中的标签集完全相同。这意味着您不能在增量训练期间向您的训练数据添加新的意图、动作、实体或插槽标签。您仍然可以为每个现有的标签添加新的训练示例。如果您已经在训练数据中添加/删除了标签,则需要从头开始训练管道。
3、要微调的模型使用当前安装的rasa版本的MINIMUM_COMPATIBLE_VERSION进行训练。
rasa interactive
你可以在本地模式下使用Rasa X在UI中进行交互学习,查看文档了解更多细节。
如果你更喜欢使用命令行,你可以通过运行以下命令来启动一个交互式学习会话:
这将首先训练一个模型,然后开始一个交互式shell会话。然后,您可以在与它交谈时纠正助手的预测。如果UnexpecTEDIntentPolicy包含在管道中,action_unlikely_intent可以在任何会话回合被触发。随后,将显示如下信息:
正如该消息所言,这表明您已经探索了一个会话路径,根据当前的训练故事集,这是意料之外的,因此建议将此路径添加到训练故事中。与其他bot操作一样,您可以选择确认或拒绝运行此操作。如果你使用 --model参数提供一个训练过的模型,训练将被跳过,而该模型将被加载。
在互动学习过程中,Rasa将从训练数据中绘制出当前的对话和一些类似的对话,以帮助您跟踪自己的位置。会话一开始,您就可以在http://localhost:5005/visualization.html上查看可视化。生成此图可能需要一些时间。要跳过可视化,运行rasa interactive --skip-visualization。
以下参数可用于配置交互式学习会话:
交互式示例:
rasa interactive --config E:\starspace\my_rasa\config.yml --domain E:\starspace\my_rasa\domain.yml --model E:\starspace\my_rasa\models\20211227-124216-active-fort.tar.gz