1. 磐创AI-开放猫官方网站首页
  2. 系列教程
  3. Rasa

Rasa 命令行界面【3】—Rasa 中文官方文档,聊天机器人,上下文管理,多伦对话,意图识别,填槽

本文是全系列中第4 / 10篇:Rasa 聊天机器人

命令行界面

[TOC]

备忘单

命令行界面(CLI)为你提供易于记忆的常见任务命令。

命令 作用说明
rasa init 使用示例训练数据,操作和配置文件创建新项目
rasa train 使用你的NLU数据和故事训练模型,在./model中保存训练的模型
rasa interactive 启动交互式学习会话,通过聊天创建新的训练数据
rasa shell 加载已训练的模型,并让你在命令行上与助手交谈
rasa run 使用已训练的的模型启动Rasa服务。有关详细信息,请参阅运行服务文档
rasa run actions 使用Rasa SDK启动操作服务
rasa visualize 可视化故事
rasa test 使用你的测试NLU数据和故事测试已训练的Rasa模型
rasa data split nlu 根据指定的百分比执行NLU数据的拆分
rasa data convert nlu 在不同格式之间转换NLU训练数据
rasa x 在本地启动Rasa X
rasa -h 显示所有可用命令

创建新项目

以下命令使用示例训练数据为你建立一个完整的项目。

[code lang=text]
rasa init
[/code]

这将创建以下文件:

[code lang=text]
.
├── __init__.py
├── actions.py
├── config.yml
├── credentials.yml
├── data
│ ├── nlu.md
│ └── stories.md
├── domain.yml
├── endpoints.yml
└── models
└── <timestamp>.tar.gz
[/code]

rasa init命令将询问你是否要使用此数据训练初始模型。如果你回答否,则models目录将为空。

随着此项目建立,一些常用命令非常容易记住。要训​​练模型,输入rasa train;在命令行上与模型通信,使用rasa shell;测试模型类型使用rasa test

训练模型

主要命令是:

[code lang=text]
rasa train
[/code]

该命令训练Rasa模型,该模型结合了Rasa NLU和Rasa Core模型。如果你只想训练NLU或Core模型,你可以运行rasa train nlurasa train core。但是,如果训练数据和配置没有改变,Rasa将自动跳过训练Core或NLU。

rasa train将训练好的模型存储在--out指定的目录中。模型的名称默认是<timestamp>.tar.gz。如果要为模型命名,可以使用--fixed-model-name指定名称。

以下参数可用于配置训练过程:

[code lang=text]
用法: 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)
[/code]

注意:
使用rasa train训练模型时,确保Core和NLU的训练数据存在。如果仅存在一种模型类型的训练数据,则该命令将根据提供的训练文件自动回退到rasa train nlurasa train core

交互式学习

与你的助手开始交互式学习会话,运行

[code lang=text]
rasa interactive
[/code]

如果使用--model参数提供训练模型,则使用提供的模型启动交互式学习过程。如果没有指定模型,且没有其他目录传递给--data参数,rasa interactive将使用位于data/目录中的数据训练一个新的Rasa模型。在训练初始模型之后,交互式学习会话开始。如果训练数据和配置没有改变,将跳过训练。

可以为rasa interactive设置的参数的完整列表:

[code lang=text]
用法: 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)
[/code]

和你的助手交谈

要在命令行上与助手开始聊天,请运行:

[code lang=text]
rasa shell
[/code]

应该用于与机器人交互的模型可以由--model指定。如果仅使用NLU模型启动shell,则rasa shell允许你获取在命令行上输入的任何文本的意图(intent)和实体。如果你的模型包含经过训练的Core模型,你可以与机器人聊天,并查看机器人预测的下一步操作。如果你已经训练了一个组合的Rasa模型,但是想要查看模型从文本中提取的意图和实体,你可以使用命令rasa shell nlu

提高日志记录级别以便调试,请运行:

[code lang=text]
rasa shell –debug
[/code]

rasa shell的完整选项列表:

[code lang=text]
用法: 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)
[/code]

启动服务

启动服务运行Rasa模型,请运行:

[code lang=text]
rasa run
[/code]

以下参数可用于配置Rasa服务:

[code lang=text]
用法: 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)
[/code]

