docker $PWD路径_Rasa 聊天机器人专栏(八):在Docker上运行Rasa

74627c3cda6142bc5746249d28442171.png

作者 | VK

编辑 | 奇予纪

出品 | 磐创AI团队出品

在Docker上运行Rasa

这是如何使用Docker构建Rasa助手的指南。如果你之前没有使用过Rasa,我们建议你先Rasa教程 开始。

安装Docker

如果你不确定是否安装了Docker,可以通过运行下面的命令来检查:

docker -v && docker-compose -v# Docker version 18.09.2, build 6247962# docker-compose version 1.23.2, build 1110ad01
如果你的计算机上安装了Docker,则输出应显示已安装的Docker和Docker Compose版本。如果该命令不起作用,则必须安装Docker 。

使用Rasa和Docker构建助手

本节将介绍以下内容:
  • 创建你的Rasa项目并训练初始模型
  • 通过Docker与你的AI助手交谈
  • 选择Docker镜像标记
  • 使用Docker训练你的Rasa模型
  • 使用Docker与你的助手交谈
  • 使用Docker运行Rasa服务
创建项目
你将使用 rasa init 命令来创建项目。唯一的区别是你将使用镜像 rasa/rasa 在Docker容器中运行Rasa。,请运行以下命令初始化项目:
docker run -v $(pwd):/app rasa/rasa init --no-prompt
这个命令是什么意思?
  • -v $(pwd):/app将当前工作目录挂载到Docker容器中的工作目录。这意味着你在计算机上创建的文件将在容器内可见,并且容器中创建的文件将同步回你的计算机。
  • rasa/rasa是要运行的docker镜像的名称。
  • Docker镜像将rasa命令作为其入口点,这意味着你不必键入rasa init,只需init即可。
运行此命令将产生大量输出:
  • 创建了Rasa项目
  • 使用项目的训练数据训练初始模型
要检查命令是否正确完成,请查看工作目录的内容:
ls -1

初始项目文件应该都在那里,以及包含训练的模型的models目录。

注意: 默认情况下,Docker以root用户身份运行容器。因此,这些容器创建的所有文件都将由root拥有。如果要使用其他用户运行容器,请参阅docker和docker-compose的文档。

和你的助手交谈

要与新训练的助手交谈,请运行以下命令:

docker run -it -v $(pwd):/app rasa/rasa shell
这将启动一个shell,你可以在其中与助手聊天。请注意,此命令包含参数 -it ,这意味着你以交互方式运行Docker,并且你可以通过命令行提供输入。对于需要交互式输入的命令,例如 rasa shellrasa interactive ,你需要传递 -it 参数。

自定义你的模型

选择一个标记
为了使镜像尽可能小,我们发布了安装了不同依赖项的 rasa / rasa 镜像的不同标记。有关依赖性的更多信息,请参阅选择管道 。 所有标签都以版本开头 - latest 标记对应于当前的主版本。标记是:
  • {version}
  • {version}-spacy-en
  • {version}-spacy-de
  • {version}-mitie-en
  • {version}-full
{version} 标记包含运行 supervised_embeddings 管道所需的所有依赖项。如果你使用具有预训练词向量的组件,则需要选择相应的标记。或者,你可以使用 -full 标记,其中包括所有管道依赖项。 注意: 你可以在此处查看Rasa Docker镜像的所有版本和标记。
使用Docker训练自定义Rasa模型
编辑 config.yml 文件以使用所需的管道,并将NLU和Core数据放入 data/ 目录中。现在,你可以通过运行下面的命令来训练你的Rasa模型:
docker run \  -v $(pwd):/app \  rasa/rasa:latest-full \  train \    --domain domain.yml \    --data data \    --out models
这是该命令中发生的事情:
  • -v$(pwd):/app:将项目目录安装到Docker容器中,以便Rasa可以使用你的训练数据训练模型
  • rasa / rasa:latest-full:使用标记为latest-full的Rasa镜像
  • train:在容器内执行rasa train命令。有关更多信息,请参阅命令行界面。
