Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >构建Rasa低成本的Docker开发部署环境

构建Rasa低成本的Docker开发部署环境

作者头像
coding01
发布于 2020-08-27 03:49:14
发布于 2020-08-27 03:49:14
3K00
代码可运行
举报
文章被收录于专栏:Coding01Coding01
运行总次数:0
代码可运行

今天想着如何快速的将 Rasa API 融入之前的项目中,如在我的公众号 coding01[1]里增加一个自动回复聊天机器人

长期以来,我一直用 Laradock[2],Laradock 本身也集成了一些好用的开发部署工具,如 Nginx,certbot 等,在学习使用 Rasa 时,想着以最快的速度构建开发部署 Rasa 接口,所以今天我主要采用常规的做法——基于 Nginx 和 Docker 部署 Rasa。

注:由于 Rasa X 自成体系,在学习过程中,我还是放在「学习 Kubernetes 的系列」中去了解 Rasa X 的使用。

前言

在之前的文章中,有描述过如何在公众号里加入自动聊天机器人的文章,欢迎大家查阅:有机器人要菜单没什么用[3],文章里利用 EasyWeChat 和 ChatterBot 简单搭建一个公众号「自动回复机器人」,利用 EasyWeChat 桥接好公众号和机器人。今天的目的其实就是「把 ChatterBot 替换成 Rasa」。

起点:docker-compose

通过 rasa init 或者在 rasa 已有项目目录下创建 docker-compose.yml文件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: '3.0'
services:
  rasa:
    image: rasa/rasa:1.10.8-full
    ports:
      - 5005:5005
    volumes:
      - ./:/app
    command:
      - run

执行 docker-compose up -d,看看效果:

发一个 api 请求:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -XPOST http://localhost:5005/webhooks/rest/webhook \
  -H "Content-type: application/json" \
  -d '{"sender": "test", "message": "hello"}'

加入 actions 镜像

第一步,在项目根目录创建 actions 文件夹,并将我们的 actions 代码移到文件夹 actions 下,同时创建空的 actions/__init__.py 文件,保证我们的 rasa/rasa-sdk 镜像自动找到 actions/actions.py:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir actions
mv actions.py actions/actions.py
touch actions/__init__.py

第二步,如果我们的 actions 需要用到第三方插件,则可以在 actions 下创建文件 requirements-actions.txt

第三步,创建 Dockerfile 文件,构建镜像。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Extend the official Rasa SDK image
FROM rasa/rasa-sdk:2.0.0a1

# Use subdirectory as working directory
WORKDIR /app

# Copy any additional custom requirements, if necessary (uncomment next line)
# COPY actions/requirements-actions.txt ./

# Change back to root user to install dependencies
USER root

# Install extra requirements for actions code, if necessary (uncomment next line)
# RUN pip install -r requirements-actions.txt

# Copy actions folder to working directory
COPY ./actions /app/actions
# By best practices, don't run the code with root user
USER 1001

构建镜像:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker build . -t yemeishu/rasaactions:0.0.1

// 过程
Sending build context to Docker daemon  25.29MB
Step 1/5 : FROM rasa/rasa-sdk:2.0.0a1
 ---> 2824b7c5c4ea
Step 2/5 : WORKDIR /app
 ---> Using cache
 ---> 3a5f4ca5a749
Step 3/5 : USER root
 ---> Using cache
 ---> 4aea165d622a
Step 4/5 : COPY ./actions /app/actions
 ---> 88412ef28945
Step 5/5 : USER 1001
 ---> Running in 185f70fa52aa
Removing intermediate container 185f70fa52aa
 ---> fa9dc8d4555e
Successfully built fa9dc8d4555e
Successfully tagged yemeishu/rasaactions:0.0.1

发布镜像:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker push yemeishu/rasaactions:0.0.1

项目关联 actions 镜像

在之前的 docker-compose.yml 增加 app service。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: '3.0'
services:
  rasa:
    image: rasa/rasa:1.10.8-full
    ports:
      - 5005:5005
    volumes:
      - ./:/app
    command:
      - run
  app:
    image: yemeishu/rasaactions:0.0.1
    expose: 5055

这样就可以通过端口 5005,将服务提供给 rasa service 使用,即可以在 endpoints.yml 修改关联路径。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
action_endpoint:
  url: http://app:5055/webhook

此处验证:「略」

与 Laradock nginx 连接

