首页开发教程Rasa安装+构建对话机器人教程

Rasa安装+构建对话机器人教程

2025-05-27 302

Rasa是一个主要用于开发上下文感知的开源框架,而Rasa Pro是Rasa的商业版和专业代码产品‌,其具有额外的分析、安全性和可观察性等功能。接下来将由站长百科详细为大家介绍Rasa的基础概念、安装到构建对话机器人等多方面知识,帮助大家快速入门。

Rasa Pro是Rasa企业解决方案Rasa Platform的一部分。组成Rasa Platform的另一个产品是Rasa X/Enterprise。这是一个低代码的用户界面,支持对话式AI团队大规模审查和改进AI对话机器人。其必须同Rasa Pro一起使用。

一、Rasa简介

1、开源Rasa

开源Rasa是一个开源对话式AI平台,其可让你理解并维持对话,并通过一组API连接到消息传递频道和第三方系统。它提供了用于创建虚拟(数字)助手或对话机器人的模块。

2、Rasa Pro

Rasa Pro是一个由开源Rasa提供支持的对话式AI框架,其包括额外的功能、API和服务,可满足企业在安全性、可观察性混合规模方面的特定需求。

二、Rasa安装

1、环境配置

检查Python环境是否已经配置:

python3 –version

pip2 –version

注意:目前Rasa支持Python 3.7、3.8、3.9 和 3.10。请注意,仅3.4.x或更高版本支持Python 3.10。此外,苹果芯片机器的Python 3.10环境无法安装3.4.x,需要3.5.x或更高版本。

如果以上这些已经安装,则命令应该显示相关版本号,可以直接跳到下一步。否则,请按照如下说明进行安装。

在Ubuntu中,使用apt获取相关包,并使用pip安 virtualenv:

sudo apt update

sudo apt install python3-dev python3-pip

在windows中,确保安装了Microsoft VC++编译器,以便Python可以编译相关依赖项。你可以从Visual Studio获取编译器。下载安装程序并在列表中选择VC++构建工具。安装适用于Windows的64 位版本Python 3:C:\> pip3 install -U pip

2、虚拟环境配置(可选)

Rasa建议使用虚拟环境隔离Python项目。virtualenv和virtualenvwrapper等工具提供了隔离的Python环境,比在系统范围内安装包更干净(因为这可以防止依赖冲突)。它们还允许你在没有root权限的情况下安装扩展包。

在Ubuntu中,选择Python解释器并创建一个./venv目录来保存并创建一个新的虚拟环境:

python3 -m venv ./venv

激活虚拟环境:

source ./venv/bin/activate

在windows中,选择Python解释器并创建一个.\\venv目录来保存并创建一个新的虚拟环境:

C:\> python3 -m venv ./venv

激活虚拟环境:

C:\> .\venv\Scripts\activate

3、安装开源Rasa

首先确保你的pip已经更新到最新版本:

pip3 install -U pip

安装开源Rasa:

pip3 install rasa

1、遥测报告

当第一次运行开源Rasa时,你会看到一条消息通知你关于匿名使用数据的收集。具体建议在遥测文档中阅读更多关于如何收集数据及其用途的信息。

现在可以使用如下命令创建一个新项目:

rasa init

如果需要使用开发版本的开源Rasa,可以从GitHub上获取:

curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py | pythongit clone https://github.com/RasaHQ/rasa.gitcd rasapoetry install

2、额外依赖

对于某些机器学习算法,你需要安装额外的Python包。为了占用较小的空间默认并不会安装它们。

模型调优页面可以帮助你为对话机器人选择正确的配置并提醒你相关的其他依赖项。

3、安装全部

如果你不介意其他依赖项,可以使用:

pip3 install rasa[full]

来安装所有配置所需的依赖项。

4、Python 3.10依赖

如果你使用的是Linux系统,安装 rasa[full] 可能会因为 tokenizers 和 cryptography 安装包导致失败。

为了解决这个问题,你必须按照如下步骤安装 Rust 编译器:

apt install rustc && apt install cargo

初始化 Rust 编译器后,你应该重新启动控制台并校验安装:

rustc –version

如果 PATH 变量未自动设置,请执行:

export PATH=”$HOME/.cargo/bin:$PATH”

如果你使用的是macOS系统,安装 rasa[full](无论是通过 pip 还是源码安装)可能会因为 tokenizers 安装包导致失败。

为了解决这个问题,你必须按照如下步骤安装 Rust 编译器:

brew install rustuprustup-init

初始化 Rust 编译器后,你应该重新启动控制台并校验安装:

rustc –version

如果 PATH 变量未自动设置,请执行:

export PATH=”$HOME/.cargo/bin:$PATH”

5、spaCy依赖项

可以使用如下命令进行安装:

pip3 install rasa[spacy]

python3 -m spacy download en_core_web_md

