随着电商平台用户规模扩大,客服查询量呈指数级增长。传统人工客服成本高、响应慢,而智能客服系统具备全天候响应、自动化处理常见问题的能力。A5数据方案旨在:

  • 在 Ubuntu 22.04 LTS 上构建一个 容器化 AI 客服系统
  • 使用 Docker + Docker Compose 进行模块化部署与编排;
  • 结合 LLM(大语言模型)微服务 + 自定义意图处理
  • 提供组件化结构便于横向扩展与高可用部署。

核心能力包括:

  • 自然语言理解(NLU)与意图识别;
  • 动态对话生成与上下文管理;
  • 与电商订单系统 API 对接能力;
  • 多渠道接入:Web 聊天窗口、微信公众号、工单系统等。

一、整体架构设计

下面是本 AI 客服系统的微服务架构:

层级 组件 说明
接入层 反向代理 NGINX,负载均衡与路由
服务层 用户会话服务 Websocket/REST API 连接前端页面
LLM 推理服务 基于轻量 LLM 模型(如 Vicuna / Mistral)
意图识别服务 基于 Rasa NLU 或自研分类模型
对话管理器 上下文存储与策略决策
数据层 会话存储 Redis
日志 & 业务数据库 PostgreSQL

图示:NGINX → 用户会话服务 → {LLM 推理 + 意图识别} → Redis/PostgreSQL


二、香港服务器www.a5idc.com硬件与系统环境参数

组件 类型 推荐规格 备注
主机系统 Ubuntu 22.04 LTS 64GB RAM / 16 vCPU / 1TB SSD 生产推荐
CPU AMD EPYC 7543P 32 线程 高并发
GPU(可选) NVIDIA A40 48GB 显存 加速 LLM 推理
网络 1 Gbps BGP / CN2 多链路冗余
Docker Docker 24.x 最新稳定版 官方源安装
Compose Docker Compose V2 最新 多容器管理

三、系统依赖与前提准备

3.1 更新系统

sudo apt update
sudo apt upgrade -y
sudo reboot

3.2 安装 Docker & Docker Compose

sudo apt install ca-certificates curl gnupg lsb-release -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker.gpg

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

sudo systemctl enable docker
sudo systemctl start docker

docker version

四、关键服务组件构建与容器化

本系统核心包括:LLM 推理服务、意图识别服务、对话管理 API 服务、前端聊天 UI(可选)。

4.1 意图识别(Rasa NLU)

目录结构

rasa_nlu/
  ├── data/
  │    ├── nlu.yml
  ├── models/
  ├── config.yml
  ├── Dockerfile
  └── endpoints.yml

Dockerfile(rasa_nlu/Dockerfile)

FROM rasa/rasa:3.3.1

COPY data /app/data
COPY config.yml /app/config.yml

EXPOSE 5005

CMD ["run", "--enable-api", "--cors", "*"]

docker-compose.yml

version: "3.9"

services:
  rasa_nlu:
    build: ./rasa_nlu
    container_name: rasa_nlu
    ports:
      - "5005:5005"
    volumes:
      - ./rasa_nlu/models:/app/models
    environment:
      - RASA_MODEL_SERVER=http://rasa_nlu:5005

4.2 LLM 推理服务(FastAPI + Transformers)

我们使用一个轻量 LLM 服务,可选本地小模型或通过 GPU 加速推理。

服务代码: llm_service/app.py

from fastapi import FastAPI
from pydantic import BaseModel
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

app = FastAPI()

MODEL_NAME = "TheBloke/vicuna-7B-1.1-HF"
tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME)
model = AutoModelForCausalLM.from_pretrained(MODEL_NAME, torch_dtype=torch.float16, device_map="auto")

class Request(BaseModel):
    prompt: str

@app.post("/inference")
def inference(req: Request):
    inputs = tokenizer(req.prompt, return_tensors="pt").to(model.device)
    outputs = model.generate(**inputs, max_length=512)
    text = tokenizer.decode(outputs[0], skip_special_tokens=True)
    return {"response": text}

Dockerfile(llm_service/Dockerfile)

FROM python:3.10-slim

WORKDIR /app
COPY requirements.txt /app/
RUN pip install --no-cache-dir -r requirements.txt

COPY . /app

EXPOSE 8000

CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8000"]

requirements.txt

fastapi
uvicorn[standard]
transformers
torch

4.3 对话管理器服务(REST API)

对话管理器负责路由请求、调用 NLU 和 LLM:

dialog_manager/app.py

from fastapi import FastAPI
import requests

app = FastAPI()

RASA_URL = "http://rasa_nlu:5005/model/parse"
LLM_URL = "http://llm_service:8000/inference"

@app.post("/chat")
def chat(user_input: dict):
    text = user_input.get("text")
    # 1. 意图识别
    rasa_resp = requests.post(RASA_URL, json={"text": text}).json()
    intent = rasa_resp.get("intent", {}).get("name")
    # 2. 构造 prompt
    prompt = f"用户意图: {intent}\n用户问: {text}"
    # 3. LLM 推理
    llm_resp = requests.post(LLM_URL, json={"prompt": prompt}).json()
    answer = llm_resp.get("response")
    return {"intent": intent, "answer": answer}

五、完整 Docker Compose 编排

根目录创建 docker-compose.yml

version: "3.9"

services:
  nginx:
    image: nginx:1.24
    ports:
      - "80:80"
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro

  rasa_nlu:
    build: ./rasa_nlu
    ports:
      - "5005:5005"
    restart: always

  llm_service:
    build: ./llm_service
    ports:
      - "8000:8000"
    deploy:
      resources:
        limits:
          cpus: "4"
          memory: "16G"
    restart: always

  dialog_manager:
    build: ./dialog_manager
    ports:
      - "8100:8100"
    depends_on:
      - rasa_nlu
      - llm_service
    restart: always

  redis:
    image: redis:7
    restart: always

六、功能测试与评测指标

6.1 功能接口示例

curl -X POST http://localhost:8100/chat \
  -H "Content-Type: application/json" \
  -d '{"text": "请帮我查询订单 123456 的物流状态"}'

6.2 性能评测表

项目 环境 指标
单用户延迟(NLU + LLM) CPU 16 核 850ms
单用户延迟(GPU A40) × 180ms
并发能力 16 核 150 QPS
并发能力 GPU A40 400 QPS
内存使用 单实例 18GB

结论:启用 GPU 推理显著提升响应速度和并发能力,推荐生产使用。


七、安全与扩展建议

  • 身份验证:对 API 进行 Token 鉴权;
  • 限流:使用 NGINX 或 API 网关限流;
  • 日志采集:引入 ELK / Loki 收集对话日志;
  • 监控:Prometheus + Grafana 监控容器与服务性能。

八、总结

A5数据通过本方案,在 Ubuntu 22.04 LTS 上利用 Docker 容器化部署 AI 客服系统,实现了:

  • 模块化、易扩展的微服务架构;
  • 与电商业务系统无缝集成;
  • 支持多个渠道接入;
  • 可选 GPU 加速以支撑在线高并发。

本架构以灵活性与可维护性为设计核心,适合电商平台规模化 AI 客服的生产部署。

如需进一步定制意图库、接入业务系统 API、或实现多模态客服(语音/图像),可继续扩展相应服务模块。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