AI Agent 工作流实战:用 LangGraph 构建生产级多智能体系统

为什么选择 LangGraph?
随着大语言模型(LLM)能力的持续提升,单轮对话已难以满足复杂业务需求。AI Agent 工作流正在成为新的开发范式——它允许模型在多步骤任务中保持状态、调用工具、与其他 Agent 协作。而 LangGraph 正是 LangChain 生态中专为此设计的编排框架。
与简单的链式调用相比,LangGraph 提供了有状态的图执行引擎(通过 StateGraph 管理跨步骤的上下文)、条件边与循环(支持基于模型输出动态决定下一步骤)、持久化检查点(支持中断恢复与人工干预)以及多 Agent 协作能力(原生支持 Supervisor 模式与 Swarm 模式)。相比 CrewAI、AutoGen 等框架,LangGraph 的最大优势在于透明性与可控性,你能精确知道每个节点的输入输出,适合生产级应用。
核心概念:状态图与节点
LangGraph 的核心抽象是 StateGraph,整个工作流被建模为一张有向图:节点(Node)执行具体逻辑,边(Edge)决定流转路径,状态(State)在节点间传递。
一个典型的 LangGraph 应用由以下几部分构成:
State(状态):使用 TypedDict 定义,记录整个工作流中需要传递的数据结构
Node(节点):普通 Python 函数,接收并返回状态,每个节点负责一项具体任务
Edge(边):连接节点的路径,可以是固定的,也可以是基于条件动态决定的
Compile(编译):调用 workflow.compile() 生成可执行的应用实例
通过将推理节点(think)和执行节点(action)循环连接,可以构建出经典的 ReAct 循环——模型先推理当前情况,再执行工具,然后观察结果并继续推理。
多智能体架构设计
真实业务场景往往需要多个专职 Agent 协作完成任务。LangGraph 支持两种主流多 Agent 架构:
Supervisor 模式:一个主控 Agent 负责任务分发与结果汇总,子 Agent 专注特定能力。例如,一个 researcher Agent 负责联网搜索,一个 coder Agent 负责编写代码,Supervisor 负责根据任务性质分配工作。
Swarm 模式(Handoff):Agent 之间平等交接控制权,适合流水线型任务。上游 Agent 完成自己的工作后,将控制权移交给下游 Agent,实现无缝协作。
使用 langgraph-supervisor 库可以快速构建 Supervisor 模式的多 Agent 系统,通过 create_supervisor() 函数声明主控逻辑,通过 create_react_agent() 为每个子 Agent 配置专属工具和指令。
生产关键:持久化与人工干预
生产级 Agent 系统必须具备两个能力:状态持久化(防止 token 超限或服务崩溃时丢失进度)和人工干预(在关键决策点插入人工审核)。LangGraph 通过 Checkpointer 机制实现这两点。
PostgresSaver:使用 PostgreSQL 作为持久化后端,支持多线程并发和高可用部署
SqliteSaver:轻量级本地持久化,适合开发调试阶段
MemorySaver:内存持久化,适合无状态场景的快速原型
通过在 compile() 时设置 interrupt_before 参数,可以在高风险节点前自动暂停,等待人工确认后再继续执行。每次会话使用唯一的 thread_id 标识,支持随时中断和恢复,非常适合需要人工审核的业务流程。
工具调用最佳实践
Agent 的能力上限取决于工具的质量。以下是生产环境中工具设计的核心原则:
原子性:每个工具只做一件事,避免副作用耦合。不要把搜索和存储写在同一个工具里。
幂等性:工具应能安全重试,避免重复执行产生副作用。查询类工具天然幂等,写入类工具需额外设计。
超时控制:所有外部调用必须设置 timeout,防止 Agent 卡死在等待状态。建议通过 httpx.Client(timeout=10.0) 统一控制。
结构化输出:返回 JSON 格式而非纯文本,便于模型解析和下一步使用。
错误友好:捕获所有异常并返回结构化的错误信息,让 Agent 能够理解失败原因并决定是否重试。
LangChain 的 @tool 装饰器配合 Pydantic 的 BaseModel 可以优雅地定义工具的参数 schema,让模型能够准确理解参数含义和类型约束,减少错误调用。
错误恢复与重试策略
生产 Agent 系统必须有完善的错误处理机制。LangGraph 提供了节点级别的 RetryPolicy 配置,支持设置最大重试次数、等待时间、指数退避系数以及需要重试的异常类型。
除了代码层面的重试,还应在架构层面考虑:
降级策略:主模型失败时切换到备用模型(例如 GPT-4o 失败后切换到 GPT-4o-mini)
限流保护:使用令牌桶算法控制工具调用频率,避免触发外部 API 的速率限制
告警监控:接入 LangSmith 或自建可观测系统,追踪 Agent 每步执行的 token 消耗、延迟和成功率
死循环检测:设置最大循环次数,防止 Agent 在某个步骤无限重试
性能优化:并发执行
当 Agent 需要并行调用多个工具时,串行等待会极大影响响应速度。LangGraph 支持通过 Send API 实现节点级并发:协调节点将任务列表拆分为多个 Send 对象,图引擎会并行调度所有工作节点,最后汇聚结果。
实测显示,对于需要调用 5 个外部 API 的场景,并行执行可将总耗时从 15 秒缩短至 4 秒,性能提升超过 3 倍。在实际应用中,网络搜索、数据库查询、文件读取等独立操作都是并发优化的理想候选。
部署与监控建议
将 LangGraph 应用推向生产,需要关注以下几个维度:
容器化部署:使用 Docker + Kubernetes,为每个 Agent 服务配置独立的资源限制,避免单个 Agent 占用过多 CPU 或内存
可观测性:接入 LangSmith Tracing,或将 trace 导出到 OpenTelemetry 兼容后端(如 Jaeger、Grafana Tempo)
成本控制:使用 token 计数中间件监控每次调用的 token 消耗,设置预算告警和硬限制
版本管理:对 Agent 图结构进行版本控制,支持 A/B 测试和灰度发布,生产变更需经过充分测试
对于需要快速上线的团队,LangGraph Cloud 提供了一键部署能力,内置任务队列、持久化存储和 Studio 可视化调试界面,是生产落地的最低阻力路径。从原型到生产的跨越,核心在于可靠性设计:持久化状态、优雅降级、完整可观测。LangGraph 提供了正确的抽象层,剩下的,就是你对业务逻辑的深刻理解。
发布评论
热门评论区: