RAG 进阶:Agentic RAG 与多智能体协作(系列三·第5篇·收官):生产级 Agentic RAG 系统全景

把前四篇的能力全部串起来,从零搭建一个可观测、可评估、可恢复的企业级 Agent 平台

前面四篇分别讲了单 Agent 能力扩展、Supervisor 主管模式、Swarm 移交模式、子图与层级架构。这篇是系列三收官,目标是把这些能力全部串起来,搭一个能上线、能监控、能评估、能恢复的生产级 Agentic RAG 系统。


一、全景架构:五层生产级栈

复制代码
┌─────────────────────────────────────────────────────┐
│  接入层:Gateway / 限流 / 鉴权 / 流式输出            │
├─────────────────────────────────────────────────────┤
│  编排层:LangGraph 状态机 / Supervisor / Swarm / 子图│
├─────────────────────────────────────────────────────┤
│  能力层:RAG 管道 / 工具执行 / MCP / 记忆管理         │
├─────────────────────────────────────────────────────┤
│  数据层:向量库 / 文档库 / Checkpointer / 长期记忆    │
├─────────────────────────────────────────────────────┤
│  可观测层:Trace / 评估 / 成本监控 / 告警 / 审计      │
└─────────────────────────────────────────────────────┘

每一层都有"不上线就出事"的坑。下面逐层拆解。


二、持久化:Agent 崩溃后怎么续跑

生产环境里 Agent 一定会崩溃:服务器重启、网络中断、用户关掉浏览器。没有持久化,一切归零。

LangGraph 的 Checkpointer 在每一步执行后自动保存状态快照,用 thread_id 标识会话。

ini 复制代码
from langgraph.checkpoint.postgres import PostgresSaver
from langgraph.graph import StateGraph, START, END

# 生产环境推荐 Postgres,支持多实例共享和 SQL 审计
DB_URL = "postgresql://user:pass@localhost:5432/langgraph"

with PostgresSaver.from_conn_string(DB_URL) as checkpointer:
    checkpointer.setup()  # 首次运行建表
    app = workflow.compile(checkpointer=checkpointer)

# 第一次调用
config = {"configurable": {"thread_id": "session-001"}}
result = app.invoke({"messages": [{"role": "user", "content": "分析 Q3 财报"}]}, config=config)

# 如果中途崩溃,用同一个 thread_id 恢复,从断点继续
result = app.invoke(None, config=config)  # 传入 None 表示从上次 checkpoint 恢复

选型指南:

Checkpointer 适用场景 生产可用
InMemorySaver 开发调试 否
SqliteSaver 单机轻量部署 部分
PostgresSaver 企业级生产 是
RedisSaver 高并发实时会话 是
DynamoDBSaver AWS 云原生 是(大状态自动转 S3)

关键实践 :把 thread_id 作为全链路关联 ID,贯穿日志、Trace、客服工单。用户报障时,用 thread_id 直接回放完整状态转换。


三、人机协同:高危操作必须有人点头

全自动 Agent 在生产环境是 liability。LangGraph 的 interrupt() 原生支持 Human-in-the-Loop。

python 复制代码
from langgraph.types import interrupt, Command

def publish_report(state: ReportState):
    draft = generate_draft(state)
    # 暂停,等待人工审批
    approval = interrupt({
        "question": "请审核报告草稿",
        "draft": draft,
    })
    if approval.lower() != "approved":
        return {"draft": draft, "critique": approval, "status": "needs_revision"}
    return {"draft": draft, "status": "published"}

分层自主策略(tiered autonomy):

python 复制代码
def route_by_confidence(state):
    confidence = state.get("confidence_score", 0)
    if confidence > 0.9:
        return "auto_approve"      # 低风险自动通过
    elif confidence > 0.7:
        return "notify_human"      # 中风险标记待审
    else:
        return "require_approval"  # 高风险强制审批

四、可观测性:从"黑箱"到"白盒"

2026 年的 Agent 可观测性已经从"打日志"演进为四层体系。

第 1 层:基础监控

服务可用性、延迟、错误率、资源指标。告诉你"出问题了"。

第 2 层:链路追踪(Trace)

把 Agent 的完整执行链路记录下来,支持嵌套与执行图还原。

