大模型学习21 大模型学习 - LangGraph1_概述

发布时间:2026/10/29 11:10:05

大模型学习21 大模型学习 - LangGraph1_概述 1 什么是LangGraphLangGraph 是一个低级编排框架和运行时环境用于构建、管理和部署长期运行的有状态智能体agents。核心理念是将 Agent 工作流建模为图Graph其中节点Nodes代表计算单元可以是 LLM 调用、工具执行或任何自定义逻辑边Edges定义节点之间的转换逻辑决定执行流程状态State在整个图执行过程中共享和传递的数据LangGraph 独有的核心能力生产 Agent 刚需✅循环Agent 可以反复调用工具、反复反思直到满足条件最核心普通 chain 做不到✅持久化 Checkpoint执行一半暂停、断线、程序崩溃下次可以从刚才的状态继续跑不用从头来✅Human-in-the-loop人在回路流程跑到某个节点自动暂停交给人工审核、审批再继续跑✅ 支持多 Agent 协作多个智能体分工规划 Agent、检索 Agent、总结 Agent互相调度✅ 可观测每一步状态都能看到方便调试复杂 Agent提供了构建生产级智能体应用的核心能力持久化执行构建能够从故障中恢复并长时间运行的智能体人机协作在任何时刻检查和修改智能体状态记忆管理支持短期工作记忆和跨会话的长期记忆流式处理专为流式工作流设计生产级部署为有状态、长期运行的工作流提供可扩展的基础设施LangGraph官方源码地址及官网地址如下GitHub地址https://github.com/langchain-ai/langgraph官方文档https://docs.langchain.com/oss/python/langgraph/overview2 与 LangChain 区别LangChain提供一堆可复用组件PromptTemplate、LLM 封装、OutputParser、DocumentLoader、向量库、工具、LCEL 管道。擅长把各个模块拼起来做固定流程。LCEL|管道就是 LangChain 的链式语法只能串行、并行不能循环、不能动态分支。LangGraph专门解决【动态不确定流程】基于**图Graph**思想做状态驱动的流程控制。它本身不提供 LLM、提示模板这些组件里面节点直接用 LangChain 的 Chain、LLM、工具。擅长分支判断、循环迭代、人在回路、断点续跑的 Agent。LangGraph与LangChain的高级抽象不同它提供了更细粒度的控制让开发者能够精确控制智能体的执行流程适合需要定制化编排的复杂应用场景。通过一句话概述LangChain和LangGraph的区别当 LLM 应用需要「有状态、可循环、可分支的多步骤控制流像一个可回溯的流程图/状态机」时LangChain 很难优雅完成而必须用 LangGraph。以下表格以更细粒度的方式展示了两者的区别特性LangGraphLangChain抽象级别低级提供细粒度控制高级开箱即用状态管理内置状态机和检查点需要自行管理状态执行模型基于图的并行执行线性链式执行持久化原生支持需要额外实现适用场景复杂、有状态的智能体应用开发简单的链式调用特性LangChainLCEL ChainLangGraph流程形态线性 / 并行单向流水线 A→B→C图结构节点 条件边可以来回跳转、循环循环❌ 不支持链条走完就结束✅ 核心能力反复思考、反复调用工具分支判断有限很难做复杂条件路由✅ 原生支持条件边LLM 自主选择下一步全局状态每个节点输入输出传递没有统一共享状态✅ 统一 State 全局状态所有节点读写同一份状态断点 / 持久化❌ 跑完就没了不能暂停恢复✅ Checkpoint保存状态随时暂停、继续人在回路人工审核很难实现✅ 原生支持跑到节点停下来等人工确认适合场景 固定逻辑翻译、简单问答、同时并行调用多个 LLM你刚才 RunnableParallelAgent、工具调用、自动研究、多智能体协作正是因为LangGraph和LangChain上述的区别使得LangGraph在以下场景下有了更加广泛的应用复杂的多智能体系统需要长期记忆的应用需要人工审核的工作流后台处理任务和实时交互需要精细控制的定制化智能体编排3.环境创建conda create –-namelanggraph_venv3.12conda activate langgraph_venv pip install langgraph1.0.5确认成功pip show langgraph4. 简单实现使用LangGraph构建一个应用可以分为如下步骤1定义状态2定义节点函数3通过状态创建builder实例并添加节点和边4对builder进行编译得到可调用的graph对象5调用graph。接下来的例子以一个基于RAG的问答系统为例来做一个快速入门展示。该问答系统需要实现的功能如下当接收用户问题之后先分别进行联网搜索和基于知识库的检索得到结果之后使用大语言模型进行总结回答。具体代码如下所示fromtypingimportTypedDictfrompydanticimportBaseModelfromlanggraph.constantsimportSTART,ENDfromlanggraph.graphimportStateGraphfromlanggraph.typesimportSend,Commandfromrichimportprintasrprint# 定义图的状态结构# 定义状态classMyAgentState(TypedDict):query:str# 用户提问rag_res:str# rag检索我接过web_res:str# web搜索结果llm_res:str# LLM回复结果# 定义节点## 定义RAG节点defrag_node(state:MyAgentState):#取到 用户的原始提问querystate.get(query)# 这边模拟获取到了结果reg_resf用户原始提问为:{query},返回rag检索结果# 将结果更新到状态里面return{rag_res:reg_res}## 定义web搜索节点defweb_node(state:MyAgentState):# 拿到客户的原始节点querystate.get(query)# 模拟得到了结果web_resf用户原始提问为:{query},返回web搜索结果# 将结果更新到状态里面return{web_res:web_res}## 定义LLM节点defLLM_node(state:MyAgentState):# 拿到客户的原始提问querystate.get(query)# 拿到 rag 的检索结果rag_resstate.get(rag_res)# 拿到 web 的搜索结果web_resstate.get(web_res)# 模拟得到了结果llm_resf用户原始输入:{query},rag检索结果:{rag_res},web搜索结果:{web_res}return{llm_res:llm_res}# 构建 builder 实例化状态图构建器指定状态模板builderStateGraph(state_schemaMyAgentState)# 王状态图中添加节点# rag_node -- 取了一个名字,重命名builder.add_node(rag_node,rag_node)builder.add_node(web_node,web_node)builder.add_node(LLM_node,LLM_node)# 网状态图中添加边#起点 → rag节点builder.add_edge(START,rag_node)#起点 → web搜索节点builder.add_edge(START,web_node)# rag节点完成后 → 汇总节点llmbuilder.add_edge(rag_node,LLM_node)# web节点完成后 → 汇总节点llmbuilder.add_edge(web_node,LLM_node)# llm节点完成 → 图结束builder.add_edge(LLM_node,END)# 编译图,得到可运行的buildercompile_graphbuilder.compile()# 触发执行,传入初始状态rescompile_graph.invoke({query:如何使用LangGraph})# 打印最终状态结果rprint(res)运行结果 :编译好之后可以通过mermaid查看图的结构。# pip install grandalfgraph_structurecompiled_graph.get_graph()resgraph_structure.draw_ascii()print(res)
延伸阅读

