296 lines
6.9 KiB
Markdown
296 lines
6.9 KiB
Markdown
|
|
# TSP助手 - 基于大模型的AI客服机器人
|
|||
|
|
|
|||
|
|
## 项目简介
|
|||
|
|
|
|||
|
|
TSP助手是一个基于阿里云千问大模型的智能客服机器人系统,具备以下核心功能:
|
|||
|
|
|
|||
|
|
- **智能对话处理**:基于大模型进行自然语言理解和回复生成
|
|||
|
|
- **知识库学习**:从历史工单中自动学习问题处理经验
|
|||
|
|
- **实时数据分析**:统计工单处理情况,生成分析报告
|
|||
|
|
- **智能预警系统**:监控关键指标,及时发现问题
|
|||
|
|
- **工单管理**:完整的工单生命周期管理
|
|||
|
|
|
|||
|
|
## 系统架构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
TSP_assistant/
|
|||
|
|
├── src/
|
|||
|
|
│ ├── config/ # 配置文件
|
|||
|
|
│ ├── core/ # 核心模块
|
|||
|
|
│ ├── knowledge_base/ # 知识库管理
|
|||
|
|
│ ├── dialogue/ # 对话管理
|
|||
|
|
│ ├── analytics/ # 分析统计
|
|||
|
|
│ └── utils/ # 工具函数
|
|||
|
|
├── data/ # 数据存储
|
|||
|
|
├── logs/ # 日志文件
|
|||
|
|
└── requirements.txt # 依赖包
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 核心功能
|
|||
|
|
|
|||
|
|
### 1. 智能对话处理
|
|||
|
|
- 基于阿里云千问大模型进行自然语言理解
|
|||
|
|
- 支持上下文记忆和对话历史管理
|
|||
|
|
- 自动从知识库检索相关信息
|
|||
|
|
- 生成准确、有用的回复
|
|||
|
|
|
|||
|
|
### 2. 知识库学习
|
|||
|
|
- 从已解决的工单中自动提取问题和答案
|
|||
|
|
- 使用TF-IDF向量化进行相似度匹配
|
|||
|
|
- 支持知识库条目的增删改查
|
|||
|
|
- 自动更新和优化知识库内容
|
|||
|
|
|
|||
|
|
### 3. 工单管理
|
|||
|
|
- 创建、更新、查询工单
|
|||
|
|
- 支持工单分类和优先级设置
|
|||
|
|
- 记录完整的对话历史
|
|||
|
|
- 工单状态跟踪和满意度评分
|
|||
|
|
|
|||
|
|
### 4. 数据分析与统计
|
|||
|
|
- 每日自动生成分析报告
|
|||
|
|
- 统计工单处理效率、满意度等指标
|
|||
|
|
- 支持多维度数据分析
|
|||
|
|
- 生成可视化趋势图表
|
|||
|
|
|
|||
|
|
### 5. 智能预警系统
|
|||
|
|
- 监控关键性能指标
|
|||
|
|
- 自动检测异常情况
|
|||
|
|
- 支持多级别预警(低、中、高、严重)
|
|||
|
|
- 预警历史记录和解决跟踪
|
|||
|
|
|
|||
|
|
## 安装和配置
|
|||
|
|
|
|||
|
|
### 1. 环境要求
|
|||
|
|
- Python 3.8+
|
|||
|
|
- MySQL数据库(推荐)或SQLite数据库
|
|||
|
|
- 阿里云千问API密钥
|
|||
|
|
|
|||
|
|
### 2. 安装步骤
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 克隆项目
|
|||
|
|
git clone <repository-url>
|
|||
|
|
cd TSP_assistant
|
|||
|
|
|
|||
|
|
# 安装依赖
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
|
|||
|
|
# 创建必要目录
|
|||
|
|
mkdir -p data logs
|
|||
|
|
|
|||
|
|
# 设置MySQL数据库(如果使用MySQL)
|
|||
|
|
python create_mysql_db.py
|
|||
|
|
|
|||
|
|
# 初始化数据库
|
|||
|
|
python init_database.py
|
|||
|
|
|
|||
|
|
# 配置API密钥
|
|||
|
|
# 在 src/config/config.py 中设置您的阿里云API密钥
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. MySQL数据库设置
|
|||
|
|
|
|||
|
|
如果使用MySQL数据库,需要先运行:
|
|||
|
|
```bash
|
|||
|
|
python create_mysql_db.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
此脚本会:
|
|||
|
|
- 创建名为 `tsp_assistant` 的数据库
|
|||
|
|
- 设置正确的字符集(utf8mb4)
|
|||
|
|
- 创建专用用户(可选)
|
|||
|
|
- 测试数据库连接
|
|||
|
|
|
|||
|
|
### 4. 数据库初始化
|
|||
|
|
|
|||
|
|
数据库初始化脚本会自动:
|
|||
|
|
- 创建所有必要的数据库表
|
|||
|
|
- 插入示例知识库数据
|
|||
|
|
- 检查数据库连接状态
|
|||
|
|
- 显示各表的记录数统计
|
|||
|
|
|
|||
|
|
如果数据库已存在,脚本会跳过初始数据插入,避免重复数据。
|
|||
|
|
|
|||
|
|
### 5. 数据库选择
|
|||
|
|
|
|||
|
|
系统支持两种数据库:
|
|||
|
|
|
|||
|
|
**MySQL(推荐)**:
|
|||
|
|
- 性能更好,支持并发
|
|||
|
|
- 适合生产环境
|
|||
|
|
- 需要安装MySQL服务器
|
|||
|
|
|
|||
|
|
**SQLite**:
|
|||
|
|
- 轻量级,无需额外安装
|
|||
|
|
- 适合开发和测试
|
|||
|
|
- 单文件存储
|
|||
|
|
|
|||
|
|
### 6. 配置说明
|
|||
|
|
|
|||
|
|
在 `src/config/config.py` 中配置以下参数:
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# 阿里云千问API配置
|
|||
|
|
ALIBABA_API_KEY = "your-api-key"
|
|||
|
|
ALIBABA_BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1"
|
|||
|
|
ALIBABA_MODEL_NAME = "qwen-plus-latest"
|
|||
|
|
|
|||
|
|
# 数据库配置
|
|||
|
|
# MySQL配置(推荐)
|
|||
|
|
DATABASE_URL = "mysql+pymysql://root:123456@localhost/tsp_assistant?charset=utf8mb4"
|
|||
|
|
# SQLite配置(备用)
|
|||
|
|
# DATABASE_URL = "sqlite:///tsp_assistant.db"
|
|||
|
|
|
|||
|
|
# 其他系统参数
|
|||
|
|
MAX_HISTORY_LENGTH = 10
|
|||
|
|
RESPONSE_TIMEOUT = 30
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 使用方法
|
|||
|
|
|
|||
|
|
### 1. 启动系统
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
from src.main import TSPAssistant
|
|||
|
|
|
|||
|
|
# 创建助手实例
|
|||
|
|
assistant = TSPAssistant()
|
|||
|
|
|
|||
|
|
# 测试系统
|
|||
|
|
test_results = assistant.test_system()
|
|||
|
|
print("系统测试结果:", test_results)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 处理用户消息
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# 处理用户消息
|
|||
|
|
response = assistant.process_message(
|
|||
|
|
message="我的账户无法登录",
|
|||
|
|
user_id="user123",
|
|||
|
|
work_order_id=1
|
|||
|
|
)
|
|||
|
|
print("回复:", response["response"])
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 创建工单
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# 创建工单
|
|||
|
|
work_order = assistant.create_work_order(
|
|||
|
|
title="账户登录问题",
|
|||
|
|
description="用户反映无法登录账户",
|
|||
|
|
category="账户问题",
|
|||
|
|
priority="high"
|
|||
|
|
)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 搜索知识库
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# 搜索知识库
|
|||
|
|
results = assistant.search_knowledge("账户登录", top_k=3)
|
|||
|
|
print("搜索结果:", results)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. 生成分析报告
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# 生成分析报告
|
|||
|
|
analytics = assistant.generate_analytics("last_7_days")
|
|||
|
|
print("分析报告:", analytics)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## API接口
|
|||
|
|
|
|||
|
|
### 对话接口
|
|||
|
|
- `process_message(message, user_id, work_order_id)` - 处理用户消息
|
|||
|
|
- `create_work_order(title, description, category, priority)` - 创建工单
|
|||
|
|
- `update_work_order(work_order_id, **kwargs)` - 更新工单
|
|||
|
|
|
|||
|
|
### 知识库接口
|
|||
|
|
- `search_knowledge(query, top_k)` - 搜索知识库
|
|||
|
|
- `add_knowledge(question, answer, category, confidence_score)` - 添加知识
|
|||
|
|
|
|||
|
|
### 分析接口
|
|||
|
|
- `generate_analytics(date_range)` - 生成分析报告
|
|||
|
|
- `get_alerts()` - 获取预警信息
|
|||
|
|
- `get_system_status()` - 获取系统状态
|
|||
|
|
|
|||
|
|
## 数据模型
|
|||
|
|
|
|||
|
|
### 工单 (WorkOrder)
|
|||
|
|
- 工单基本信息(ID、标题、描述、类别、优先级)
|
|||
|
|
- 状态跟踪(创建时间、更新时间、解决时间)
|
|||
|
|
- 满意度评分
|
|||
|
|
|
|||
|
|
### 对话记录 (Conversation)
|
|||
|
|
- 用户消息和助手回复
|
|||
|
|
- 时间戳和置信度评分
|
|||
|
|
- 使用的知识库条目
|
|||
|
|
|
|||
|
|
### 知识库条目 (KnowledgeEntry)
|
|||
|
|
- 问题和答案对
|
|||
|
|
- 类别和置信度评分
|
|||
|
|
- 使用次数统计
|
|||
|
|
|
|||
|
|
### 分析数据 (Analytics)
|
|||
|
|
- 每日统计指标
|
|||
|
|
- 趋势分析数据
|
|||
|
|
- 类别分布信息
|
|||
|
|
|
|||
|
|
## 监控和预警
|
|||
|
|
|
|||
|
|
系统自动监控以下指标:
|
|||
|
|
|
|||
|
|
- **客户满意度**:低于0.6时触发预警
|
|||
|
|
- **平均解决时间**:超过24小时时触发预警
|
|||
|
|
- **知识库命中率**:低于0.5时触发预警
|
|||
|
|
- **错误率**:超过0.1时触发预警
|
|||
|
|
|
|||
|
|
## 性能优化
|
|||
|
|
|
|||
|
|
- 使用向量化技术提高知识库检索效率
|
|||
|
|
- 支持并发处理多个用户请求
|
|||
|
|
- 数据库连接池管理
|
|||
|
|
- 内存使用监控和优化
|
|||
|
|
|
|||
|
|
## 扩展功能
|
|||
|
|
|
|||
|
|
- 支持多种大模型API(可扩展)
|
|||
|
|
- 支持多种数据库后端(PostgreSQL、MySQL等)
|
|||
|
|
- 支持Web界面和API接口
|
|||
|
|
- 支持多语言处理
|
|||
|
|
- 支持语音识别和合成
|
|||
|
|
|
|||
|
|
## 故障排除
|
|||
|
|
|
|||
|
|
### 常见问题
|
|||
|
|
|
|||
|
|
1. **API连接失败**
|
|||
|
|
- 检查API密钥是否正确
|
|||
|
|
- 检查网络连接
|
|||
|
|
- 检查API配额是否充足
|
|||
|
|
|
|||
|
|
2. **数据库错误**
|
|||
|
|
- 检查数据库文件权限
|
|||
|
|
- 检查SQLite版本兼容性
|
|||
|
|
- 检查磁盘空间
|
|||
|
|
|
|||
|
|
3. **知识库检索失败**
|
|||
|
|
- 检查向量化器是否正确初始化
|
|||
|
|
- 检查知识库数据完整性
|
|||
|
|
- 检查内存使用情况
|
|||
|
|
|
|||
|
|
### 日志查看
|
|||
|
|
|
|||
|
|
系统日志保存在 `logs/tsp_assistant.log` 文件中,包含详细的运行信息和错误记录。
|
|||
|
|
|
|||
|
|
## 贡献指南
|
|||
|
|
|
|||
|
|
欢迎提交Issue和Pull Request来改进项目。
|
|||
|
|
|
|||
|
|
## 许可证
|
|||
|
|
|
|||
|
|
本项目采用MIT许可证。
|