ini 复制代码
[USER REQUEST]
  └─ [LLM CALL #1 - 250ms] (model=gpt-4o, tokens=1200)
      └─ [TOOL CALL: search_web] - 800ms
          └─ [HTTP REQUEST] - 600ms
      └─ [TOOL CALL: query_db] - 200ms
  └─ [LLM CALL #2 - 400ms]
  └─ [FINAL RESPONSE]

必须采集的六类 Agent 特有数据:

  1. Prompt / 回复 / 推理链(CoT)
  2. 工具调用(参数 / 结果 / 耗时 / 状态)
  3. Token / 延迟 / 成本
  4. 多 Agent 交接信息
  5. 记忆读写操作
  6. 护栏与策略裁决记录

第 3 层:质量评估

离线评估 + 在线采样 + 用户反馈闭环。

第 4 层:根因分析

自动诊断"为什么失败"------是工具选错?Prompt 有问题?还是模型能力不够?

工具选型(2026 年主流组合):

工具 特点 适用
LangSmith LangChain 生态原生集成 LangChain/LangGraph 团队首选
Langfuse 开源、可自部署 数据合规要求高的企业
Arize Phoenix 开源、Embedding 可视化 MLOps 团队
Helicone 反向代理、零侵入 快速集成
Braintrust 评估闭环最强 Notion/Stripe/Zapier 在用

推荐组合:核心可观测用 Langfuse/LangSmith,质量评估用 Braintrust,成本治理用 Datadog 或自建。


五、评估体系:把"感觉还行"变成数字

黄金测试集(Golden Dataset)

准备覆盖正常、边界、异常场景的测试用例,每次代码变更自动回测。

ini 复制代码
# 用 RAGAS 指标族做离线评估
from ragas import evaluate
from ragas.metrics import faithfulness, answer_relevancy, context_relevancy

result = evaluate(
    dataset=golden_dataset,
    metrics=[faithfulness, answer_relevancy, context_relevancy],
)
print(result)
# faithfulness: 0.92  ← 答案是否忠实于检索上下文
# answer_relevancy: 0.88  ← 回答是否切题
# context_relevancy: 0.85  ← 检索内容是否相关

Trace-to-Eval 闭环

2026 年的最佳实践:生产事故自动转化为回归测试用例。

复制代码
线上失败 Trace → 自动提取为评估用例 → 加入 CI 回归测试 → PR 合并前自动检测质量退化

Notion 和 Zapier 已经在用这套流程------测试覆盖随着事故而增长,Agent 越跑越稳定。

评估指标体系

维度 指标 说明
检索质量 Context Precision / Recall 召回的文档是否相关、是否完整
生成质量 Faithfulness 答案是否忠实于上下文,有无幻觉
回答相关性 Answer Relevancy 是否切题、完整
事实准确性 Groundedness 答案是否有据可查
业务指标 任务完成率 / 用户满意度 最终业务价值

六、成本监控:别让 Agent 一夜烧光预算

不加护栏的生产 Agent 平均超额消耗 30% 以上。 最隐蔽的问题是死循环:工具返回异常 → Agent 重试 → 仍然不对 → 换工具 → 还是不对 → 回到第一步。一晚上能烧掉一个月的预算。

三层防护:

perl 复制代码
# 1. 单步 Token 上限
llm = ChatOpenAI(model="gpt-4o", max_tokens=2000)

# 2. 工作流总预算限制
MAX_WORKFLOW_COST = 5.0  # 美元

def check_budget(state):
    current_cost = sum(step["cost"] for step in state["cost_log"])
    if current_cost > MAX_WORKFLOW_COST:
        return {"status": "budget_exceeded", "final_report": "成本超限,终止执行。"}

# 3. 循环次数熔断
MAX_ROUNDS = 10
if state["round"] > MAX_ROUNDS:
    return {"status": "loop_detected", "final_report": "检测到循环,终止执行。"}

成本归因:实现 Session 和 Step 粒度的成本追踪,实时看到"哪个用户、哪个功能、哪一步最烧钱"。


七、错误分类体系:把"Agent 又犯傻了"变成工程问题

2026 年行业已收敛出六层错误分类,方便统计、分派和回归验证。

层级 错误类型 典型表现 排查方向
1 任务理解错误 意图分类错、实体提取漏 Prompt / 路由模型
2 规划与路由错误 选错工具、派错 Agent 路由决策日志
3 知识与上下文错误 检索词不准、文档过时 检索管道 / 知识库版本
4 模型推理错误 上下文正确但结论错 模型版本 / 结构化输出
5 工具与环境错误 参数错、超时、权限不足 工具日志 / 下游系统
6 状态与控制错误 忘记前一步、死循环 Checkpoint / 循环计数

八、完整代码骨架:把一切串起来

python 复制代码
from langgraph.graph import StateGraph, START, END
from langgraph.checkpoint.postgres import PostgresSaver
from langgraph.types import interrupt, Command
from langchain_openai import ChatOpenAI
from langfuse.callback import CallbackHandler  # 可观测性

# ===== 1. 可观测性 =====
langfuse_handler = CallbackHandler()

# ===== 2. 持久化 =====
DB_URL = "postgresql://user:pass@localhost:5432/langgraph"
with PostgresSaver.from_conn_string(DB_URL) as checkpointer:
    checkpointer.setup()

    # ===== 3. 定义状态 =====
    class AgentState(TypedDict):
        messages: Annotated[list, add_messages]
        round: int
        cost_log: list[float]

    # ===== 4. 定义节点(含成本监控) =====
    llm = ChatOpenAI(model="gpt-4o", temperature=0)

    def research_node(state: AgentState):
        if state["round"] > 10:
            return {"status": "loop_detected"}
        # ... 执行研究逻辑
        return {"messages": [...], "round": state["round"] + 1}

    def review_node(state: AgentState):
        approval = interrupt({"question": "审核草稿", "draft": state["draft"]})
        return {"status": "approved" if approval == "approved" else "needs_revision"}

    # ===== 5. 组装图 =====
    builder = StateGraph(AgentState)
    builder.add_node("research", research_node)
    builder.add_node("review", review_node)
    builder.add_edge(START, "research")
    builder.add_edge("research", "review")
    builder.add_edge("review", END)

    app = builder.compile(checkpointer=checkpointer)

# ===== 6. 运行(带 Trace) =====
config = {
    "configurable": {"thread_id": "session-001"},
    "callbacks": [langfuse_handler],
}
result = app.invoke(
    {"messages": [{"role": "user", "content": "分析 AI Agent 市场趋势"}], "round": 0, "cost_log": []},
    config=config,
)

九、生产级 Checklist(最终版)

架构

  • 分层架构:接入 / 编排 / 能力 / 数据 / 可观测
  • 子图封装团队模块,接口对齐即可独立演进
  • Supervisor 管部门,Swarm 管团队内部转接

持久化

  • 生产环境用 PostgresSaver / RedisSaver,不用 InMemory
  • thread_id 贯穿全链路,作为关联 ID
  • 开启 Checkpointer 支持断点续跑和人机协同

可观测性

  • 接入 Langfuse / LangSmith,自动采集 Trace
  • 六类 Agent 特有数据全采集(Prompt / 工具 / Token / 交接 / 记忆 / 护栏)
  • 决策与动作分离记录,区分"思考错"和"执行错"

评估

  • 建立黄金测试集,CI/CD 自动回测
  • Trace-to-Eval 闭环:生产事故自动转为回归用例
  • 监控 Faithfulness / Groundedness / Answer Relevancy

成本

  • 单步 Token 上限 + 工作流总预算 + 循环熔断
  • Session / Step 粒度成本归因
  • 实时告警,不等月底账单

安全

  • 高危操作 interrupt() 人工审批
  • 分层自主策略:低风险自动、高风险强制审批
  • 审计日志记录每次决策和动作

十、系列三收官总结

系列三五篇完整脉络:

篇次 主题 核心能力
第1篇 单 Agent 能力扩展 工具调用 / 记忆 / 规划 / 反思
第2篇 Supervisor 模式 中央主管动态路由 + 三道保险
第3篇 Swarm 模式 去中心化移交 + Handoff 工具
第4篇 子图与层级架构 模块封装 / 状态隔离 / 团队协作
第5篇 生产级全景 持久化 / 可观测 / 评估 / 成本 / 安全

一句话总结 :Agentic RAG 的核心不是"让模型更聪明",而是用工程手段把不可控的 LLM 变成可控、可测、可恢复的生产系统。


相关推荐
Bryceee1 小时前
DeepSeek Harness (dsh) 会话管理架构深度剖析:为什么他们砍掉了 SQLite,选择 Zstd 分帧 JSONL?
agent
136096757231 小时前
把模型调用抽成 4 个对象,换厂商只改一行配置
agent
武子康2 小时前
Coding Agent 的知识也会漂移:用固定快照检查 Vercel Plugin 升级
人工智能·后端·agent
阿里云大数据AI技术2 小时前
云栖实录|Hologres 5.0全新发布:Agent Native 的全模态实时数仓
大数据·人工智能·agent
CoovallyAIHub3 小时前
用 AI 做 PPT 被辞退,法院判公司赔:员工贴进对话框的数据,到底谁负责?
前端·agent
CoovallyAIHub3 小时前
Anthropic 昨晚发布 Claude Duet:AI 第一次主动找你干活
github·agent·设计
花椒技术3 小时前
花椒 AI 应用工程化实践:灵泡泡的工作流、版本管理与任务恢复
后端·agent·ai编程
SelectDB3 小时前
以实时驱动智能:Apache Doris Summit 2026 盛大落幕,开启 Agentic AI 时代数据新范式
数据库·程序员·agent