有关其他参数的详细信息,请参阅运行服务。有关所有端点的详细文档,请参阅Rasa HTTP API文档。

启动操作服务(Action Server)

运行你的操作服务:

[code lang=text]
rasa run actions
[/code]

以下参数可用于调整服务设置:

[code lang=text]
用法: 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)
[/code]

可视化故事

打开浏览器标签页以图的形式显示故事:

[code lang=text]
rasa visualize
[/code]

通常,data目录中的训练故事是可视化的。如果你的故事位于其他地方,则可以使用--stories指定其位置。

其他参数是:

[code lang=text]
用法: 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)
[/code]

在测试数据上评估模型

要在测试数据上评估模型,请运行:

[code lang=text]
rasa test
[/code]

使用--model指定要测试的模型。查看有关[评估NLU模型]和[评估Core模型]的更多详细信息。

以下参数可用于rasa test

[code lang=text]
用法: 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)
[/code]

训练和测试数据拆分

要创建NLU数据的拆分,请运行:

[code lang=text]
rasa data split nlu
[/code]

你可以使用以下参数指定训练数据,百分比和输出目录:

[code lang=text]
用法: 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)
[/code]

此命令将尝试在训练和测试中保持意图的比例相同。

在Markdown和JSON之间转换数据

要将NLU数据从LUIS数据格式,WIT数据格式,Dialogflow数据格式,JSON或Markdown转换为JSON或Markdown,请运行:

[code lang=text]
rasa data convert nlu
[/code]

你可以使用以下参数指定输入文件,输出文件和输出格式:

[code lang=text]
用法: rasa data convert nlu [-h] [-v] [-vv] [–quiet] –data DATA –out OUT
[-l LANGUAGE] -f {json,md}

可选参数:
-h, –help 显示帮助消息并退出。
–data DATA 包含Rasa NLU数据的文件或目录的路径。(默认 None)
–out OUT 保存Rasa格式的训练数据的文件。(默认 None)
-l LANGUAGE, –language LANGUAGE
数据的语种。(默认: en)
-f {json,md}, –format {json,md}
训练数据转换的输出格式。 (默认: None)

Python日志选项:
-v, –verbose 详细输出。将日志记录级别设置为INFO。(默认:None)
-vv, –debug 打印大量的调试语句。设置日志记录级别为 DEBUG。(默认:None)
–quiet 将日志记录级别设置为WARNING。(默认:None)
“`

### 启动Rasa X
Rasa X是一个工具,可帮助你构建,改进和部署由Rasa框架提供支持的AI助手。你可以在[此处]()找到有关它的更多信息。

你可以通过执行下面的命令来本地启动Rasa X:
[/code]

rasa x

[code lang=text]
<br />为了能够启动Rasa X,你需要安装Rasa X(可在[此处]()找到说明),你需要进入一个Rasa项目。

*注意*
*默认情况下,Rasa X在端口5002上运行。使用参数`–rasa-x-port`可以将其更改为任何其他端口。
*

以下参数可用于`rasa x`:
[/code]

用法: rasa x [-h] [-v] [-vv] [–quiet] [-m MODEL] [–data DATA] [–no-prompt]
[–production] [–rasa-x-port RASA_X_PORT] [–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]

可选参数:
-h, –help 显示帮助消息并退出。
-m MODEL, –model MODEL
已训练的Rasa模型的路径。如果目录指定,它将使用目录中的最新的模型。(默认:None)
–data DATA [DATA …]
Core和NLU数据文件的路径。(默认:data)
–no-prompt 自动提示或默认选项提示和忽略警告。(默认: False)
–production 在生产环境中运行Rasa X。(默认:False)
–rasa-x-port RASA_X_PORT
用于运行Rasa X服务的端口。(默认值:5002)
–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 英文网站:https://rasa.com/

Rasa 中文官方文档,聊天机器人,上下文管理,多伦对话,意图识别,填槽,中文聊天机器人开发必备手册:
http://rasachatbot.com/

磐创AI-中文聊天机器人
http://panchuangai.com/

原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2019/08/31/rasa_command_line_interface/

发表评论

登录后才能评论

联系我们

400-800-8888

在线咨询:点击这里给我发消息

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息