AI 客服架构设计(AI Service Architecture)
文档编号:DOC-OPS-SM-01 / SM-ARC
版本:V1.0
创建日期:2026-08-13
维护人:听云(WCL) / TL / WDE
保密级别:🟢 可公开发布(仅架构描述,不含实现细节/密钥)
关联文档:客服工作手册 README、业务知识库、DIP1-ARC 架构设计、DIP1-API OpenAPI 规格、工单处理流程、AI 训练语料
一、文档定位
本文件定义 AI 拟人化客服系统的端到端架构——从客户咨询接入到 AI 响应、人工兜底、知识库支撑、训练语料回流的全链路组件设计。
使用方式:
- 作为 WCL+WDE 协同开发 AI 客服系统的架构蓝图
- 作为 OL/BO 评审 AI 客服能力的技术参考
- 作为故障排查时定位问题组件的架构地图
与 DIP1-ARC 的关系:
- AI 客服系统是 DIP1 平台的子系统,复用 DIP1 后端 API 与数据库
- AI 客服系统的新增组件(LLM 网关、RAG 服务、对话编排)独立部署,不污染 DIP1 核心域
- 接口契约见 realtime-status.md
二、架构总览
2.1 C4 容器图(Container View)
graph TB
subgraph EXT["🌐 客户触达层"]
APP["📱 DIP1 客户端<br/>CST-App / WKR-App"]
WA["💬 WhatsApp<br/>Business API"]
FEI["🐦 飞书<br/>客服通道"]
end
subgraph AICSR["🤖 AI 客服系统(新增)"]
CHATGW["🔌 对话网关<br/>Chat Gateway<br/>(统一接入+路由)"]
ORCH["🧠 对话编排器<br/>Dialog Orchestrator<br/>(多轮对话+意图路由)"]
LLMGW["🔌 LLM 网关<br/>LLM Gateway<br/>(模型调用+降级)"]
RAGSVC["📚 RAG 服务<br/>RAG Service<br/>(向量检索+召回)"]
FNCGW["🔌 Function Calling 网关<br/>FC Gateway<br/>(API 调用+权限)"]
SESSMGR["💾 会话管理器<br/>Session Manager<br/>(上下文+历史)"]
end
subgraph DIP1["⚙️ DIP1 后端(既有,听码维护)"]
APIGW["🔌 API Gateway<br/>65 端点"]
DB[("🗄️ PostgreSQL<br/>22 表")]
CST_DOM["📦 客户域"]
ORD_DOM["📦 订单域"]
QSV_DOM["📦 报价域"]
WKR_DOM["📦 师傅域"]
TKT_DOM["📦 工单域"]
end
subgraph KB["📚 业务知识库(ops/knowledge-base/)"]
CTX["📄 business-context.md"]
BIZ["📄 business-knowledge.md"]
RTS["📄 realtime-status.md"]
PSN["📄 ai-persona.md"]
end
subgraph VEC[("🔢 向量库")]
VECDB[("Chroma / Milvus<br/>向量库")]
end
subgraph HUMAN["👤 人工兜底"]
H_WCL["听云 WCL 工作台"]
H_TL["TL 工作台"]
end
subgraph OBS["📊 可观测性"]
SENTRY["Sentry 错误监控"]
LOGS["日志聚合"]
METRICS["指标监控"]
end
APP --> CHATGW
WA --> CHATGW
FEI --> CHATGW
CHATGW --> ORCH
ORCH --> SESSMGR
ORCH --> LLMGW
ORCH --> RAGSVC
ORCH --> FNCGW
LLMGW -->|调用| LLM_EXT["🧠 外部 LLM<br/>GLM-5.2 / GPT-4"]
RAGSVC --> VECDB
VECDB <-.->|周度索引| BIZ
FNCGW --> APIGW
APIGW --> CST_DOM & ORD_DOM & QSV_DOM & WKR_DOM & TKT_DOM
CST_DOM & ORD_DOM & QSV_DOM & WKR_DOM & TKT_DOM --> DB
LLMGW -.->|System Prompt| CTX
LLMGW -.->|System Prompt| PSN
RTS -.->|契约定义| FNCGW
ORCH -->|升级人工| H_WCL
H_WCL -->|接手工单| H_TL
H_WCL -->|处理完成| ORCH
CHATGW & ORCH & LLMGW & RAGSVC & FNCGW --> SENTRY & LOGS & METRICS
classDef ext fill:#F2F0EB,stroke:#004046,color:#004046;
classDef ai fill:#2a9d8f,stroke:#004046,color:#fff,stroke-width:2px;
classDef dip1 fill:#457b9d,stroke:#004046,color:#fff;
classDef kb fill:#D4AF78,stroke:#004046,color:#004046;
classDef vec fill:#D4AF78,stroke:#004046,color:#004046;
classDef human fill:#e76f51,stroke:#004046,color:#fff;
classDef obs fill:#F2F0EB,stroke:#457b9d,color:#004046,stroke-dasharray:5 5;
class APP,WA,FEI ext;
class CHATGW,ORCH,LLMGW,RAGSVC,FNCGW,SESSMGR ai;
class APIGW,DB,CST_DOM,ORD_DOM,QSV_DOM,WKR_DOM,TKT_DOM dip1;
class CTX,BIZ,RTS,PSN kb;
class VECDB vec;
class H_WCL,H_TL human;
class SENTRY,LOGS,METRICS,LLM_EXT obs;
2.2 组件清单
| 组件 |
职责 |
技术选型(建议) |
维护方 |
| 对话网关 |
统一接入 App/WhatsApp/飞书,路由至编排器 |
Python FastAPI |
WDE |
| 对话编排器 |
多轮对话状态机,意图路由,决策升级 |
Python + LangGraph/LangChain |
WDE |
| LLM 网关 |
调用外部 LLM,模型降级,Token 限流 |
Python + LiteLLM |
WDE |
| RAG 服务 |
向量检索业务知识库,召回相关 Q&A |
Python + Chroma/Milvus |
WDE |
| Function Calling 网关 |
调用 DIP1 API,权限校验,结果缓存 |
Python FastAPI |
WDE |
| 会话管理器 |
上下文管理,会话历史,转人工上下文 |
Python + Redis |
WDE |
| 向量库 |
存储业务知识库的向量索引 |
Chroma / Milvus |
WDE |
| DIP1 API Gateway |
DIP1 既有 65 端点 |
Python FastAPI |
WDE |
| 业务知识库 |
4 层知识文档(Markdown) |
Git 版本控制 |
WCL |
| 人工兜底工作台 |
工单接手,会话查看,回复发送 |
DIP1 OPR-Admin Web |
WDE |
三、对话编排器核心流程
3.1 编排状态机
stateDiagram-v2
[*] --> 接入: 客户咨询
接入 --> 身份识别: 已有 session
接入 --> 引导身份: 无 session
引导身份 --> 身份识别: 客户提供手机号/订单号
身份识别 --> 意图识别: 获取客户全貌
意图识别 --> 知识召回: 咨询/查询类
意图识别 --> 升级人工: 投诉/情绪激动
意图识别 --> 工单创建: 故障报告类
知识召回 --> 接口调用: 需实时数据
知识召回 --> 回复生成: 仅静态知识
接口调用 --> 回复生成: 数据返回
接口调用 --> 降级回复: 接口失败
回复生成 --> 置信度评估: LLM 输出
降级回复 --> 客户回复: 静态回复
置信度评估 --> 客户回复: 置信度 ≥ 0.7
置信度评估 --> 升级人工: 置信度 < 0.7
客户回复 --> 结束: 客户满意
客户回复 --> 意图识别: 客户追问
客户回复 --> 升级人工: 客户要求人工
升级人工 --> 人工处理: WCL/TL 接手
人工处理 --> 结束: 工单闭环
工单创建 --> 客户回复: 已创建
客户回复 --> 升级人工: 故障类工单
结束 --> [*]
3.2 关键决策点
| 决策点 |
判定条件 |
路径 |
| 是否升级人工 |
投诉关键词 / 情绪激动 / 置信度 < 0.7 / 客户要求 / 涉及补偿 |
升级人工 |
| 是否调用接口 |
问题涉及客户订单/师傅状态/报价计算 |
Function Calling |
| 是否创建工单 |
客户报告故障/异常/投诉 |
工单创建 |
| 是否闭环 |
客户明确满意 / 7 天无回复 / 客户主动关闭 |
闭环 |
3.3 上下文管理策略
| 上下文类型 |
保留策略 |
存储 |
| 当前会话 |
7 天 |
Redis |
| 历史会话 |
90 天 |
PostgreSQL |
| 客户全貌 |
实时获取 |
DIP1 API |
| 会话摘要 |
永久(脱敏) |
PostgreSQL |
| 工单关联 |
永久 |
DIP1 工单表 |
四、LLM 网关设计
4.1 多模型策略
| 优先级 |
模型 |
用途 |
触发条件 |
| 1 |
GLM-5.2 |
主模型(中文+粤语强) |
默认 |
| 2 |
GPT-4o |
备用模型(多语言+推理) |
GLM-5.2 不可用 |
| 3 |
Claude 3.5 Sonnet |
备用模型(长上下文) |
长会话(>20 轮) |
| 4 |
静态模板 |
兜底(接口全失败) |
全部 LLM 不可用 |
4.2 Token 与成本控制
| 维度 |
限制 |
说明 |
| 单次会话 Token |
≤ 8000 |
超出时摘要压缩 |
| 单客户日会话数 |
≤ 50 |
防滥用 |
| 月度 Token 预算 |
1.5M tokens |
超预算告警 |
| 模型降级触发 |
错误率 > 5% / 延迟 > 10s |
自动切换备用模型 |
4.3 Prompt 工程规范
| Prompt 段 |
来源 |
注入方式 |
| System Prompt - 业务背景 |
business-context.md |
完整注入 |
| System Prompt - AI 人设 |
ai-persona.md |
完整注入 |
| 检索上下文 - 业务规则 |
business-knowledge.md |
RAG 召回 Top 5 |
| 实时数据 - 接口结果 |
realtime-status.md 接口 |
Function Calling 注入 |
| 会话历史 |
Session Manager |
最近 10 轮 |
五、RAG 服务设计
5.1 索引构建
| 数据源 |
切片粒度 |
向量模型 |
索引频率 |
| business-knowledge.md |
按 Q&A pair 切片 |
bge-m3 |
周度全量+日度增量 |
| business-context.md |
按章节切片 |
bge-m3 |
月度全量 |
| faq.md |
按 Q&A pair 切片 |
bge-m3 |
周度全量 |
| ai-training-corpus.md |
按 Q&A pair 切片 |
bge-m3 |
周度全量 |
5.2 检索策略
1. 客户问题 → 向量化(bge-m3)
2. 向量库 Top-K 召回(K=5)
3. 相关性过滤(score > 0.7)
4. 业务规则二次过滤(按品类/阶段匹配)
5. 返回 1-3 条最相关 Q&A
5.3 召回质量监控
| 指标 |
目标 |
告警阈值 |
| 召回准确率 |
≥ 85% |
< 80% 告警 |
| 召回覆盖率 |
≥ 90% |
< 85% 告警 |
| 平均召回延迟 |
≤ 200ms |
> 500ms 告警 |
| 空召回率 |
≤ 5% |
> 10% 告警(需补充知识库) |
六、Function Calling 网关设计
6.1 工具定义(OpenAI Function Calling 格式)
{
"name": "query_order_status",
"description": "查询客户订单状态,包括当前阶段、师傅信息、预计到达时间",
"parameters": {
"type": "object",
"properties": {
"order_id": { "type": "string", "description": "订单号,格式 ORD-YYYY-MM-NNNN" },
"customer_id": { "type": "string", "description": "客户ID(可选,用于权限校验)" }
},
"required": ["order_id"]
}
}
6.2 工具清单(对齐 realtime-status.md)
| 工具名 |
对应接口 |
用途 |
identify_customer |
GET /ai/customer/identify |
识别客户身份 |
get_customer_overview |
GET /ai/customer/overview/{id} |
获取客户全貌 |
query_order |
GET /ai/order/{id} |
查询订单详情 |
list_customer_orders |
GET /ai/customer/{id}/orders |
列出客户订单 |
get_order_timeline |
GET /ai/order/{id}/timeline |
查询订单时间线 |
calculate_quote |
POST /ai/quote/calculate |
实时报价 |
query_worker |
GET /ai/worker/{id} |
查询师傅信息 |
query_worker_location |
GET /ai/worker/{id}/location |
查询师傅位置 |
create_ticket |
POST /ai/ticket |
创建工单 |
query_ticket |
GET /ai/ticket/{id} |
查询工单状态 |
update_ticket |
PATCH /ai/ticket/{id} |
更新工单 |
get_context_customer_order |
GET /ai/context/customer+order |
客户+订单聚合 |
get_context_order_worker |
GET /ai/context/order+worker |
订单+师傅聚合 |
get_context_ticket_order |
GET /ai/context/ticket+order |
工单+订单聚合 |
6.3 权限与限流
| 维度 |
限制 |
| 调用权限 |
AI service account JWT |
| 单次会话调用上限 |
10 次 |
| 单接口限流 |
100 req/min |
| 失败重试 |
3 次(指数退避) |
| 超时降级 |
5s 超时 → 静态回复 |
七、人机协作架构
7.1 AI 转人工的上下文传递
sequenceDiagram
participant C as 客户
participant A as AI 客服
participant T as 工单系统
participant H as 人工客服工作台
C->>A: 投诉问题
A->>A: 识别投诉 + 置信度 0.65
A->>T: 创建工单(含完整上下文)
Note over T: 上下文包:<br/>1. 完整对话历史<br/>2. 客户画像<br/>3. 关联订单<br/>4. AI 已尝试方案<br/>5. ai_summary
A->>H: 推送工单+上下文
A->>C: "已为您转接,工单 T-..."
H->>H: 接手(无需客户重复)
H->>C: 人工回复
H->>T: 关闭工单
T->>A: 回流处理结果
A->>A: 更新训练语料
7.2 人工兜底工作台功能
| 功能 |
说明 |
| 工单队列 |
按 SLA 优先级排序的待处理工单 |
| 会话历史 |
完整 AI 与客户对话历史 |
| 客户画像 |
客户标签/历史订单/NPS |
| 订单详情 |
关联订单的完整时间线 |
| 快捷回复 |
基于场景的快捷回复模板 |
| 升级转派 |
转派至 TL/OL/BO |
| 处理记录 |
处理过程记录到 OWLG |
八、可观测性与运维
8.1 监控指标
| 类别 |
指标 |
目标 |
| 可用性 |
AI 客服系统可用率 |
≥ 99.5% |
| 响应 |
AI 平均响应时间 |
≤ 3 秒 |
| 质量 |
AI 解决率(不升级人工) |
≥ 70% |
| 质量 |
客户满意度 |
≥ 95% |
| 成本 |
单次会话平均 Token |
≤ 2000 |
| 降级 |
模型降级触发次数 |
≤ 10 次/天 |
| 召回 |
RAG 空召回率 |
≤ 5% |
| 接口 |
Function Calling 成功率 |
≥ 99% |
8.2 告警分级
| 级别 |
触发条件 |
响应 |
| P0 |
AI 客服全不可用 / 数据泄露 |
立即停服 + TL + BO |
| P1 |
可用率 < 95% / 错误率 > 5% |
30 分钟内响应 + TL |
| P2 |
召回率下降 / 响应延迟 > 5s |
2 小时内响应 + WCL |
| P3 |
单接口异常 / Token 超预算 |
1 工作日内响应 |
8.3 日志规范
| 日志类型 |
内容 |
保留期 |
| 会话日志 |
完整对话(脱敏) |
90 天 |
| 决策日志 |
AI 决策路径+置信度 |
90 天 |
| 接口日志 |
Function Calling 调用记录 |
30 天 |
| 错误日志 |
异常+堆栈 |
90 天 |
| 审计日志 |
敏感操作(如客户数据查询) |
1 年 |
九、部署拓扑
9.1 部署架构
| 组件 |
部署方式 |
副本数 |
资源 |
| 对话网关 |
Docker |
2 |
1C2G |
| 对话编排器 |
Docker |
2 |
2C4G |
| LLM 网关 |
Docker |
2 |
1C2G |
| RAG 服务 |
Docker |
2 |
2C4G |
| Function Calling 网关 |
Docker |
2 |
1C2G |
| 会话管理器 |
Docker |
2 |
1C2G |
| Redis |
Docker |
1 主 1 从 |
2C4G |
| 向量库 |
Docker |
1 |
2C4G |
9.2 与 DIP1 共部署关系
- AI 客服系统独立 Docker Compose 项目,与 DIP1 后端解耦
- 通过 DIP1 API Gateway 调用业务接口,不直接访问数据库
- 共用 Sentry / 日志聚合 / 监控基础设施
十、安全设计
10.1 认证与授权
| 主体 |
认证方式 |
权限 |
| AI service account |
JWT(专用) |
15 AI 接口只读 + 工单写 |
| 人工客服 |
DIP1 OPR-Admin 账号 |
工单全权 + 客户只读 |
| 客户 |
DIP1 CST-App JWT |
仅本人数据 |
10.2 数据安全
| 数据类型 |
保护措施 |
| 客户对话 |
传输 TLS 1.3 / 存储 AES-256 |
| 客户隐私字段 |
日志脱敏(姓名/手机号/地址) |
| Prompt 内容 |
不记录到外部日志 |
| 训练语料 |
严禁包含真实客户数据 |
10.3 LLM 安全
| 风险 |
缓解措施 |
| Prompt 注入 |
输入净化 + System Prompt 不可被覆盖 |
| 数据泄露 |
输出过滤 + 隐私字段检测 |
| 越权回答 |
决策边界硬编码(非依赖 LLM 判断) |
| 模型滥用 |
限流 + 行为监控 |
十一、修订记录
| 版本 |
日期 |
修订人 |
修订内容 |
| V1.0 |
2026-08-13 |
DT |
初始化 AI 客服架构设计;定义 C4 容器图(5 个 AI 组件+DIP1 复用+向量库+人工工作台);定义对话编排器状态机与决策点;定义 LLM 网关多模型策略与 Token 控制;定义 RAG 索引构建与检索策略;定义 Function Calling 工具清单(14 工具);定义人机协作上下文传递;定义可观测性指标与告警分级;定义部署拓扑与安全设计 |
本文件为 AI 拟人化客服系统的端到端架构设计。组件实现由 听码 WDE 负责,架构维护由 听云 WCL + WDE + TL 共同承担。对齐 DIP1-ARC V2.0 + 业务知识库 V1.0 + 客服工作手册 V2.0。