LangGraph 预构建 Agent 实战:create_agent、Supervisor、Swarm 到底封装了什么
LangGraph 企业级 Agent 教程 · 第 6 集。create_agent三行起一个标准 ReAct 循环get_graph()拆开它的真实结构只有两个业务节点middleware怎么把限流/审批变成真节点以及 Supervisor 和 Swarm 的套娃本质。前五集我们全程自己写StateGraph——定义 state、加 node、连 edge、画条件边和循环边。但很快会发现,有几张图你会反复搭一个能调工具、看结果、再判断的 Agent;给这个 Agent 加上最多调 3 次“危险动作先问人”;让多个专家 Agent 分工协作。这些图结构高度标准化。人类团队遇到标准化的活会直接用现成模板,不会每次都从零画流程图。LangGraph 也把这几张反复出现的图封装成了预构建件——create_agent、middleware、create_supervisor、create_swarm。这一集不是要背这几个 API 名,而是要判断哪些需求已经被标准件覆盖,可以直接拿来用;哪些超出了标准件,必须回到自定义 StateGraph。为什么 AI 显得蠢因为它被剥夺了工具和负反馈很多人觉得 AI 蠢,其实是拿一个被剥夺了工具和反馈的它,去比一个工具和反馈都齐全的人。人解决问题显得聪明,不是一次就想对,而是因为人是一个带工具 负反馈的个体手里有很多工具(查资料、算一遍、问同事),每做一步都有负反馈(算错会发现、对方说不对会改)。于是能不断试错、纠偏。纯 LLM 正好被剥夺这两样没工具(只凭记忆)、没负反馈(说完即止,错了不知道、不能回头)。它不是笨,是一锤子买卖 没有手。ReActReason Act就是把这套逻辑还给模型Reason想下一步→ Act用工具动手→ Observe看结果这就是负反馈→ 再 Reason ↑___________________ 循环到模型认为做完 ___________________|create_agent封装的就是这条标准循环,三行代码就能搭出来opsbot_agent create_agent( chat_model, ops_tools, system_promptopsbot_prompt,)用一个客服场景验证“查一下订单 A100 的状态,如果这笔订单金额是 299 元,帮我估算可退多少钱。” 真实 LLM 决定调用哪些工具,预构建 Agent 负责把 tool call、tool execution、再思考循环串起来消息总数: 6是否产生 tool_calls: 是工具消息数量: 2拆开黑盒create_agent 内部只有两个业务节点不要把create_agent当黑盒相信。它返回的就是一个CompiledStateGraph——和你自己写StateGraph().compile()是同一种东西。不靠我说的图,直接用内省方法让 agent 自己说出节点和边graph opsbot_agent.get_graph()for node in graph.nodes.values(): print( -, node.id)for edge in graph.edges: arrow 条件边 if edge.conditional else 硬边 print(f - {edge.source:10} → {edge.target:10} ({arrow}))打印出来只有 4 个框__start__、model、tools、__end__。去掉 middleware 相关分支后,create_agent的核心组装其实就这几行(源码精简版)graph.add_node(model, RunnableCallable(model_node, amodel_node, traceFalse))graph.add_node(tools, tool_node)graph.add_edge(START, model)graph.add_conditional_edges(model, _make_model_to_tools_edge(...), [tools, END])graph.add_conditional_edges(tools, _make_tools_to_model_edge(...), [model, END])三件事值得记住只有model和tools两个真正的业务节点。你自己手写 ReAct 也会写这两个节点,预构建只是替你写好了。循环终止不看模型嘴上说我结束了,而是看最后一条AIMessage还有没有tool_calls。这个判断函数叫_make_model_to_tools_edge,模型并不能直接喊停,是这个函数决定的。tools → model也是条件边,不是硬边。如果某个工具声明了return_directTrue,tools也可能直接跳到END,不会再回model。体检口诀遇到不熟悉的预构建 Agent,先print(agent.get_graph().draw_mermaid()),让它自己说出结构,再去读源码。middleware把横切关注点从 prompt 里搬出来学生最常见的反直觉点是Agent 出了问题,第一反应是再加一句 prompt。但这些动作根本不属于业务对话“最多调 3 次模型,再多就停”——这是预算控制,不是业务规则“用户消息里如果有信用卡号要打码”——这是合规,不是业务规则“issue_refund 调用前必须先问人”——这是审批,不是业务规则。把这些塞进 prompt,模型只是被告知应该这样做,并不一定会真的做。middleware的设计是把这些横切动作拆出来,变成图里真实的节点,不依赖模型的自觉。关键判断middleware 不是装饰器,是真节点。源码会扫描每个 middleware 是否实现了before_agent/before_model/after_model/after_agent四个钩子之一,然后为每个钩子add_node一个新节点,并把入口、循环入口、循环出口、退出节点一一替换掉。这就是为什么有时候你打印get_graph()会看到比model、tools更多的节点——那是 middleware 注入进去的钩子节点,骨架还是同一条 ReAct 循环。预构建的代价快但控制力少——一个真实反例预构建 Agent 并不是不能审批、不能中断。它自带这些开关工具执行前要人工确认用interrupt_before[tools]checkpointer,或者用HumanInTheLoopMiddleware整段挂起恢复靠checkpointer,和第 3 集讲的完全一样。但默认状态下,create_agent会直接执行有副作用的危险工具。用一个退款场景验证unsafe_agent create_agent( chat_model, [query_order_status, issue_refund], # issue_refund 是有副作用的危险工具 system_prompt你是退款助手。用户要求退款时先查订单再调用 issue_refund。,)unsafe_result unsafe_agent.invoke({ messages: [HumanMessage(content给订单 A100 直接退款 100 元。)]}) plaintext 危险工具是否被调用: 是为什么这是问题: 默认 agent 直接执行了退款中间没有任何审批关卡这里的判断分两层修复它不一定要迁移——预构建自带interrupt_before[tools]和HumanInTheLoopMiddleware,就能在工具执行前加上审批关卡,这条路径完全在第 3 集讲过的机制里。真正需要迁移到自定义StateGraph的,是超出标准循环的需求自定义业务状态(比如risk_level、pending_approval)、复杂路由、把审批 / 权限 / 审计做成图里的一等显式结构。唯一不能做的,是把请谨慎塞进 prompt 当安全边界——模型不保证照做。Supervisor 和 Swarm本质是套娃不是魔法第 5 集讲过 Tools 和 Subgraph 的能力原子化;这一集继续往上一层把一个专家 Agent 原子化。create_supervisor让一个主管调度多个专家,适合任务分发create_swarm让多个专家平级交接,适合客服转接。但别把它们当魔法——和create_agent一样,create_supervisor/create_swarm编译出来同样是CompiledStateGraph每个专家就是图里的一个节点,而专家内部又是前面那张 model / tools 循环。所谓多 Agent,本质就是把一张 ReAct 图当成一个节点,再用一张更大的图把它们连起来。order_agent create_agent(chat_model, [query_order_status], nameorder_expert)refund_agent create_agent(chat_model, [query_refund_policy, calculate_refund_amount], namerefund_expert)supervisor_app create_supervisor( [order_agent, refund_agent], modelchat_model, prompt你是客服主管。根据用户问题把任务交给订单专员或退款专员。,).compile()验证套娃结构print(supervisor 实际类型:, type(supervisor_app).__name__)for node in supervisor_app.get_graph().nodes.values(): print( -, node.id)打印出来能看到supervisor、order_expert、refund_expert真就是图里的节点。Supervisor 的本质是——主管 Agent 把专家当成可调用的能力,而不是把所有工具塞进一个大 Agent。另一种拓扑是 Swarm去掉中心主管,让专家用handoff工具直接把对话交接给对方,并用active_agent记住当前由谁负责order_member create_agent( chat_model, [query_order_status, create_handoff_tool(agent_namerefund_member)], nameorder_member,)swarm_app create_swarm([order_member, refund_member], default_active_agentorder_member).compile()区别很直观Supervisor 里有一个中心节点分发任务;Swarm 里没有中心节点,而是order_member通过一个transfer_to_refund_member的 handoff 工具,把对话直接交接给refund_member。选型口诀任务分发、结果汇总用 supervisor;连续转接、平级协作用 swarm。什么时候从预构建迁移到自定义需求推荐选择原因3 天内做一个能查工具的 democreate_agent标准循环速度优先多个专家角色由主管分配create_supervisor角色能力原子化中心调度客服在多个专家间平级转接create_swarm用active_agent保持当前负责角色退款、重启、发布等副作用动作自定义 StateGraph需要审批、权限、审计需要user_role、risk_level等字段自定义 StateGraph预构建核心 state 以 messages 为主学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

相关新闻

Java中ASCII字符编码与十进制转换实践

Java中ASCII字符编码与十进制转换实践

1. ASCII编码的本质与历史背景ASCII(American Standard Code for Information Interchange)作为计算机领域最基础的字符编码标准,其设计理念深刻影响了现代计算机系统。1963年由美国国家标准学会(ANSI)首次发布&#x…

2026/10/15 13:03:19 阅读更多 →
HoRain云--Codex 斜杆 / 命令

HoRain云--Codex 斜杆 / 命令

🎬 HoRain云小助手:个人主页 🔥 个人专栏: 《Linux 系列教程》《c语言教程》 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!…

2026/10/16 20:10:37 阅读更多 →
音乐格式转换终极指南:免费解锁各大平台加密音频的完整方案

音乐格式转换终极指南:免费解锁各大平台加密音频的完整方案

音乐格式转换终极指南:免费解锁各大平台加密音频的完整方案 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: …

2026/10/16 21:12:33 阅读更多 →

最新新闻

GNSS/INS松组合导航Matlab实现:卡尔曼滤波与误差状态详解

GNSS/INS松组合导航Matlab实现:卡尔曼滤波与误差状态详解

简介:面向航空航天、自动驾驶与航海等导航应用场景,这份GNSS/INS松组合导航Matlab程序适合需要研究卫星/惯性组合导航算法的工程师与在校生。程序围绕GNSS与INS数据融合展开:先由GNSS轨迹生成模拟惯导输出,再经卡尔曼滤波、四元数…

2026/10/17 16:56:54 阅读更多 →
Ubuntu 18.04下evo轨迹评估稳定实践指南

Ubuntu 18.04下evo轨迹评估稳定实践指南

1. 为什么在Ubuntu 18.04上坚持用evo——不是怀旧,是工程现场的刚性需求你可能在2024年听到“Ubuntu 18.04”会下意识皱眉:这系统早该退役了。但现实是,我去年参与的三个机器人SLAM项目、两个高校移动平台课程实验、以及某工业AGV定位模块的现…

2026/10/17 16:56:54 阅读更多 →
Artcraft:数字创作中艺术与工艺融合的方法论

Artcraft:数字创作中艺术与工艺融合的方法论

1. “Artcraft”不是新词,而是被长期误读的创作方法论原点“Artcraft”这个词最近突然在多个内容平台冒头,有人把它当AI绘画新模型,有人当成某款小众设计工具,还有人以为是某个海外艺术节的缩写。我第一次在某跨平台图像处理Demo的…

2026/10/17 16:56:54 阅读更多 →
Go接入微信支付API v3:签名、证书与回调验签全流程指南

Go接入微信支付API v3:签名、证书与回调验签全流程指南

1. 为什么偏偏是Go来写微信支付做开发这些年,微信支付接入应该算是“看起来简单、真正动手全是坑”的典型代表。尤其对Go开发者来说,网上搜到的资料要么是旧版API v2的XML体系,要么是半懂不懂的人拿Java代码硬转过来的伪Go写法,真…

2026/10/17 16:56:54 阅读更多 →
微信推送的“省着用“设计

微信推送的“省着用“设计

文章目录约束设计:三级分流队列:JSONL 文件锁Digest:每小时整理一次配额:三层防线为什么不用消息队列中间件总结约束 通过官方通道给微信发消息,有个硬约束:全天主动发送上限 10 条。超过就发不出去。 1…

2026/10/17 16:56:54 阅读更多 →
RAG切片策略指南:从原理到源码,解决知识库效果瓶颈

RAG切片策略指南:从原理到源码,解决知识库效果瓶颈

简介:这份源码资源面向正在搭建RAG应用、需要优化长文档切分环节的开发者与AI学习者,围绕检索增强生成中的切片策略展开,帮助解决文档切分粒度不当导致检索召回差、生成答案质量低的问题。资源包共5个文件,以Python脚本为主&#…

2026/10/17 16:55:53 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/16 14:23:36 阅读更多 →