AI客服应用教程:从零搭建自动问答机器人
想自己搭一个能自动回答常见问题的AI客服,又担心流程太复杂?
这篇教程会带你从零开始,在一台云服务器上部署一个基于开源工具Rasa的客服机器人。
整个过程不需要写太多代码,重点是把环境装好、把问答数据喂进去,最后通过接口测试确认它能正常回复。
下面按实际操作的顺序展开。
先确认服务器环境和必备条件
建议准备一台至少2核4G内存的Linux云服务器(Ubuntu 22.04或CentOS 7以上),并确保能通过SSH登录。
操作系统需要自带Python 3.8以上版本,如果没有,先升级。
另外,确保服务器能访问外网,因为后续要拉取Docker镜像和Python包。
登录服务器后,先更新软件源并安装基础工具:
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git vim
如果使用CentOS,把apt换成yum即可。
接着检查Python版本:
python3 --version
如果低于3.8,建议用pyenv或系统包管理器安装新版本。
这里假设已满足要求。
用Docker快速拉起Rasa服务
Rasa是一个开源的对话式AI框架,适合用来做客服机器人。
为了简化依赖管理,我们用Docker来运行。
先安装Docker和Docker Compose:
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
执行完需要重新登录SSH,让用户组生效。
然后验证Docker是否可用:
docker --version
随后创建一个工作目录,并编写docker-compose.yml文件:
mkdir ~/ai-customer-service && cd ~/ai-customer-service
vim docker-compose.yml
把以下内容粘贴进去(注意缩进):
version: '3.0'
services:
rasa:
image: rasa/rasa:3.6.0-full
ports:
- "5005:5005"
volumes:
- ./rasa:/app
command: run --enable-api --cors "*" --debug
保存后,在rasa子目录里初始化项目:
mkdir rasa && cd rasa
docker run --rm -v $(pwd):/app rasa/rasa:3.6.0-full init --no-prompt
这会在当前目录生成默认的配置文件、训练数据和模型目录。
回到上级目录,启动服务:
docker-compose up -d
用docker-compose logs -f查看日志,看到Rasa server is up and running表示启动成功。
此时API监听在5005端口。
导入客服知识库并训练模型
默认项目里已经包含一些示例意图和回复,但我们需要换成自己的客服问答。
编辑rasa/data/nlu.yml,按YAML格式添加意图和例句,例如:
version: "3.1"
nlu:
- intent: ask_shipping
examples: |
- 发货时间要多久
- 什么时候能发货
- 快递几天能到
再编辑rasa/domain.yml,在responses部分添加对应的回复模板:
responses:
utter_ask_shipping:
- text: "一般下单后48小时内发货,物流时间视地区而定,通常3-5天送达。"
同时确保rules.yml或stories.yml里包含对应的规则,让机器人知道收到ask_shipping意图时回复utter_ask_shipping。
最简单的做法是在rasa/data/rules.yml里增加:
version: "3.1"
rules:
- rule: 回复发货问题
steps:
- intent: ask_shipping
- action: utter_ask_shipping
保存后,重新训练模型:
docker-compose exec rasa rasa train
训练完成后,重启服务加载新模型:
docker-compose restart rasa
通过HTTP接口测试机器人回复
Rasa提供了REST API,可以用curl模拟用户发消息。
先确认服务正常运行:
curl http://localhost:5005/status
返回{"status":"ok"}表示正常。
然后发送一条测试消息:
curl -X POST http://localhost:5005/webhooks/rest/webhook \
-H "Content-Type: application/json" \
-d '{"sender":"test_user","message":"发货时间要多久"}'
如果返回的JSON里包含text字段且内容与预期回复一致,说明客服机器人已经能正确应答。
如果返回空数组,检查意图是否被正确识别,可以查看日志里的NLU解析结果。
常见报错和避坑提醒
部署过程中容易遇到几个典型问题。
一是Docker权限不足,执行docker命令提示permission denied,确认当前用户已加入docker组并重新登录。
二是训练时内存不足,Rasa训练需要一定内存,如果服务器只有1G内存可能会被OOM杀掉,建议至少2G并加swap。
三是端口5005被占用,用ss -tlnp | grep 5005查看占用进程,修改docker-compose.yml的端口映射或停止冲突服务。
四是修改了YAML文件但没重新训练,机器人不会生效,每次改完数据都要执行rasa train并重启容器。
另外,生产环境不要直接暴露5005端口到公网,建议用Nginx反向代理并加认证,或者只在内网调用。
验证与后续维护建议
功能验证除了发消息,还可以用rasa test运行测试用例,检查意图识别和规则回复的准确率。
日常维护时,定期备份rasa/data目录和训练好的模型文件,避免数据丢失。
如果客服问答量增大,可以考虑把Rasa接入微信公众号或网页聊天窗口,通过webhook对接。
对于刚接触AI客服的团队,先跑通基础问答流程,再逐步增加多轮对话和实体抽取,更容易落地。