LangGraph 多智能体编排实战:状态机、断点续跑、人工介入,一次讲透
单 Agent 会遇到天花板工具一多就乱选、长任务一断就从头再来。LangGraph 用「把流程画成状态机」的方式解决这些问题这也是它成为 2026 年生产级 Agent 首选的原因。附完整可运行代码。文章目录一、为什么不是 LangChain 而是 LangGraph二、环境与最小示例三、条件边让流程学会「拐弯」四、多智能体三种协作拓扑怎么选五、断点续跑与人工介入生产刚需5.1 Checkpoint进程崩了也能续5.2 Interrupt关键操作前停下来等人批5.3 节点级重试让偶发故障自愈5.4 流式输出用户体验的分水岭5.5 什么时候不要用多 Agent六、生产化检查清单一、为什么不是 LangChain 而是 LangGraph一句话说清关系LangChain 是组件库LangGraph 是把组件串成可控流程的编排层。它把 Agent 的工作流建模成图GraphNode节点一个函数干一件事调模型、跑工具、查库Edge边节点之间的流转支持条件分支State状态全局共享的数据所有节点读写。好处在生产环境才显出来能力裸写 Agent 循环LangGraph流程可控模型自己决定下一步黑盒图里画死白盒可审计断点续跑断了重来token 白烧checkpoint 自动落盘从断点恢复人工介入基本没法做原生 interrupt人审后继续出错定位翻日志猜每个节点独立可测二、环境与最小示例pipinstalllanggraph langchain-openaiexportOPENAI_API_KEYsk-xxx# 或用 Ollama把 ChatOpenAI 换成 base_url 指向本地先看一个「三个节点串成审查流水线」的骨架# minimal_graph.pyfromtypingimportTypedDictfromlanggraph.graphimportStateGraph,START,ENDclassState(TypedDict):question:strdraft:strreview:strfinal:strdefdraft_node(state:State)-dict:# 实际项目在这里调 LLM示例用占位return{draft:f关于「{state[question]}」的初稿}defreview_node(state:State)-dict:return{review:f初稿审查通过{state[draft]}}defpolish_node(state:State)-dict:return{final:f定稿{state[draft]}已按审查意见修改}builderStateGraph(State)builder.add_node(draft,draft_node)builder.add_node(review,review_node)builder.add_node(polish,polish_node)builder.add_edge(START,draft)builder.add_edge(draft,review)builder.add_edge(review,polish)builder.add_edge(polish,END)graphbuilder.compile()resultgraph.invoke({question:AI Agent 的三大组件})print(result[final])状态就是 TypedDict节点返回「要更新的字段」框架负责合并——这就是 LangGraph 的全部心智模型。三、条件边让流程学会「拐弯」审查不通过要打回重写用条件边实现fromlanggraph.graphimportStateGraph,START,ENDfromtypingimportTypedDict,LiteralclassState(TypedDict):draft:strscore:intattempts:intdefreview_node(state:State)-dict:return{score:60ifstate[attempts]2else85}# 模拟评分defroute(state:State)-Literal[rewrite,accept]:returnrewriteifstate[score]80elseacceptbuilderStateGraph(State)builder.add_node(review,review_node)builder.add_conditional_edges(review,route,{rewrite:review,accept:END})builder.add_edge(START,review)# 真实项目记得加最大重试次数防止无限循环烧钱defroute_safe(state:State)-Literal[rewrite,accept]:ifstate[attempts]3:returnaccept# 超限降级接受并标记人工处理returnrewriteifstate[score]80elseaccept踩坑所有循环边必须有退出条件。没设重试上限的审查循环模型可能永远打回重写一晚上烧掉一个月预算。四、多智能体三种协作拓扑怎么选拓扑结构适用注意Supervisor主管式一个协调节点分派给专家节点大多数业务场景推荐默认协调节点逻辑要简单明确流水线节点串行各自加工文档处理、内容生产上游输出质量决定一切辩论/群聊多个 Agent 互评方案评审、提高结论可靠性token 消耗 ×N慎用Supervisor 模式骨架生产最常用# supervisor.py核心逻辑节选fromlanggraph.graphimportStateGraph,START,ENDfromtypingimportTypedDict,LiteralclassTeamState(TypedDict):task:strnext_agent:strresearch:strcode:strreport:strdefsupervisor(state:TeamState)-dict:# 实际项目用 LLM 结构化输出决定下一个 agent# prompt 要求只输出 researcher / coder / writer / FINISHifnotstate.get(research):return{next_agent:researcher}ifnotstate.get(code):return{next_agent:coder}ifnotstate.get(report):return{next_agent:writer}return{next_agent:FINISH}defroute(state:TeamState)-Literal[researcher,coder,writer,__end__]:return{FINISH:__end__}.get(state[next_agent],state[next_agent])builderStateGraph(TeamState)builder.add_node(supervisor,supervisor)builder.add_node(researcher,lambdas:{research:调研结果...})builder.add_node(coder,lambdas:{code:print(hello)})builder.add_node(writer,lambdas:{report:最终报告...})builder.add_edge(START,supervisor)builder.add_conditional_edges(supervisor,route)fornodein[researcher,coder,writer]:builder.add_edge(node,supervisor)# 干完活回主管由主管决定下一步注意专家节点干完活必须回到 supervisor由它统一调度——让专家之间直接对话是多 Agent 系统失控的头号原因。五、断点续跑与人工介入生产刚需5.1 Checkpoint进程崩了也能续fromlanggraph.checkpoint.sqliteimportSqliteSaver checkpointerSqliteSaver.from_conn_string(runs.db)graphbuilder.compile(checkpointercheckpointer)# 每次调用带 thread_id同一个 id 的执行历史自动持久化config{configurable:{thread_id:order-20260928-001}}graph.invoke({task:处理这批退货工单},config)# 进程重启后同 thread_id 再 invoke从最近的 checkpoint 继续5.2 Interrupt关键操作前停下来等人批fromlanggraph.typesimportinterrupt,Commanddefrefund_node(state:TeamState)-dict:# 流程会在这里暂停把内容抛给人类approvalinterrupt({question:是否同意退款,detail:state[task]})ifapproval!yes:return{report:已取消人工拒绝了退款}return{report:退款已执行}人工放行只需对同一thread_id再发一次指令graph.invoke(Command(resumeyes),config)凡是动钱的、发出去就收不回的操作退款、发邮件、调用生产 API前面一律加 interrupt。这一条能避开 90% 的 Agent 事故。5.3 节点级重试让偶发故障自愈调外部 API 的节点模型、搜索、数据库总有抖动LangGraph 内置了重试策略不用自己包 try/exceptfromlanggraph.pregelimportRetryPolicy builder.add_node(researcher,research_fn,retryRetryPolicy(max_attempts3,initial_interval1.0,backoff_factor2.0),)注意只给会抖动的节点加重试。LLM 调用、HTTP 请求值得加纯本地计算解析、格式化加了反而掩盖真 bug。5.4 流式输出用户体验的分水岭多 Agent 链路长不流式的话用户盯着白屏几十秒必走人。LangGraph 两种流式都支持# 1) token 级流式模型边生成边吐字forchunkingraph.stream({task:总结这批工单},config,stream_modemessages):ifchunk.content:print(chunk.content,end,flushTrue)# 2) 节点级流式前端展示「正在执行调研 → 写码 → 出报告」forupdateingraph.stream(input,config,stream_modeupdates):fornode_name,state_deltainupdate.items():print(f[步骤]{node_name}完成)生产建议两个都开节点级做进度条token 级做正文输出。5.5 什么时候不要用多 Agent泼一盆必要的冷水——多 Agent 不是银弹出现以下信号时留在单 Agent任务流程固定、步骤少写成普通函数链更稳、更便宜、更好测单模型 好的 Prompt 能达标多 Agent 拓扑本身会引入新的失败模式调度错、状态污染token 预算紧张Supervisor 每次调度都是额外 LLM 调用成本轻松翻倍。判断标准当「一个 Prompt 装不下所有工具和规则」或者「不同环节需要不同模型/温度/权限」时才值得拆多 Agent。拆分时优先按权限拆能碰钱的和不能碰钱的分开其次按领域拆。六、生产化检查清单每个节点单一职责可独立单测LangGraph 节点就是普通函数所有循环有最大次数限制thread_id有业务含义订单号/会话 id方便追溯危险操作前有 interrupt接 LangSmith 或自建日志每个节点的输入输出留痕状态里的字段做减法——状态越大每次 checkpoint 越贵。

