Rasa项目实战:如何部署Rasa Action Server
前言
在构建基于Rasa的对话系统时,Action Server扮演着至关重要的角色。它负责执行自定义动作,如查询数据库、调用外部API等复杂操作。本文将详细介绍如何在生产环境中部署Rasa Action Server,帮助开发者构建稳定可靠的对话系统后端服务。
部署准备
在开始部署前,我们需要确保环境满足以下要求:
1. 命令行工具检查
首先需要确认已安装Kubernetes或OpenShift命令行工具:
# 对于Kubernetes
kubectl version --short --client
# 对于OpenShift
oc version --client
如果命令执行失败,需要先安装对应的CLI工具。
2. 集群连接验证
确保CLI工具已正确连接到目标集群:
# Kubernetes
kubectl version --short
# OpenShift
oc version
3. Helm工具安装
Helm是Kubernetes的包管理工具,我们需要安装Helm 3.5或更高版本:
helm version --short
部署步骤
1. 创建命名空间
建议为Action Server创建独立的命名空间,避免与其他服务冲突:
kubectl create namespace rasa-actions
2. 部署Action Server
使用Helm进行部署:
# 添加Rasa Helm仓库
helm repo add rasa https://helm.rasa.com
# 部署Action Server
helm install \
--namespace rasa-actions \
my-rasa-actions \
rasa/rasa-action-server
3. 访问服务
默认情况下,Action Server仅在集群内部可访问。如需本地访问,可使用端口转发:
export SERVICE_PORT=$(kubectl get --namespace rasa-actions -o jsonpath="{.spec.ports[0].port}" services my-rasa-actions)
kubectl port-forward --namespace rasa-actions svc/my-rasa-actions ${SERVICE_PORT}:${SERVICE_PORT} &
服务将在http://127.0.0.1:${SERVICE_PORT}
可用。
构建自定义Action Server镜像
默认部署使用基础镜像,实际项目中我们需要构建包含自定义动作的镜像。
手动构建方法
- 确保动作代码位于
actions/actions.py
- 如有额外依赖,创建
actions/requirements-actions.txt
- 创建Dockerfile:
FROM rasa/rasa-sdk:3.0.0
WORKDIR /app
# 如需安装额外依赖
COPY actions/requirements-actions.txt ./
USER root
RUN pip install -r requirements-actions.txt
COPY ./actions /app/actions
USER 1001
- 构建并推送镜像:
docker build . -t myaccount/rasa-actions:v1
docker push myaccount/rasa-actions:v1
使用自定义镜像
创建values.yaml文件:
image:
name: "myaccount/rasa-actions"
tag: "v1"
更新部署:
helm upgrade --namespace rasa-actions --reuse-values \
-f values.yaml my-rasa-actions rasa/rasa-action-server
自动化构建方案
对于持续集成场景,可以使用GitHub Actions自动化构建流程:
- 在仓库中创建
.github/workflows/action_server.yml
- 配置DockerHub凭据为GitHub Secrets
- 示例工作流配置:
on:
push:
branches: [main]
paths: ['actions/**']
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build and push
uses: RasaHQ/action-server-gha@main
with:
docker_image_name: 'myaccount/rasa-actions'
docker_registry_login: ${{ secrets.DOCKER_HUB_LOGIN }}
docker_registry_password: ${{ secrets.DOCKER_HUB_PASSWORD }}
docker_image_tag: ${{ github.sha }}
连接Rasa主服务
最后,将Action Server与Rasa主服务连接:
- 创建rasa-values.yaml:
rasa-action-server:
external:
enabled: true
url: "http://my-rasa-actions/webhook"
- 更新Rasa部署:
helm upgrade -n rasa --reuse-values -f rasa-values.yaml \
my-rasa rasa/rasa
总结
本文详细介绍了Rasa Action Server的部署流程,从环境准备到实际部署,再到自定义镜像构建和自动化方案。通过合理的部署配置,可以确保Action Server稳定运行,为对话系统提供可靠的后端服务支持。
在实际项目中,建议结合CI/CD流程实现自动化构建和部署,并定期更新镜像版本,以确保服务的稳定性和安全性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考