LangGraph Workflows 是一项面向 LangGraph 0.2+ 的多智能体工作流编排技能,重点讲解以有向图方式构建有状态、多智能体工作流的生产实践,包括容错、检查点与可观测性。
用途与适用场景:适合构建需要多个智能体协同的多步骤 AI 工作流,例如多智能体代码审查(安全、性能、风格、测试覆盖等智能体)、电商商品信息增强(图像分类、属性抽取、SEO 优化)、客服工单路由(意图识别、优先级评分、坐席分配)、文档处理流水线(OCR、实体抽取、摘要、QA 校验)、研究助手(查询扩展、检索、综合、事实核查)。资料同时说明不适用场景:单智能体任务、无状态 API 调用、简单顺序流水线(可用更简单的 LangChain 方案)。
主要能力:
- 状态管理:工作流在节点间传递共享状态,提供 TypedDict(简单、类型安全)与 Pydantic(校验、复杂逻辑)两种方式;用 Annotated[list[T], add] 让多个智能体向同一列表累加输出,避免节点覆盖。
- 主管-工作者模式:一个 supervisor 节点根据状态路由到专用 worker 节点,worker 完成后返回 supervisor;便于增删智能体、集中协调,并在相互独立时可并行。
- 条件路由:通过条件边按状态动态分支,覆盖顺序、分支、循环重试、多输入汇聚等路由形态,如按质量分决定发布、重试或人工审核。
- 检查点与持久化:使用 MemorySaver(开发)、SqliteSaver 或 PostgresSaver(生产)在每个节点后保存状态,支持崩溃后恢复、interrupt_before 人工介入、逐检查点调试以及避免重复调用昂贵 LLM。
- 与 Langfuse 集成:通过 @observe() 追踪整个工作流和每个节点,记录每个智能体的延迟、token 用量、成本、失败与重试,并在仪表盘查看执行图与各检查点状态。
使用方式:资料给出以 StateGraph 定义状态、add_node 添加节点、add_conditional_edges 设置路由、add_edge 连接节点、set_entry_point 设定入口、compile 编译并用 invoke 执行的流程;可用 get_graph().draw_mermaid_png() 可视化,用 get_state_history 查看检查点,用 stream 逐步执行。还介绍了从 LCEL 链迁移到 LangGraph 图的写法,以及 map-reduce 并行、human-in-the-loop、带退避的重试等常见模式。
最佳实践与限制:建议状态保持扁平、使用 TypedDict、用累加器保存多智能体输出、输入字段不可变;节点尽量为纯函数、幂等、单一职责并返回新状态;节点内做异常捕获、失败进入错误处理、瞬时错误重试并启用检查点;独立任务并行、按需加载、流式输出与缓存;全节点追踪并记录状态变化与成本。资料未提供安装命令、版本依赖细节、收费信息或性能数据。