相关新闻

Codex、Claude Code、OpenCode接入火山方舟:配置与排错全指南

Codex、Claude Code、OpenCode接入火山方舟:配置与排错全指南

最近一段时间,后台私信里被问到最多的组合就是 Codex、Claude Code、OpenCode 这三款 AI 编码工具怎么接火山方舟。原因我很理解:这三款工具本身都是各自赛道里最能打的那一档,但它们默认的模型服务门槛不低——Codex 默认走 OpenAI&#xff…

2026/9/30 15:31:11 阅读更多 →
wescode 从入门到实践:安装配置与远程开发完全指南

wescode 从入门到实践:安装配置与远程开发完全指南

要说清楚 wescode 是什么,得先从一个老开发者的视角捋一捋:这些年代码编辑器从记事本一路进化到 EDI,再到现在满地开花的 AI 辅助 IDE,工具越来越智能,但折腾安装配置的功夫也一个没少。wescode 就是这样一个存在——它…

2026/9/29 7:56:35 阅读更多 →
【Codex教育管理系统】搭建我的工作入口聚合个人任务与消息

【Codex教育管理系统】搭建我的工作入口聚合个人任务与消息

我的工作数据工作台是个人工作入口聚合页,负责把消息中心、下载中心、问题反馈、系统需求等常用功能按菜单权限整理成可搜索、可跳转、可记忆最近使用的工作台。 本文基于 MenuViewSet.mywork_router、菜单权限树和 MyWorkWorkWorkbenche 组件,说明如何把个人菜单、最近使用、…