注意:在zsh中,方括号被解释为命令行中的模式。要运行带有方括号的命令,你可以将带有方括号的参数放在引号中,例如 pip3 install ‘rasa[spacy]’,或使用反斜杠进行转义,例如 pip3 install rasa\[spacy\]。Rasa建议使用第一种方法(pip3 install ‘rasa[spacy]’),其可以在任意 shell 中正常运行。

这将安装开源 Rasa、spaCy 及其英语语言模型,其他语言模型也可用。建议至少使用中等大小的模型(_md)而不是 spaCy 默认的 en_core_web_sm 小模型。小模型占用更少的内存,但可能会降低意图分类的性能。

6、MITIE 依赖项

首先,运行:

pip3 install git+https://github.com/mit-nlp/MITIE.git

pip3 install rasa[mitie]

然后下载 MITIE 模型。所需的文件是 total_word_feature_extractor.dat。保存到任意路径,如果使用 MITIE,则需要告诉它在哪里可以找到这个文件(在本例中,其保存在项目目录的 data 文件夹中)。

7、升级版本

将已安装的 Rasa 升级至 PyPI 的最新版本:

pip3 install –upgrade rasa

要下载指定版本,需指定版本号:

pip3 install rasa==3.0

三、Rasa构建对话机器人

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

日志级别:

Rasa可以生成不同级别的日志信息(例如:警告、信息、错误等)。使用 –verbose(与 -v 相同)或 –debug(与 -vv 相同)作为可选命令行参数来控制期望的日志级别。除了命令行参数外,还有若干环境变量可以用于更精细化地控制日志输出。通过这些环境变量,可以设置例如 Matplotlib、Pika 和 Kafka 外部库产生的日志。这些变量遵循 Python 标准日志级别。目前支持如下环境变量:

  • LOG_LEVEL_LIBRARIES:这是一个用于配置开源 Rasa 所用主要库日志级别的通用环境变量。包括 Tensorflow,asyncio,APScheduler,SocketIO,Matplotlib,RabbitMQ,Kafka;
  • LOG_LEVEL_MATPLOTLIB:这是一个专门用于配置 Matplotlib 日志级别的环境变量;
  • LOG_LEVEL_RABBITMQ:这是一个专门用于配置 AMQP 库日志级别的环境变量,目前可以设置 aio_pika和 aiormq 的日志级别;
  • LOG_LEVEL_KAFKA:这是一个专门用于配置 kafka 日志级别的环境变量;
  • LOG_LEVEL_PRESIDIO:这是一个专门用于配置 Presidio 日志级别的环境变量,目前可以设置 presidio_analyzer和 presidio_anonymizer 的日志级别;
  • LOG_LEVEL_FAKER:这是一个专门用于配置 Faker 日志级别的环境变量。

通用配置(LOG_LEVEL_LIBRARIES)的优先级相比于专用配置(LOG_LEVEL_MATPLOTLIB,LOG_LEVEL_RABBITMQ 等)更低。命令行参数设置了最低级别的日志。这意味着可以与这些变量一同使用,例如:

LOG_LEVEL_LIBRARIES=ERROR LOG_LEVEL_MATPLOTLIB=WARNING LOG_LEVEL_KAFKA=DEBUG rasa shell –debug

上述命令会产生如下效果:

  • 默认处理比DEBUG 级别更高的消息(由于 –debug);
  • 对于 Matplotlib 库,处理比 WARNING级别更高的消息;
  • 对于 kafka,处理比 DEBUG级别更高的消息;
  • 对于其他未配置的库,处理比ERROR 级别更高的消息。

注意,命令行设置需要处理的最低级别日志消息,如下命令会将日志级别设置为 INFO(由于 –verbose),因此不会有任何调试信息展示(对库级别配置不会产生任何影响):

LOG_LEVEL_LIBRARIES=DEBUG LOG_LEVEL_MATPLOTLIB=DEBUG rasa shell –verbose

命令行日志级别设置了根日志的级别(它包含了重要的 coloredlogs 处理器)。这意味着即使环境变量设置一个库日志较低的日志级别,根日志也会拒绝来自该库的消息。如果没有指定,命令行日志级别将被设置为 INFO

rasa init:

该命令将会利用一些示例训练数据来配置一个完整的对话机器人:

rasa init

这将创建如下文件:

.├── actions│

├── __init__.py

│   └── actions.py

├── config.yml

├── credentials.yml

├── data│

├── nlu.yml│

└── stories.yml

├── domain.yml

├── endpoints.yml

├── models│

└── <timestamp>.tar.gz

└── tests

└── test_stories.yml

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

任何模型的命令行参数均需要这个项目设置,因此这是开始的最佳方式。无需任何额外的配置即可运行 rasa train,rasa shell 和 rasa test 命令。

rasa train:

如下命令将会训练一个开源 Rasa 模型:

rasa train

如果在目录中已经存在模型(默认在 models/ 下),只有修改过的模型才会被重新训练。例如,如果你只修改了 NLU 训练数据,则只有 NLU 部分会被训练。

