系统设计与架构 v2
基于联网调研的对抗性分析版本,对原有架构进行勘误、丰富与升级。聚焦 2025-2026 年最新工程实践。
一、整体架构演进:从分层到分层+弹性
原版六层架构整体有效,但缺失三个关键层:可观测性层、弹性层、安全防护层。2026 年生产级系统必须包含这三层,否则在 SLA 压测和真实攻击面前无法存活。
v2 核心修正:新增三层
| 新增层 | 说明 | 优先级 |
|---|---|---|
| 安全防护层(Security) | 提示词注入防御、输入净化、输出审核 | 极高 |
| 弹性层(Resilience) | 重试+指数退避、节点级超时、熔断降级 | 高 |
| 可观测性层(Observability) | LangSmith/OpenTelemetry 全链路追踪、结构化日志 | 高 |
v2 完整架构图
┌─────────────────────────────────────────────────────────────────┐
│ 用户接入层 │
│ (Web / APP / 企业微信 / API / 语音) │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ API 网关层 │
│ (FastAPI / Kong / AWS API Gateway) │
│ 负载均衡 / 限流 / JWT 认证 / TLS 1.3 │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 安全防护层 (Security) │
│ ┌─────────────┬─────────────┬─────────────┬──────────────┐ │
│ │ 提示词注入 │ 语义过滤 │ 意图越界 │ 输出审核 │ │
│ │ 检测 Guard │ (Meta │ 检测模型 │ (合规过滤) │ │
│ │ │ Firewall) │ │ │ │
│ └─────────────┴─────────────┴─────────────┴──────────────┘ │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 需求感知层 (Perception) │
│ ┌───────────┬───────────┬───────────┬───────────────────┐ │
│ │ 意图分类 │ 实体抽取 │ 情感分析 │ 上下文补全/问题重写 │ │
│ │ (BERT/ │ (BiLSTM- │ (BERT) │ (Revise Q) │ │
│ │ Qwen) │ CRF) │ │ │ │
│ └───────────┴───────────┴───────────┴───────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 规划决策层 (Planner) │
│ (规则引擎 + LLM 动态规划 / LangGraph) │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 工具执行层 (Tools) │
│ ┌───────────┬───────────┬───────────┬───────────────────┐ │
│ │ 知识图谱 │ 向量检索 │ 外部 API │ 代码解释器/MCP │ │
│ │ 检索Agent │ 检索Agent │ 调用Agent│ 工具调用Agent │ │
│ └───────────┴───────────┴───────────┴───────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 用户交互层 (Interaction) │
│ ┌───────────┬───────────┬───────────┬───────────────────┐ │
│ │ 会话状态 │ 响应生成 │ 个性化渲染 │ 转人工兜底 │ │
│ │ 追踪 │ (LLM) │ (Prompt) │ (Fallback) │ │
│ └───────────┴───────────┴───────────┴───────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 弹性层 (Resilience) │
│ ┌───────────┬───────────┬───────────┬───────────────────┐ │
│ │ 重试+退避 │ 节点级超时 │ 熔断降级 │ 模型降级兜底 │ │
│ │ (Retry) │ (Timeout) │ (Breaker) │ (Rule Engine) │ │
│ └───────────┴───────────┴───────────┴───────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 可观测性层 (Observability) │
│ ┌───────────┬───────────┬───────────┬───────────────────┐ │
│ │ LangSmith │ OTLP │ 结构化日志 │ 成本追踪/Cost │ │
│ │ 追踪 │ Trace │ │ Budget Guard │ │
│ └───────────┴───────────┴───────────┴───────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
二、安全防护层:对抗性分析
原版问题
原版仅使用「Few-Shot 毒性检测」作为边界防御,存在以下隐患:
- 单模型无主动筛查:LLM 几乎无条件信任用户输入,无法自我防御注入
- 容易被绕过:简单的
ignore previous instructions指令可部分绕过 - 缺乏层次:仅依赖 System Prompt 约束,无独立防护节点
- OWASP LLM01 2025 排名第一:提示词注入已被列为大模型应用最高风险
v2 修正:纵深防御架构
借鉴 UC Berkeley + Meta(USENIX Security 2025)和阿里云 WAF 方案,构建四层防御:
第一层:规则引擎预检(毫秒级)
关键词黑名单 → 拒绝注入尝试(如 "ignore previous", "system prompt", "you are now")
正则匹配 → 拒绝格式异常输入
第二层:语义过滤模型(22M~86M 轻量 BERT)
Meta LlamaFirewall(开源)
├─ TinyBERT 22M → CPU 可推理,毫秒级预检
└─ BaseBERT 86M → 高精度语义检测
配合意图分类器识别越界/诱导行为
第三层:双 LLM 协作过滤
用户输入 → LLM-A(过滤模型,低温度,严格逻辑)
→ 清洗后内容 → LLM-B(生成模型)
LLM-A 无记忆(每次视为新对话),大幅降低被逐步诱导的风险
第四层:输出审核(合规过滤)
生成结果 → 内容安全审核 → 拦截敏感信息/违规内容
关键修正:不能仅靠 System Prompt
OWASP 和阿里云实践均表明:单一 LLM 无法做到完全防御提示词注入。必须通过多模型协作、流程设计、规则限制构建纵深防御。
三、弹性层:生产级可靠性保障
原版缺失
原版提到「引擎降级」和「转人工」,但缺乏系统化的弹性设计。生产级系统需要:
v2 新增:弹性三件套
1. 重试+指数退避(Retry with Backoff)
请求失败 → 立即重试 → 1s 退避 → 重试 → 2s 退避 → 重试 → 4s 退避
超过最大重试次数 → 降级/转人工
关键原则:
- 幂等性:所有工具调用必须设计为幂等操作
- 退避上限:防止无限重试导致成本失控
- 递归限制:LangGraph 原生支持
recursion_limit,防止成本暴走
2. 节点级超时(Per-Node Timeout)
每个 Agent 节点设置独立超时:
- 检索节点:P99 ≤ 300ms
- 生成节点:P99 ≤ 1.2s
- 工具调用节点:视具体 API SLA 设定的超时
超时 → 降级兜底,不阻塞整个流程
3. 熔断降级(Breaker Pattern)
连续 N 次失败 → 熔断器打开 → 跳过 LLM 路径 → 规则引擎兜底
恢复期后 → 半开状态 → 探测正常 → 关闭熔断器
模型降级方案对比
| 方案 | 说明 | 适用场景 |
|---|---|---|
| LLM 不可用 → 规则引擎 | 简单兜底 | 简单 FAQ 场景 |
| LLM 不可用 → 本地小模型 | Ollama 部署 7B 模型 | 有 GPU 资源 |
| LLM 置信度低 → 规则引擎 | 动态判断 | 复杂对话 |
| 推荐:三层降级 | LLM → 小模型 → 规则引擎 → 转人工 | 生产级标准 |
四、可观测性层:LangSmith + OTLP
原版缺失
原版完全没有可观测性设计。2025 年生产级系统的核心运营需求:
v2 关键指标体系
| 维度 | 指标 | 目标值 |
|---|---|---|
| 准确性 | 事实准确率 | ≥ 90%(关键信息 95%) |
| 解决率 | 首次解决率 (FCR) | ≥ 50%+ |
| 转人工 | 转人工率 | 15-25%(最优区间) |
| 响应速度 | P99 延迟 | ≤ 1.2s |
| 幻觉率 | hallucination rate | ≤ 0.01%(行业优秀水平) |
| 满意度 | AI-influenced CSAT | ≥ 3.5/5 |
| 安全 | 提示词注入拦截率 | ≥ 95% |
LangSmith 集成方案
LangGraph 内置 LangSmith 支持,可在每个节点记录:
- 输入/输出 token 数量(成本追踪)
- 执行时间(延迟分析)
- 工具调用记录(调试)
- 错误日志(根因分析)
python
from langgraph.constants import LangSmithextra
config = {"tags": ["customer-service", "production"], "metadata": {"user_id": user_id}}
OTLP 集成(可选)
支持 OpenTelemetry 标准,与企业现有监控系统(Prometheus/Grafana)打通。
五、工具扩展性:MCP + A2A 协议
原版问题
原版提到 MCP 但未深入。2025 年 MCP 已成为 Agent 工具调用的事实标准,A2A 协议(Agent-to-Agent)开始普及。
MCP(Model Context Protocol)
MCP 是 Anthropic 主导的 Agent 工具调用标准协议,优势:
- 发现机制:Agent 自动发现 MCP 服务器提供的工具能力,无需硬编码
- 标准化:工具定义、调用、响应格式统一
- 生态:已有 200+ 预构建工具(LangChain 生态)
A2A(Agent-to-Agent)协议
Google 推出的 Agent 间通信协议,解决不同框架(LangGraph/CrewAI)间的 Agent 互操作问题。
v2 建议架构
LangGraph(State Machine 骨架)
├─ 外部 Agent 发现 → MCP 服务器
├─ 跨框架 Agent 协作 → A2A 协议
└─ 持久化状态 → Checkpointer(跨会话记忆)
LangGraph 远程图执行(试验性)
├─ Planner 节点 → 小实例,独立扩缩容
├─ Researcher 节点 → 可水平扩展
└─ 独立部署各 Agent,弹性扩容
六、框架选型决策树(v2 更新)
基于最新调研(2026),多 Agent 框架选择决策树:
业务复杂度
├── 简单(1-2 个工具,固定流程)
│ └── 推荐:Dify / Coze(低代码,快速上线)
│
├── 中等(3-5 个工具,需状态管理)
│ ├── 快速原型 → CrewAI(角色编排,2-4 小时上手)
│ └── 生产级 → LangGraph(状态机,精确控制)
│
└── 复杂(5+ 工具,多条件分支,需容错)
├── 精确控制需求高 → LangGraph(优先)
├── 团队有图论/状态机经验 → LangGraph
└── 快速验证优先 + 角色分明 → CrewAI + LangGraph 混合
LangGraph vs CrewAI 关键差异
| 维度 | LangGraph | CrewAI |
|---|---|---|
| 架构 | 图论/状态机(DCG) | 角色团队(Role-based Crew) |
| 学习曲线 | 陡(1-2 周) | 缓(数小时) |
| 状态管理 | 显式状态 schema + checkpointing | 隐式(对话输出传递) |
| 条件分支 | 条件边(first-class) | 需自定义逻辑 |
| 循环/重试 | 递归限制 + 反馈循环 | 脆弱,可能死循环 |
| 人在回路 | Breakpoint 支持 | 基础回调 |
| 流式输出 | 每节点 token 流 | 有限 |
| 调试 | 优秀(状态可见) | 中等 |
| 生产就绪度 | 高 | 中(原型→生产有复杂度墙) |
七、修正后的演进路径
修正:原版 MVP 建议过于简化
原版 MVP 直接推荐「Simple Vector Store(内存)」,实际生产中存在数据丢失风险。
v2 三阶段演进
阶段 1:MVP(1-2 周)
├─ 平台:Dify / Coze(低代码)
├─ 向量库:Chroma(持久化 SQLite,非内存)
├─ 知识源:FAQ + 核心文档
└─ 目标:验证核心对话体验
阶段 2:生产级(3-8 周)
├─ 框架:LangGraph(状态机编排)
├─ 向量库:Milvus(分布式持久化)
├─ 缓存:Redis LRU(热点知识)
├─ 安全:四层纵深防御
├─ 弹性:重试+超时+熔断
└─ 目标:高可用 SLA
阶段 3:企业级(8+ 周)
├─ 多 Agent 编排(CrewAI/LangGraph)
├─ 知识图谱(Neo4j + GraphRAG)
├─ 可观测性:LangSmith + OTLP
├─ MCP 工具生态
└─ 目标:复杂业务闭环 + 持续运营
八、关键修正总结
| 原版问题 | v2 修正 |
|---|---|
| 缺失安全防护层 | 新增四层纵深防御(MCP Guard + 语义过滤 + 双 LLM + 输出审核) |
| 缺失弹性层 | 新增重试+退避、节点级超时、熔断降级 |
| 缺失可观测性层 | 新增 LangSmith + OTLP 集成,关键指标体系 |
| 过度依赖 System Prompt 防御 | 提示词注入必须作为独立前置节点,不可依赖 LLM 自我保护 |
| MVP 向量库选型(内存)有数据丢失风险 | 改为 Chroma SQLite 持久化 |
| LangGraph vs CrewAI 选择模糊 | 新增决策树和深度对比 |
| 框架演进路径不完整 | 补充 MCP、A2A 协议和远程图执行 |
| 评估指标缺失 | 补充行业基准(85%+ 准确率、15-25% 转人工率、0.01% 幻觉率) |
九、参考资料
- Choose a design pattern for your agentic AI system — Google Cloud
- Multi-Agent AI Systems: LangGraph vs CrewAI — AIStackInsights 2026
- LangGraph vs CrewAI: Comparison Guide — Xcelore 2025
- 提示词注入攻击方法与多模型纵深防御架构 — 阿里云
- OWASP LLM01:2025 提示词注入 — OWASP
- 提示词攻击防护 — 阿里云 WAF
- Benchmarking Real-World Customer Service Dialogue (OlaBench) — 2025
- AI Customer Service Evaluation Framework — Fin AI