在这种情况下,我们还传递了域文件,训练数据和模型输出目录的位置值,以显示如何自定义这些值。你也可以省略这些,因为我们传递了默认值。 注意: 如果你使用的是自定义NLU组件或策略,则必须将模块文件添加到Docker容器中。你可以通过挂载文件或将其包含在你自己的自定义镜像中来实现此目的(例如,如果自定义组件或策略具有额外的依赖关系)。通过设置环境变量PYTHONPATH = $PYTHONPATH:,确保模块位于Python模块搜索路径中。

运行Rasa服务

要在生产中运行AI助手,请在 credentials.yml 中配置所需的语音和消息通道 。如果此文件不存在,请使用以下命令创建:
touch credentials.yml
然后根据你连接的通道进行编辑。之后,运行训练模型:
docker run \  -v $(pwd)/models:/app/models \  rasa/rasa:latest-full \  run
命令说明:
  • -v $(pwd)/models:/app/models:在容器中挂载已训练的Rasa模型目录
  • rasa/rasa:latest-full:使用标记为latest-full的Rasa镜像
  • run:执行rasa run命令。有关更多信息,请参阅命令行界面

使用Docker Compose运行多个服务

要将Rasa与其他服务(例如用于自定义操作的服务)一起运行,建议使用Docker Compose。Docker Compose提供了一种简单的方法,可以将多个容器一起运行,而无需运行多个命令。

首先创建一个名为docker-compose.yml的文件:

touch docker-compose.yml

将以下内容添加到文件中:

version: '3.0'services:  rasa:    image: rasa/rasa:latest-full    ports:      - 5005:5005    volumes:      - ./:/app    command:      - run

该文件以你要使用的Docker Compose规范版本开头。每个容器都在docker-compose文件中声明为service 。第一项服务是rasa服务。

该命令类似于docker run命令。ports部分定义容器和你的主机系统之间的端口映射。在这种情况下,它会在你的主机的5005端口上提供5005rasa服务。这是Rasa的REST Channel接口的端口。

注意: 由于Docker Compose启动了一组Docker容器,因此在执行run命令后不再可能连接到单个容器的命令行。

要运行docker-compose.yml中配置的服务,请执行:

docker-compose up

添加自定义操作

要创建更复杂的助手,你需要使用自定义操作 。继续上面的示例,你可能希望添加一个操作,告诉用户一个笑话来给他们加油。
创建自定义操作

首先在actions目录中创建自定义操作:

mkdir actions# Rasa SDK需要一个python模块。# 因此,请确保你在目录中包含此文件。touch actions/__init__.pytouch actions/actions.py

然后使用Rasa SDK构建自定义操作,例如:

import requestsimport jsonfrom rasa_sdk import Actionclass ActionJoke(Action):  def name(self):    return "action_joke"  def run(self, dispatcher, tracker, domain):    request = requests.get('http://api.icndb.com/jokes/random').json()  # 调用api    joke = request['value']['joke']  # 从返回的json响应中提取一个笑话    dispatcher.utter_message(joke)  # 将消息发送回用户    return []
接下来,在故事和域文件中添加自定义操作。继续使用 rasa init 中的示例机器人,将 data/stories.md 中的 utter_cheer_up 替换为自定义操作 action_joke ,并将 action_joke 添加到域文件中的操作。 #### 添加操作服务 自定义操作由操作服务运行。要将其与Rasa实例一起运行,请将服务 action_server 添加到 docker-compose.yml :
version: '3.0'services:  rasa:    image: rasa/rasa:latest-full    ports:      - 5005:5005    volumes:      - ./:/app    command:      - run  action_server:    image: rasa/rasa-sdk:latest    volumes:      - ./actions:/app/actions
这会为包含操作服务的Rasa SDK提取镜像,将自定义操作安装到其中,然后启动服务。 要指示Rasa使用操作服务,你必须告诉Rasa它的位置。将此添加到你的 endpoints.yml (如果它不存在,创建它):
action_endpoint:  url: http://action_server:5055/webhook
运行 docker-compose up 以与Rasa一起启动操作服务。
添加自定义依赖项
如果你的自定义操作具有系统或Python库的其他依赖项,则可以通过扩展官方镜像来添加这些依赖项。 为此,请创建一个名为 Dockerfile 的文件,在该文件中扩展官方镜像并添加自定义依赖项。例如:
# 扩展官方Rasa SDK映像FROM rasa/rasa-sdk:latest# 添加自定义系统库(例如git)RUN apt-get update && \    apt-get install -y git# 添加自定义python库(例如jupyter)RUN pip install --no-cache-dir jupyter
然后,你可以通过以下命令构建镜像,并在 docker-compose.yml 中使用它而不是 rasa/ rasa-sdk 镜像。
docker build . -t :

