一个基于 AI 的智能客服系统,采用前后端分离架构,支持知识库检索、工具调用和多轮对话。
- 智能知识库: 自动向量化文本,基于相似度检索相关知识(支持 .txt、.pdf、.docx)
- RAG 增强: 检索增强生成,提升 AI 回答的准确性和相关性
- 上下文管理 & 多轮对话: 独立上下文管理器维护会话历史,支持连续对话
- 工具调用: AI 可自主判断并调用外部工具(如天气查询、天气推荐、表单提交),支持多步骤链式调用
- 前后端分离: React 前端 + Flask 后端,易于扩展和维护
- 模块化设计: 清晰的架构,方便功能扩展
- 配置化管理: JSON 配置文件,灵活可调
customer/
├── backend/ # Python 后端 (Flask)
│ ├── app.py # Flask 主应用
│ ├── config.json # 系统配置
│ ├── requirements.txt # Python 依赖
│ ├── modules/ # 后端模块
│ │ ├── assistant.py # AI 助手管理
│ │ ├── rag.py # RAG 检索模块
│ │ ├── ai_client.py # AI 客户端
│ │ ├── context/ # 上下文管理
│ │ │ └── memory.py
│ │ ├── prompt/ # Prompt 管理
│ │ ├── store/ # 存储模块
│ │ │ ├── vector_store.py
│ │ │ └── loaders/ # 文档加载器
│ │ └── tools/ # 工具插件
│ │ ├── submit_form_plugin.py
│ │ ├── weather_plugin.py
│ │ └── weather_recommend_plugin.py
│ ├── knowledge_base/ # 知识库文档目录
│ └── db/ # 向量存储目录
│
└── frontend/ # React 前端 (Vite)
├── src/
│ ├── components/ # UI 组件
│ ├── api/ # API 调用
│ └── ...
└── package.json
- Python >= 3.8
- Node.js >= 16
- npm 或 yarn
- OpenAI API 密钥(或阿里云百炼 API)
# 进入后端目录
cd backend
# 安装依赖
pip install -r requirements.txt
# 配置 API 密钥
# 编辑 config.json 文件,填入你的 API Key 和 base_url
# 启动服务
python app.py后端将运行在: http://localhost:5000
打开新终端:
# 进入前端目录
cd frontend
# 安装依赖
npm install
# 启动开发服务器
npm run dev前端将运行在: http://localhost:5173
在浏览器中打开: http://localhost:5173
{
"api_key": "your_api_key",
"base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"model": "deepseek-v4-pro",
"embedding_model": "text-embedding-v3"
}检查服务状态
响应示例:
{
"status": "ready",
"message": "客服系统已就绪",
"knowledge_base": true
}处理对话请求
请求体:
{
"message": "用户输入",
"session_id": "可选会话ID"
}响应示例:
{
"reply": "AI回复内容",
"tool_calls": [],
"session_id": "会话ID",
"finished": false
}- 准备知识库: 在
backend/knowledge_base/目录中添加文档(支持 .txt、.pdf、.docx) - 启动服务: 按照上面的步骤启动前后端服务
- 开始对话: 在浏览器中访问前端地址,与智能客服对话
- RAG 增强: 系统会自动从知识库中检索相关信息,增强 AI 的回答
- 工具调用: 当客户需要提供信息时,AI 会自动调用表单提交工具;当客户询问天气及推荐景点时,AI 会自动先调用天气查询工具,再根据天气结果调用天气推荐工具(支持链式工具调用)
编辑 backend/modules/prompt/__init__.py 中的 CUSTOMER_SERVICE_PROMPT 变量
- 在
backend/modules/tools/目录下创建新的插件文件,继承BaseTool基类 - 定义工具实例,包含名称、定义和 execute 方法
- 在插件文件末尾创建并导出工具实例
- 在
app.py中导入新的工具实例并添加到工具列表 - 重启服务,新工具会被注册并使用
- 在
backend/knowledge_base/目录中添加或修改文档 - 重启服务,系统会自动重新向量化并建立索引
后端:
- Flask 3.0.0 - Web 框架
- OpenAI SDK 1.12.0 - AI API 客户端 (兼容阿里云百炼)
- Flask-CORS - 跨域支持
- numpy 2.4.4 - 数值计算 (用于向量相似度计算)
- RAG 技术 - 检索增强生成
前端:
- React 18 - UI 框架
- Vite - 构建工具
- Axios - HTTP 请求
- UUID - 会话管理
AI 服务:
- 阿里云百炼平台
- qwen-plus 模型
- text-embedding-v3 向量化模型
- 添加缓存机制提升性能
- 支持更多向量数据库
- 实现数据库替代 JSON 存储
- 添加 API 限流和安全验证
- Docker 容器化部署
- 多轮对话策略优化