2026/9/29 7:55:34 阅读更多 →

最新新闻

Python报错No module named collections:拼写、路径与同名文件全排查

Python报错No module named collections:拼写、路径与同名文件全排查

看到这个报错,第一反应如果你是想 pip install collections ,先把手从键盘上挪开。这个报错文案在网上被反复搜,但大多数情况下,真正要修的跟「安装」没什么关系,跟一个字母有关系——Python 标准库里只存在 collec…

2026/9/30 15:31:11 阅读更多 →
Spring Boot校园兼职创业平台:从零到答辩的核心方案

Spring Boot校园兼职创业平台:从零到答辩的核心方案

每年到这个时间点,总有学弟学妹来问同一个问题:毕设选题到底选什么。说实话,如果让我给一个“难度适中、技术含量足够、答辩有话说、还能兼顾实用性”的推荐,Spring Boot校园兼职创业平台绝对是排在前三的选择。为什么&#xff1f…

2026/9/30 15:31:10 阅读更多 →
Unity停止协程的五种姿势:原理、对比与实战避坑

Unity停止协程的五种姿势:原理、对比与实战避坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/30 15:31:10 阅读更多 →
Unity粒子系统深度实践:Sub Emitters与Stretched Billboard应用

Unity粒子系统深度实践:Sub Emitters与Stretched Billboard应用

1. 项目概述:为什么粒子效果是Unity 3D视觉表现的“呼吸感”核心在Unity 3D项目里,你有没有遇到过这样的场景:角色释放技能时只有一道光效闪过,缺乏层次;爆炸只有静态贴图一闪而过,观众完全感受不到冲击力&…

2026/9/30 15:31:10 阅读更多 →
医学审稿防数据注水:从p值、标准差到快速复核方法

医学审稿防数据注水:从p值、标准差到快速复核方法

医学审稿这些年,我见过最让我后背发凉的稿件,不是结论互相矛盾的那种,而是数据“漂亮”到不像真的那种。前阵子审到一篇随机对照试验,两组基线表堪称完美:年龄均值几乎一样,标准差精确到小数点后两位都相同…

2026/9/30 15:31:10 阅读更多 →
OpenStack源码解读:从Nova入手掌握核心架构与调试技巧

OpenStack源码解读:从Nova入手掌握核心架构与调试技巧

简介:这份《OpenStack技术源码模块解读》面向云计算开发与运维人员、源码阅读爱好者,以及希望从IaaS层理解OpenStack架构的中高级学习者,帮助解决组件繁杂、源码入门无从下手的问题。资源以Nova项目为主线,系统梳理OpenStack从最初…

2026/9/30 15:30:09 阅读更多 →

日新闻

Base64 图片头部特征识别:从文件头到格式判断的完整指南

Base64 图片头部特征识别:从文件头到格式判断的完整指南

1. 项目概述:为什么说看懂 base64 图片头部是基本功这几年跟 base64 打交道的机会越来越多,后端接口返回图片、前端渲染验证码、小程序里存小图、还有一些老系统导出报表,动不动就给你一段长到怀疑人生的 base64 字符串。很多人拿到字符串就直…

2026/9/30 0:00:35 阅读更多 →
Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

Java公交站牌广告管理系统:JSP+Servlet+MySQL实战落地指南

简介:本资源是一份面向Java初学者与课程设计学生的公交站牌广告灯箱管理系统毕业设计文档,聚焦城市公共广告资源信息化管理痛点,提供从需求分析到技术实现的完整方案。文档采用标准学术论文结构,含摘要、英文摘要、目录及五章正文…

2026/9/30 0:00:35 阅读更多 →
用 Redis Lua 构建大模型 API 多租户原子配额治理体系

用 Redis Lua 构建大模型 API 多租户原子配额治理体系

我去年年底接了一个内部 AI 平台的治理需求,背景很直接:公司把 DeepSeek、MiniMax 这类大模型 API 统一封装成内部网关,开放给几个业务团队用。结果第一个月账单出来,额度直接超了 4 倍。仔细查日志,发现原因并不复杂—…

2026/9/30 0:00:35 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/30 13:14:22 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/29 16:41:41 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/30 13:14:49 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/29 19:29:29 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/29 5:58:00 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/30 15:27:04 阅读更多 →