到此,基本的配置都没问题了,接下来我们加入中文回复。

具体参考:Rasa 开篇之 hello world[4]

训练我们的 model:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose exec rasa rasa tran

重启容器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker-compose restart rasa

在与 Laradock nginx 连接之前,我们需要将容器 rasa 关联到 laradock network 上:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker network connect laradock_backend hello_rasa_1

可以通过命令查看:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
docker network inspect laradock_backend

关联后,就可以在 nginx 配置上用容器名字代替 ip 关联了,具体 nginx 配置文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
upstream chatbot {
      server hello2_rasa_1:5005 weight=10 max_fails=3 fail_timeout=30s;
}

server {

    listen 80;
    listen [::]:80;

    server_name chatbot.test;

    location / {
        proxy_pass http://chatbot/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt/;
        log_not_found off;
    }
}

最后在 /etc/hosts 加入域名关联,就可大功告成。

我们执行下请求命令:

总结

回到开头的说的如何在公众号加入聊天功能,将在下回继续了。

今天主要学到的知识点在于,如何用最小的 docker 配置(摒弃 Rasa X),完成和 nginx 容器关联,获得请求接口,以备后续调用。

参考

[1] coding01 https://mp.weixin.qq.com/s/lOJmUEH7QcewHngcLJbssw

[2] Laradock http://laradock.io

[3] 有机器人要菜单没什么用 https://mp.weixin.qq.com/s/j-3mBrchblQgSyVZ5gGUSQ

[4] Rasa 开篇之 hello world https://mp.weixin.qq.com/s/HpPxrG2Sr67Sz_nEJHH2PA

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 coding01 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
什么是Rasa智能机器人?如何与LLM结合?
之前写过一篇介绍用Rasa结合类似于GPT这种LLM应用的项目:RasaGpt——一款基于Rasa和LLM的聊天机器人平台
山行AI
2023/06/14
7.1K0
什么是Rasa智能机器人?如何与LLM结合?
Rasa 聊天机器人专栏(八):在Docker上运行Rasa
这是如何使用Docker构建Rasa助手的指南。如果你之前没有使用过Rasa,我们建议你先Rasa教程开始。
磐创AI
2020/03/04
6K0
从零开始搭建本地 Docker 开发环境
在开发之前,首先你需要安装各种开发工具和服务支持到你的开发环境当中,可能会出依赖问题,环境变量问题,端口冲突,经编译库问题等等。
一墨编程学习
2019/05/10
4.1K0
从零开始搭建本地 Docker 开发环境
Rasa X 安装之Docker Compose 模式
如上文所说的「Local Mode」[1]模式更多的是方便我们本地测试,如果需要提供给外界服务,我们还需要其他模式,官网提供的三种:
coding01
2020/08/07
2.6K0
【好玩儿的Docker项目】10分钟搭建一个轻量、快速、美观的个人导航页面——Flare
一直有小伙伴想要咕咕介绍用docker搭建导航页面,今天咕咕就推荐一个苏洋大佬受到Flame启发,在此基础上优化而来的新项目Flare
二十五画生
2023/02/27
9.3K0
【好玩儿的Docker项目】10分钟搭建一个轻量、快速、美观的个人导航页面——Flare
从零开始 - Docker部署前后端分离项目(三)
整个项目文件,里面有两个文件夹,nginx_docker用于存放前后端静态文件,XZAndroidPlatform是整个django项目文件。
梦无矶小仔
2022/08/22
2.2K0
从零开始 - Docker部署前后端分离项目(三)
使用 Docker 让部署 Django 项目更加轻松
那么我们有没有办法,让本地开发环境和线上环境保持一致?这样我们在部署上线前,就可以在本地进行验证,只要验证没问题,我们就有 99% 的把握保证部署上线后也没有问题(1%保留给程序玄学)。
HelloGitHub
2021/05/14
1.6K0
docker-compose是个好东西,越用越香
前文演示了在单一容器中部署 Nginx和ASP.NET Core WebApp, 正在前文评论区某大牛指出的,容器化部署 nginx+ASP.NET Core 有更符合实战的部署选择:多容器独立部署。
有态度的马甲
2020/05/26
2.4K0
docker-compose是个好东西,越用越香
如何搭建及使用 docker registry
腾讯云容器服务团队
2016/12/26
3.4K0
如何搭建及使用 docker registry
实战docker,构建nginx反向代理tomcat,学习link和docker-compose
程序员欣宸
2018/01/04
1.6K0
实战docker,构建nginx反向代理tomcat,学习link和docker-compose
RasaGpt——一款基于Rasa和LLM的聊天机器人平台
在ChatGpt引领的AI浪潮下,一大批优秀的AI应用应运而生,其中不泛一些在某些行业或领域中探索AI技术或应用落地的案例。不得不说,AI正在重塑各个行业。众所周知,Rasa是一个非常优秀的,用于构建开源AI助手的框架,它允许开发人员创建自然语言对话系统,包括聊天机器人、语音助手和智能助手。本文介绍的是一个基于Rasa和Langchain之上,通过将LLM的能力赋予Rasa建立的聊天机器人平台。
山行AI
2023/06/14
4.9K0
RasaGpt——一款基于Rasa和LLM的聊天机器人平台
Docker-Compose环境搭建和部署SpringBoot项目
3.进入cd util-linux-2.33目录,输入./configure --without-ncurses命令进行check
用户2032165
2019/04/21
3.9K0
【好玩儿的Docker项目】任何地方无障碍快速访问!ChatGPT Next Web——一键免费部署你的私人 ChatGPT 网页应用
今天来分享一个私人 ChatGPT 网页应用——ChatGPT Next Web,让你随时随地方便使用ChatGPT!
二十五画生
2023/04/17
6.1K0
【好玩儿的Docker项目】任何地方无障碍快速访问!ChatGPT Next Web——一键免费部署你的私人 ChatGPT 网页应用
容器化部署博客(2)—— docker-compose 部署 izone 博客
在刚接触到微服务的时候就听说过容器化这个概念,很巧的是,我在公司目前主要负责的事情就是服务容器化,所以前段时间我已经把自己的博客支持了容器化部署,并且已经把服务器上面的虚拟化部署方式切换为容器化部署。
Hopetree
2022/09/26
7170
容器化部署博客(2)—— docker-compose 部署 izone 博客
ASP.NET Core 实战:使用 Docker 容器化部署 ASP.NET Core + MySQL + Nginx
  在之前的文章(ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路)中,我介绍了如何在 Linux 环境中安装 .NET Core SDK / .NET Core Runtime、Nginx、MySQL,以及如何将我们的 ASP.NET Core MVC 程序部署到 Linux 上,同时,使用 supervisor 守护程序守护我们的 .NET Core 程序。如果,你有看过那篇文章,并且和我一样是个 Linux 小白用户的话,可能第一感觉就是,把 .NET Core 项目部署在 IIS 上也挺好。