更多相关文章

2026/10/29 11:05:05

第3讲:Prompt 工程与管理——像管理代码一样管理提示词

一、为什么需要管理 Prompt初级做法: ┌──────────────────────────────────────────────┐ │ func askAI(question string) string { │ │ prompt : "请回答以下问题:" ques…

2026/10/29 11:05:05

谍赞把一个“发内容”的动作,做成一条能跑通的流水线

——记一次内容运营团队的 AI 工作台落地项目记录|谍赞智能 企业 AI 转型顾问 服务方式:需求诊断 方案设计 培训 陪跑 兜底 记录时间:2026 年 10 月先把项目说清楚客户是一家做内容运营的团队,人不多,活很杂。选题…

2026/10/29 12:25:29

马尾辫技术拆解:发根倒梳、固定与碎发处理全流程

1. 马尾辫这个看似简单的事,其实门道不少ponytail,马尾辫,可能是全世界出现频率最高的发型,没有之一。从幼儿园小姑娘到通勤上班族,从健身房到红毯,马尾辫几乎覆盖了所有年龄层和场景。但恰恰因为它太常见&…

2026/10/29 12:25:29

Material UI滑动选择器样式深度定制指南

1. 项目背景与需求分析 最近在开发一个数据可视化后台时,发现系统原生的滑动选择器(Slider)组件样式过于单调,与整体UI设计风格不协调。经过调研发现,Material UI提供的Slider组件虽然功能完善,但默认样式在以下场景存在不足&…

2026/10/29 12:25:29

大模型:AI时代的操作系统与开发范式变革

1. 大模型:AI时代的操作系统革命 去年第一次用ChatGPT写代码时,我就被它的"思考能力"震惊了。它不仅能理解模糊的需求描述,还能自动补全整个函数实现——这完全颠覆了传统编程工具的使用体验。这种能力的背后,正是大模型…

2026/10/29 12:25:29

强化学习在出行服务调度中的动态优化实践

1. 项目概述:当出行服务遇上强化学习 去年夏天,我在为某出行平台做效率优化咨询时,遇到一个典型难题:早晚高峰时段,平台既需要保障司机收入,又要控制乘客等待时间,还要应对突发天气变化。传统静…

2026/10/29 12:25:29

ponytail 插件实战:从安装到自动化工作流搭建

ponytaill 插件实战:从安装到自动化工作流搭建 说实话,第一次听说 ponytail 这个插件工具时,我以为是哪个开源作者在取名上偷了懒——马尾巴?皮筋?直到真正用了几天,才发现这东西解决的是我工作中最头疼的重…

2026/10/29 12:20:29

ico小头像设置全攻略:从PNG到多尺寸ICO的转换、应用与避坑指南

简介:这份资源是一份关于ico小头像(favicon)设置的入门教程文档,主要面向需要为网站添加浏览器图标标识的站长、前端开发者和网站运营人员。文档从favicon的起源与作用讲起,说明其在品牌展示和用户体验中的价值&#x…

2026/10/28 14:42:12

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/28 15:28:56

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/28 3:32:29

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/29 0:03:42

学生选课系统DFD图绘制指南:边界划分与分层校验实战

简介:文档以顶层与第一层DFD图为核心,完整刻画学生选课系统的逻辑模型,面向软件工程课程设计、系统分析学习及毕设前期建模人群。顶层图界定系统边界,外部实体包括管理员、教师和学生三类角色;第一层图进一步细化用户登…

2026/10/29 0:03:42

JIRA敏捷落地:Scrum角色权限、Sprint与燃尽图避坑指南

简介:围绕“基于JIRA的敏捷开发项目管理”这一主题,面向产品负责人、Scrum Master及研发测试成员,梳理Scrum角色分工、迭代流程与JIRA工具配置的对应关系,适合初、中级团队导入敏捷管理时参考。压缩包共1个docx文件,大…

2026/10/29 0:03:42

SEMI S8人机工程验收实战:从条款拆解到现场实测的完整指南

简介:面向半导体设备设计、制造与运维工程师及安全合规人员,这份资料聚焦SEMI标准体系下的设备安全规范,重点收录SEMI S8-0308《半导体制造设备人体工程学工程安全指南》。内容围绕设备设计原则、错误与事故预防、人体工程学适配三大主线展开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