前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Rasa 聊天机器人专栏(二):命令行界面

Rasa 聊天机器人专栏(二):命令行界面

作者头像
磐创AI
发布2019-12-12 18:22:15
3.7K0
发布2019-12-12 18:22:15
举报

作者 | VK

编辑 | 奇予纪

出品 | 磐创AI团队出品

命令行界面:

备忘单

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

代码语言:javascript
复制
使用示例训练数据,操作和配置文件创建新项目

创建新项目

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

代码语言:javascript
复制
rasa init

这将创建以下文件:

代码语言:javascript
复制
.
├── __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

训练模型

主要命令是:

代码语言:javascript
复制
rasa train

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

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

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

代码语言:javascript
复制
用法: 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 nlurasa train core

交互式学习

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

代码语言:javascript
复制
rasa interactive

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

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

代码语言:javascript
复制
用法: 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)

和你的助手交谈

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

代码语言:javascript
复制
rasa shell

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

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

代码语言:javascript
复制
rasa shell --debug

rasa shell的完整选项列表:

代码语言:javascript
复制
用法: 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模型,请运行:

代码语言:javascript
复制
rasa run

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

代码语言:javascript
复制
用法: 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)

运行你的操作服务:

代码语言:javascript
复制
rasa run actions

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

代码语言:javascript
复制
用法: 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) 

可视化故事

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

代码语言:javascript
复制
rasa visualize

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

其他参数是:

代码语言:javascript
复制
用法: 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) 

在测试数据上评估模型

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

代码语言:javascript
复制
rasa test

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

以下参数可用于rasa test

代码语言:javascript
复制
用法: 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数据的拆分,请运行:

代码语言:javascript
复制
rasa data split nlu

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

代码语言:javascript
复制
用法: 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) 

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

在Markdown和JSON之间转换数据

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

代码语言:javascript
复制
rasa data convert nlu

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

代码语言:javascript
复制
用法: 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:

代码语言:javascript
复制
rasa x

为了能够启动Rasa X,你需要安装Rasa X(可在此处,你需要进入一个Rasa项目。

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

以下参数可用于rasa x

代码语言:javascript
复制
用法: 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)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 磐创AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 命令行界面:
    • 备忘单
      • 创建新项目
        • 训练模型
          • 交互式学习
            • 和你的助手交谈
              • 启动服务
                • 启动操作服务(Action Server)
                  • 可视化故事
                    • 在测试数据上评估模型
                      • 训练和测试数据拆分
                        • 在Markdown和JSON之间转换数据
                        相关产品与服务
                        多因子身份认证
                        多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档