程序员宇说
2019/09/11
5.2K0
ASP.NET Core 实战:使用 Docker 容器化部署 ASP.NET Core + MySQL + Nginx
一步步学会用docker部署应用(nodejs版)
docker是一种虚拟化技术,可以在内核层隔离资源。因此对于上层应用而言,采用docker技术可以达到类似于虚拟机的沙盒环境。这大大简化了应用部署,让运维人员无需陷入无止境繁琐的依赖环境及系统配置中;另一方面,容器技术也可以充分利用硬件资源,做到资源共享。
欲休
2019/03/11
2.4K0
spug自动化运维平台部署与使用
检查git clone权限问题,更新ssh-key后,确认docker内 /root/.ssh/id_rsa 是否更新,是否可以访问 gitlab
IT不难
2023/11/17
8740
spug自动化运维平台部署与使用
使用docker搭建Django框架与Nginx多域名配置
在命令行进入/code/docker/django目录,执行 docker-compose build构建django镜像到本地,完成会返回success
用户2475223
2019/12/17
2.1K0
使用docker搭建Django框架与Nginx多域名配置
Docker-Compose初体验
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
Wu_Candy
2022/07/04
2660
Docker-Compose初体验
Docker 部署Django博客项目
我之前部署我的博客项目(Django应用),没用Docker,直接借助的宝塔Linux服务器面板在服务器上部署的,部署起来也是十分的方便,使用了Django+Nginx+Supervisor+Gunicorn部署,可查看我写过的一片博客:Centos安装python3并使用Nginx+Gunicorn+virtualenv+supervisor来部署django项目。
緣來
2020/01/02
1.5K0
Docker 部署Django博客项目
推荐阅读
相关推荐
什么是Rasa智能机器人?如何与LLM结合?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验