如果希望单独训练 NLU 或对话模型,需要运行 rasa train nlu 或 rasa train core。如果只为其中之一提供了训练数据,则 rasa train 将会默认回退到这些命令之一。

rasa train 会将模型存储在 –out 定义的目录中,默认为 models/。模型的默认名称为 <timestamp>.tar.gz。如果想以不同的方式命名模型,可以通过 –fixed-model-name 参数来指定名称。

默认情况下,在训练模型之前需要运行验证。如果想跳过验证,可以使用 –skip-validation。如果想在收到验证警告时失败,可以使用 –fail-on-validation-warnings。–validation-max-history 类似于 rasa data validate 中的 –max-history 参数。

rasa interactive:

通过如下命令可以开启一个交互式学习会话:

rasa interactive

这将首先训练一个模型,然后启动一个交互式 Shell 会话。之后随着同对话机器人的交谈可以对其预测进行不断修正。如果 UnexpecTEDIntentPolicy 包含在流程中,则可以在任意对话抡次中触发 action_unlikely_intent,之后会显示:

The bot wants to run ‘action_unlikely_intent’ to indicate that the last user message was unexpectedat this point in the conversation. Check out UnexpecTEDIntentPolicy docs to learn more.

正如消息所述,这表示你尝试了一个不在当前的训练故事集预期的一个对话路径,因此建议将该路径添加到训练故事中。同其他对话机器人响应一样,你可以选择接受或拒绝此操作。

如果使用 –model 参数提供一个训练好的模型,则会跳过训练过程直接加载这个模型。

在交互式学习过程中,Rasa 将会可视化当前对话和训练数据中的一些相似对话,来帮助你追踪当前的进度。会话开始后,可以在 http://localhost:5005/visualization.html 中查看相关可视化。图表生成需要一些时间。运行 rasa interactive –skip-visualization 可以跳过可视化。

rasa shell:

运行如下命令可以启动一个聊天会话:

rasa shell

默认情况下会加载最新的训练模型。你也可以通过 –model 参数指定要加载的其他模型。

如果仅使用 NLU 模型启动 shell,rasa shell 将输出输入消息的预测意图和实体。

如果已经训练了一个组合 Rasa 模型,但你只想看模型从文本中提取的意图和实体,可以使用 rasa shell nlu。

要提高调试的日志记录级别,可以运行:rasa shell –debug

注意:

  • 为了在外部频道中查看问候语和会话起始行为,你可以通过显式发送 /session_start 作为第一条消息。否则,会话起始行为将按照会话配置中的描述开始;
  • 如下参数可以用于配置此命令。大部分参数同 rasa run 相同;
  • 在运行 rasa shell 时,–connector 参数将会始终被设置为 cmdline。这意味着 credentials 文件中的所有 credentials 都会被忽略,如果你为 –connector 参数指定了值,也将被忽略。

rasa run:

运行如下命令可以为训练好的模型启动一个服务:

rasa run

默认情况下,Rasa 服务使用 HTTP 进行通信。要使用 SSL 加密通讯并在 HTTPS 上运行服务,你需要提供一个有效的证书和对应的私钥文件。可以在 rasa run 命令中指定这些文件。如果在创建密钥文件过程中使用密码进行了加密,则还需要添加 –ssl-passowrd 参数。

rasa run –ssl-certificate myssl.crt –ssl-keyfile myssl.key –ssl-password mypassword

Rasa 模型监听每个可用的网络接口。通过 -i 命令行参数可以将其限制为特定的网络接口。

rasa run -i 192.168.69.150

Rasa 默认会连接到 credentials 文件中指定的所有频道。在 –connector 参数中指定频道的名称,可以仅连接一个频道并忽略 credentials 文件中的所有频道。

rasa run –connector rest

频道的名称需要同 credentials 文件中指定的名称相匹配。关于支持的频道请参见消息和语音频道。

rasa run actions:

运行如下命令可以使用 Rasa SDK 启动动作服务:

rasa run actions

rasa visualize:

运行如下命令可以在浏览器中可视化故事:

rasa visualize

如果故事存储于默认位置 data/ 以外的位置,可以通过 –stories 指定它们的位置。

rasa test:

运行如下命令可以利用测试数据评估模型:

rasa test

这会在以 text_ 开头的文件中定义的故事上端到端的测试最新训练的模型。通过指定 –model 参数可以选择一个不同的模型。

如果想要分开评估对话和 NLU 模型,可以运行如下命令:

rasa test core和rasa rest nlu

还可以在评估NLU模型和评估对话管理模型中找到有关每种测试类型参数的更多信息。

  • 广告合作

  • QQ群号:4114653

温馨提示:
1、本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。邮箱:2942802716#qq.com(#改为@)。 2、本站原创内容未经允许不得转裁,转载请注明出处“站长百科”和原文地址。

相关文章