目录
创建新项目
以下命令使用示例训练数据为你建立一个完整的项目。
rasa init
这将创建以下文件:
.
├── __init__.py
├── actions.py
├── config.yml
├── credentials.yml
├── data
│ ├── nlu.md
│ └── stories.md
├── domain.yml
├── endpoints.yml
└── models
└── <timestamp>.tar.gz
rasa init
命令将询问你是否要使用此数据训练初始模型。如果回答否,则models
目录将为空。
随着此项目建立,一些常用命令非常容易记住。
要训练模型,输入rasa train
;在命令行上与模型通信,使用rasa shell
;测试模型类型使用rasa test
。
训练模型
主要命令是:
rasa train
该命令训练Rasa模型,该模型结合了Rasa NLU和Rasa Core模型。如果你只想训练NLU或Core模型,你可以运行rasa train nlu
或rasa train core
。如果训练数据和配置没有改变,Rasa将自动跳过训练Core或NLU。
rasa train
将训练好的模型存储在--out
指定的目录中。模型的名称默认是<timestamp>.tar.gz
。如果要为模型命名,可以使用--fixed-model-name
指定名称。
以下参数可用于配置训练过程:
用法: rasa train [-h] [-v] [-vv] [--quiet] [--data DATA [DATA ...]]
[-c CONFIG] [-d DOMAIN] [--out OUT]
[--augmentation AUGMENTATION] [--debug-plots]
[--dump-stories] [--fixed-model-name FIXED_MODEL_NAME]
[--force]
{core,nlu} ...
位置参数:
{core,nlu}
core 使用你的故事训练Rasa Core模型
nlu 使用你的NLU数据训练Rasa NLU模型
可选参数:
-h, --help 显示帮助消息并退出。
--data DATA [DATA ...]
Core和NLU数据文件的路径。(默认:['data'])
-c CONFIG, --config CONFIG
机器人的策略和NLU管道配置。(默认:config.yml)
-d DOMAIN, --domain DOMAIN
域规范(yml文件)。(默认:domain.yml)
--out OUT 存储模型的目录。(默认:models)
--augmentation AUGMENTATION
在训练期间使用多少数据扩充。(默认值:50)
--debug-plots 如果启用,将创建展示检查点( checkpoints)和它们在文件(`story_blocks_connections.html`)中的故事块之间的联系的图表。(默认:False)
--dump-stories 如果启用,将展开的故事保存到文件中。(默认:False)
--fixed-model-name FIXED_MODEL_NAME
如果设置,则模型文件/目录的名称将为设置为给定的名称。(默认:None)
--force 即使数据没有改变,也强制进行模型训练。(默认值:False)
Python日志选项:
-v, --verbose 详细输出。将日志记录级别设置为INFO。(默认:None)
-vv, --debug 打印大量的调试语句。设置日志记录级别为 DEBUG。(默认:None)
--quiet 将日志记录级别设置为WARNING。(默认:None)
注意: 使用rasa train
训练模型时,确保Core和NLU的训练数据存在。如果仅存在一种模型类型的训练数据,则该命令将根据提供的训练文件自动回退到rasa train nlu
或rasa train core
。
交互式学习
与助手开始交互式学习会话,运行
rasa interactive
如果使用--model
参数提供训练模型,则使用提供的模型启动交互式学习过程。如果没有指定模型,且没有其他目录传递给--data
参数,rasa interactive
将使用位于data/
目录中的数据训练一个新的Rasa模型。在训练初始模型之后,交互式学习会话开始。如果训练数据和配置没有改变,将跳过训练。
可以为rasa interactive
设置的参数的完整列表:
用法: rasa interactive [-h] [-v] [-vv] [--quiet] [-m MODEL]
[--data DATA [DATA ...]] [--skip-visualization]
[--endpoints ENDPOINTS] [-c CONFIG] [-d DOMAIN]
[--out OUT] [--augmentation AUGMENTATION]
[--debug-plots] [--dump-stories] [--force]
{core} ... [model-as-positional-argument]
位置参数:
{core}
core 启动交互式学习会话模型通过聊天来创建用于Rasa Core模型的新训练数据。使用'RegexInterpreter',即`/ <intent>`输入格式。
model-as-positional-argument
已训练的Rasa模型的路径。如果目录指定,它将使用目录中的最新的模型。(默认:None)
可选参数:
-h, --help 显示帮助消息并退出。
-m MODEL, --model MODEL
已训练的Rasa模型的路径。如果目录指定,它将使用目录中的最新的模型。(默认:None)
--data DATA [DATA ...]
Core和NLU数据文件的路径。(默认:['data'])
--skip-visualization
在交互学习期间禁用绘制可视化。(默认值:False)
--endpoints ENDPOINTS
模型服务和连接器的配置文件为yml文件。(默认:None)
Python日志选项:
-v, --verbose 详细输出。将日志记录级别设置为INFO。(默认:None)
-vv, --debug 打印大量的调试语句。设置日志记录级别为 DEBUG。(默认:None)
--quiet 将日志记录级别设置为WARNING。(默认:None)
训练参数:
-c CONFIG, --config CONFIG
机器人的策略和NLU管道配置。(默认:config.yml)
-d DOMAIN, --domain DOMAIN
域规范(yml文件)。(默认:domain.yml)
--out OUT 存储模型的目录。(默认:models)
--augmentation AUGMENTATION
在训练期间使用多少数据扩充。(默认值:50)
--debug-plots
如果启用,将创建展示检查点( checkpoints)和它们在文件(`story_blocks_connections.html`)中的故事块之间的联系的图表(默认:False)
--dump-stories
如果启用,将展开的故事保存到文件中。(默认值:False)
--force 即使数据没有改变,也强制进行模型训练。(默认值:False)
与助手交谈
要在命令行上与助手开始聊天,请运行:
rasa shell
应该用于与机器人交互的模型可以由--model
指定。如果仅使用NLU模型启动shell,则rasa shell
允许你获取在命令行上输入的任何文本的意图(intent)和实体。如果你的模型包含经过训练的Core模型,你可以与机器人聊天,并查看机器人预测的下一步操作。如果你已经训练了一个组合的Rasa模型,但是想要查看模型从文本中提取的意图和实体,你可以使用命令rasa shell nlu
。
提高日志记录级别以便调试,请运行:
rasa shell --debug
rasa shell
的完整选项列表:
用法: rasa shell [-h] [-v] [-vv] [--quiet] [-m MODEL] [--log-file LOG_FILE]
[--endpoints ENDPOINTS] [-p PORT] [-t AUTH_TOKEN]
[--cors [CORS [CORS ...]]] [--enable-api]
[--remote-storage REMOTE_STORAGE]
[--credentials CREDENTIALS] [--connector CONNECTOR]
[--jwt-secret JWT_SECRET] [--jwt-method JWT_METHOD]
{nlu} ... [model-as-positional-argument]
位置参数:
{nlu}
nlu 使用NLU模型解释命令行上的消息。
model-as-positional-argument
已训练的Rasa模型的路径。如果目录指定,它将使用目录中的最新的模型。(默认:None)
可选参数:
-h, --help 显示帮助消息并退出。
-m MODEL, --model MODEL
已训练的Rasa模型的路径。如果目录指定,它将使用目录中的最新的模型。(默认:None)
--log-file LOG_FILE
将日志存储在指定文件中。(默认:None)
--endpoints ENDPOINTS
模型服务和连接器的配置文件为yml文件。(默认:None)
Python日志选项:
-v, --verbose 详细输出。将日志记录级别设置为INFO。(默认:None)
-vv, --debug 打印大量的调试语句。设置日志记录级别为 DEBUG。(默认:None)
--quiet 将日志记录级别设置为WARNING。(默认:None)
服务设置:
-p PORT, --port PORT
用于运行服务的端口。(默认值:5005)
-t AUTH_TOKEN, --auth-token AUTH_TOKEN
启用基于令牌的身份验证,请求需要提供可被接受的令牌。(默认:None)
--cors [CORS [CORS ...]]
为传递的来源启用CORS。使用`*`将所有来源添加到白名单。(默认:None)
--enable-api
除输入渠道外,还启动Web服务API渠道。(默认值:False)
--remote-storage REMOTE_STORAGE
设置Rasa模型所在的远程存储位置,例如在AWS上。(默认:None)
渠道(Channels):
--credentials CREDENTIALS
连接器的身份验证凭据为yml文件。(默认:None)
--connector CONNECTOR
连接的服务。 (默认: None)
JWT身份验证:
--jwt-secret JWT_SECRET
非对称JWT方法的公钥或对称方法的共享机密。还请确保使用 --jwt-method 选择签名方法,否则这个参数将被忽略。(默认:None)
--jwt-method JWT_METHOD
用于JWT的认证负载签名的方法。(默认:HS256)
启动服务
启动服务运行Rasa模型,请运行:
rasa run
以下参数可用于配置Rasa服务:
用法: rasa run [-h] [-v] [-vv] [--quiet] [-m MODEL] [--log-file LOG_FILE]
[--endpoints ENDPOINTS] [-p PORT] [-t AUTH_TOKEN]
[--cors [CORS [CORS ...]]] [--enable-api]
[--remote-storage REMOTE_STORAGE] [--credentials CREDENTIALS]
[--connector CONNECTOR] [--jwt-secret JWT_SECRET]
[--jwt-method JWT_METHOD]
{actions} ... [model-as-positional-argument]
位置参数:
{actions}
actions 运行操作服务(action server)。
model-as-positional-argument
已训练的Rasa模型的路径。如果目录指定,它将使用目录中的最新的模型。(默认:None)
可选参数:
-h, --help 显示帮助消息并退出。
-m MODEL, --model MODEL
已训练的Rasa模型的路径。如果目录指定,它将使用目录中的最新的模型。(默认:None)
--log-file LOG_FILE
将日志存储在指定文件中。(默认:None)
--endpoints ENDPOINTS
模型服务和连接器的配置文件为yml文件。(默认:None)
Python日志选项:
-v, --verbose 详细输出。将日志记录级别设置为INFO。(默认:None)
-vv, --debug 打印大量的调试语句。设置日志记录级别为 DEBUG。(默认:None)
--quiet 将日志记录级别设置为WARNING。(默认:None)
服务设置:
-p PORT, --port PORT
用于运行服务的端口。(默认值:5005)
-t AUTH_TOKEN, --auth-token AUTH_TOKEN
启用基于令牌的身份验证,请求需要提供可被接受的令牌。(默认:None)
--cors [CORS [CORS ...]]
为传递的来源启用CORS。使用`*`将所有来源添加到白名单。(默认:None)
--enable-api
除输入渠道外,还启动Web服务API渠道。(默认值:False)
--remote-storage REMOTE_STORAGE
设置Rasa模型所在的远程存储位置,例如在AWS上。(默认:None)
渠道(Channels):
--credentials CREDENTIALS
连接器的身份验证凭据为yml文件。(默认:None)
--connector CONNECTOR
连接的服务。 (默认: None)
JWT身份验证:
--jwt-secret JWT_SECRET
非对称JWT方法的公钥或对称方法的共享机密。还请确保使用 --jwt-method 选择签名方法,否则这个参数将被忽略。(默认:None)
--jwt-method JWT_METHOD
用于JWT的认证负载签名的方法。(默认:HS256)
其他参数的详细信息,请参阅运行服务。有关所有端点的详细文档,请参阅Rasa HTTP API文档。
启动操作服务
运行你的操作服务(Action Server):
rasa run actions
以下参数可用于调整服务设置:
用法: rasa run actions [-h] [-v] [-vv] [--quiet] [-p PORT]
[--cors [CORS [CORS ...]]] [--actions ACTIONS]
可选参数:
-h, --help 显示帮助消息并退出
-p PORT, --port PORT
用于运行服务的端口。(默认值:5005)
--cors [CORS [CORS ...]]
为传递的来源启用CORS。使用`*`将所有来源添加到白名单。(默认:None)
--actions ACTIONS
要加载的操作包的名称。(默认值:None)
Python日志选项:
-v, --verbose 详细输出。将日志记录级别设置为INFO。(默认:None)
-vv, --debug 打印大量的调试语句。设置日志记录级别为 DEBUG。(默认:None)
--quiet 将日志记录级别设置为WARNING。(默认:None)
可视化故事
打开浏览器标签页以图的形式显示故事:
rasa visualize
通常,data
目录中的训练故事是可视化的。如果你的故事位于其他地方,则可以使用--stories
指定其位置。
其他参数是:
用法: rasa visualize [-h] [-v] [-vv] [--quiet] [-d DOMAIN] [-s STORIES]
[-c CONFIG] [--out OUT] [--max-history MAX_HISTORY]
[-u NLU]
可选参数:
-h, --help 显示帮助消息并退出。
-d DOMAIN, --domain DOMAIN
域规范(yml文件)。(默认:domain.yml)
-s STORIES, --stories STORIES
包含你的训练故事的文件或文件夹。(默认:data)
-c CONFIG, --config CONFIG
机器人的策略和NLU管道配置。(默认:config.yml)
--out OUT 输出路径的文件名,例如'graph.html'。(默认: graph.html)
--max-history MAX_HISTORY
在输出图合并路径时要考虑的最大历史记录。(默认:2)
-u NLU, --nlu NLU
包含NLU数据的文件或文件夹,用于将示例消息插入图表中。(默认:None)
Python日志选项:
-v, --verbose 详细输出。将日志记录级别设置为INFO。(默认:None)
-vv, --debug 打印大量的调试语句。设置日志记录级别为 DEBUG。(默认:None)
--quiet 将日志记录级别设置为WARNING。(默认:None)
评估模型
要在测试数据上评估模型,请运行:
rasa test
使用--model
指定要测试的模型。查看有关[评估NLU模型]和[评估Core模型]的更多详细信息。
以下参数可用于rasa test
:
用法: rasa test [-h] [-v] [-vv] [--quiet] [-m MODEL] [-s STORIES]
[--max-stories MAX_STORIES] [--e2e] [--endpoints ENDPOINTS]
[--fail-on-prediction-errors] [--url URL]
[--evaluate-model-directory] [-u NLU] [--out OUT]
[--report [REPORT]] [--successes [SUCCESSES]]
[--errors ERRORS] [--histogram HISTOGRAM] [--confmat CONFMAT]
[-c CONFIG [CONFIG ...]] [--cross-validation] [-f FOLDS]
[-r RUNS] [-p PERCENTAGES [PERCENTAGES ...]]
{core,nlu} ...
位置参数:
{core,nlu}
core 使用你的测试故事测试Rasa Core模型。
nlu 使用测试NLU数据测试Rasa NLU模型。
可选参数:
-h, --help 显示帮助消息并退出。
-m MODEL, --model MODEL
已训练的Rasa模型的路径。如果目录指定,它将使用目录中的最新的模型。(默认:None)
Python日志选项:
-v, --verbose 详细输出。将日志记录级别设置为INFO。(默认:None)
-vv, --debug 打印大量的调试语句。设置日志记录级别为 DEBUG。(默认:None)
--quiet 将日志记录级别设置为WARNING。(默认:None)
Core测试参数:
-s STORIES, --stories STORIES
包含测试故事的文件或文件夹。(默认:data)
--max-stories MAX_STORIES
要测试的最大故事数。(默认:None)
--e2e, --end-to-end
对联合操作和意图预测进行端到端评估。需要端到端的故事文件格式。(默认值:False)
-endpoints ENDPOINTS
模型服务和连接器的配置文件为yml文件。(默认:None)
--fail-on-prediction-errors
如果遇到预测错误,则会出现异常抛出。这可用于在测试期间验证故事。(默认值:False)
--url URL
如果提供,则从URL下载故事文件并训练就可以了。通过发送GET请求到提供的URL获取数据。(默认:None)
--evaluate-model-directory
通过`rasa train core --config <config-1> <config-2>`设置评估已训练的模型。所有在提供的目录中模型被评估和互相比较。(默认值:False)
NUL测试参数:
-u NLU, --nlu NLU
包含NLU数据的文件或文件夹。(默认:data)
--out OUT
在评估期间创建的任何文件的输出路径。(默认:results)
--report [REPORT]
用于保存意图/实体度量报告的输出路径。(默认:None)
--successes [SUCCESSES]
保存成功预测的输出路径。(默认:None)
--errors ERRORS
保存模型错误的输出路径。(默认:errors.json)
--histogram HISTOGRAM
置信直方图的输出路径。(默认:hist.png)
--confmat CONFMAT
混淆矩阵图的输出路径。(默认:confmat.png)
-c CONFIG [CONFIG ...], --config CONFIG [CONFIG ...]
模型配置文件。如果传递单个文件并选择交叉验证模式,交叉验证执行,如果传递多个配置或配置的文件夹,模型将直接被训练和比较。(默认:None)
训练和测试数据拆分
要创建NLU数据的拆分,请运行:
rasa data split nlu
可以使用以下参数指定训练数据,百分比和输出目录:
用法: rasa data split nlu [-h] [-v] [-vv] [--quiet] [-u NLU]
[--training-fraction TRAINING_FRACTION] [--out OUT]
可选参数:
-h, --help 显示帮助消息并退出。
-u NLU, --nlu NLU
包含NLU数据的文件或文件夹。(默认:data)
--training-fraction TRAINING_FRACTION
训练数据所占百分比。(默认值:0.8)
--out OUT
存储拆分文件的目录。(默认值:train_test_split)
Python日志选项:
-v, --verbose 详细输出。将日志记录级别设置为INFO。(默认:None)
-vv, --debug 打印大量的调试语句。设置日志记录级别为 DEBUG。(默认:None)
--quiet 将日志记录级别设置为WARNING。(默认:None)
此命令将尝试在训练和测试中保持意图的比例相同。