添加自定义跟踪器存储

默认情况下,所有对话都保存在内存中。这意味着一旦重新启动Rasa服务,所有对话都将丢失。如果你想要保留对话,可以使用其他跟踪器存储 。
使用PostgreSQL作为跟踪器存储

首先将PostgreSQL添加到docker-compose文件中:

postgres:  image: postgres:latest
然后将PostgreSQL添加到端点配置 config/endpoints.yml 文件中的的 tracker_store 部分:
tracker_store:  type: sql  dialect: "postgresql"  url: postgres  db: rasa
使用MongoDB作为跟踪器存储
首先将MongoDB添加到docker-compose文件中。下面的示例添加了MongoDB以及一个UI(你可以跳过此步骤),可以通过 localhost:8081 访问。MongoDB实例的用户名和密码指定为 rasaexample
mongo:  image: mongo  environment:    MONGO_INITDB_ROOT_USERNAME: rasa    MONGO_INITDB_ROOT_PASSWORD: examplemongo-express:  image: mongo-express  ports:    - 8081:8081  environment:    ME_CONFIG_MONGODB_ADMINUSERNAME: rasa    ME_CONFIG_MONGODB_ADMINPASSWORD: example
然后将MongoDB添加到端点配置 endpoints.yml 文件中的的 tracker_store 部分:
tracker_store:  type: mongod  url: mongodb://mongo:27017  username: rasa  password: example

然后使用docker-compose up启动所有组件。

使用Redis作为跟踪器存储

首先将Redis添加到docker-compose文件中:

redis:  image: redis:latest

然后将Redis添加到端点配置endpoints.yml文件中的tracker_store部分:

tracker_store:  type: redis  url: redis
使用自定义跟踪器存储实现
如果你有踪器存储的自定义实现,则有两个选项可将此存储添加到Rasa:
  • 扩展Rasa镜像
  • 作为volume安装
然后将所需配置添加到端点配置 endpoints.yml 文件中,如跟踪器存储 中所述。如果你希望跟踪器存储组件(例如某个数据库)成为Docker Compose文件的一部分,请在其中添加相应的服务和配置。

原文链接:https://rasa.com/docs/

小白也能学会的PyTorch入门系列

专栏目录

1.Rasa 聊天机器人专栏开篇:简介与安装

2.Rasa 聊天机器人专栏(一):基本原理介绍

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

4.Rasa 聊天机器人专栏(三):架构介绍

5.Rasa 聊天机器人专栏(四):消息和语音通道

6.Rasa 聊天机器人专栏(五):模型评估

7.Rasa 聊天机器人专栏(六):验证数据

8.Rasa 聊天机器人专栏(七):运行服务

9.Rasa 聊天机器人专栏(八):在Docker上运行Rasa

10.Rasa 聊天机器人专栏(九):云存储

a3fffa7f85fdc8d77b6375fc21ab9fe7.png 长按扫码,关注我们

你与未来只差一个

磐创AI

4682558a54f315c4bc2349bd651994b7.gif

点击

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值