LangGraph 如何快速上手:用一条状态流水线 10 分钟搭出有记忆的 Agent

发布时间:2026/11/3 22:29:19

LangGraph 如何快速上手:用一条状态流水线 10 分钟搭出有记忆的 Agent LangGraph 如何快速上手用一条状态流水线 10 分钟搭出有记忆的 Agent【免费下载链接】langgraphBuild resilient agents.项目地址: https://gitcode.com/GitHub_Trending/la/langgraphLangGraph 是一个低层编排框架orchestration framework专门用来构建长时运行、带状态stateful的智能体。你可以把它理解成一条工厂流水线State是随线流转的工单节点是各道工序框架负责派工、存档和断点续跑。下面带你 10 分钟跑通第一个 agent并看懂仓库该怎么读。痛点开场为什么普通函数链撑不住 Agent让 LLM 循环思考 → 调工具 → 再思考用while循环或函数链很容易写出来但一遇真实场景就卡壳流程走到一半想插入人工审批没有地方暂停进程重启后对话历史全丢想排查它为什么走了这条分支无从下手。LangGraph 为你做的事把 Agent 建模成一张图graph每个节点是一个函数状态在节点间按边流转框架每轮执行后自动把状态存成快照checkpoint失败或中断后可从原处续跑还能在任意节点前暂停等人确认human-in-the-loop。一句话它管的是流程怎么走、状态存到哪至于节点里调什么模型你自己定。如何 10 分钟跑通第一个带工具的 Agent环境准备只需要 Python 3.9 和一个能用的 LLM示例用 OpenAI换成任何 LangChain 支持的模型都行pip install -U langgraph # 需要浏览仓库源码时 git clone https://gitcode.com/GitHub_Trending/la/langgraph最小可运行示例全程 10 行左右from langchain_openai import ChatOpenAI from langgraph.prebuilt import create_react_agent agent create_react_agent( modelChatOpenAI(modelgpt-4o-mini), tools[lambda: 当前时间是下午三点], # 一个最简工具 ) print(agent.invoke({messages: [{role: user, content: 现在几点了}]})) # 输出 messages 中会包含工具调用结果与最终回答跑通后你会看到模型先决定调用工具、拿到结果再作答——这正是后面要拆解的核心循环。提示想直观看到这张图长什么样可安装配套的 LangGraph CLI 并运行langgraph dev浏览器里会出现可视化界面图中__start__ → callModel → __end__就是工单从进厂、过一道工序到出厂的完整路径。代码地图只读 10% 代码的话先读哪里langgraph/ ├── libs/langgraph/ # 流水线本体StateGraph、执行引擎、状态通道 ├── libs/prebuilt/ # 预制工位create_react_agent 开箱即用 agent ├── libs/checkpoint*/ # 存档系统内存/SQLite/Postgres 状态快照 ├── libs/cli/ # 前厅langgraph dev 可视化与部署工具 ├── libs/sdk-py/ # 远程调用已部署 agent 的客户端 └── examples/ # 成品展示柜从最简 react agent 到多智能体只读 10% 代码的路线先读 examples/react-agent-from-scratch.ipynb它从零用StateGraph手工搭出 ReAct agent是理解本框架的最好入口然后读 libs/prebuilt/langgraph/prebuilt/chat_agent_executor.py 里的create_react_agent对比手工搭和预制的差别。libs/cli/、libs/sdk-py/属于部署与远程调用范畴初期可以完全跳过。核心机制拆解Pregel 引擎的三步流转入口类是 libs/langgraph/langgraph/pregel/main.py 中的Pregel——工厂的总调度执行细节在_loop.py和_algo.py。它按步骤 1 → 2 → 3循环步骤 1读工单取当前 State工单根据图结构决定这一轮该跑哪些节点。步骤 2派工执行并行执行这些节点每个节点是一个普通函数读入 State、返回更新字典。步骤 3合并存档把各节点返回值按合并规则reducer写回 State——例如消息字段用add_messages是追加而非覆盖——然后整份 State 存成一份快照checkpoint再回到步骤 1直到走到END节点。提示正因为每轮结束都存档断点续跑不是特殊功能而是循环的副产品——你不需要写任何恢复代码。常用参数一览参数作用一句话说明checkpointer指定快照存储不传则每轮结束即丢失无法多轮续聊thread_id会话线程标识写在invoke的 config 里同一 id 才能续上历史interrupt_before/interrupt_after人工卡点在指定节点前/后暂停等你调用update_state放行debug打印调度日志每轮选了哪些节点、状态怎么变一目了然新手最常见的 3 个报错与排查方法1. 现象加了条件分支后节点从不执行原因路由函数返回值必须是图中真实存在的节点名或END拼错一个字母该分支就永远走不到。 解决检查清单——① 路由函数return的值与add_node的名字逐字一致② 每个分支最终都能到达END③ 用graph.get_graph().draw_mermaid()核对结构。仍不确定就在compile(debugTrue)下跑一遍日志会打印每轮被派工的节点。2. 现象消息越聊越短旧消息被覆盖原因State 里messages字段没配 reducer默认就是整字段覆盖。 解决定义状态时用Annotated[list, add_messages]它来自 libs/langgraph/langgraph/graph/message.py语义是追加预制 agentcreate_react_agent内部已配好手写图时最常被漏掉。3. 现象换进程后失忆多轮对话接不上原因InMemorySaver只活在当前进程里脚本一退全丢或两次invoke用了不同的thread_id。 解决确认每次调用传同一个thread_id需要跨进程持久化时把 checkpointer 换成 libs/checkpoint-postgres/ 里的 PostgresSaver 或 libs/checkpoint-sqlite/ 的 SQLiteSaver。⚠️警告InMemorySaver文档里明确标注仅供调试与测试生产环境不要用它存会话。动手改一改两个 8 行内的修改先在自己的分支上改git checkout -b feature/xxx不要直接动主分支。方向一给 agent 加一道内容太短就追问的工序。修改前图是一条固定流水线builder.add_edge(agent, END) # 原来模型说一次就直接出厂修改后在模型和 END 之间插一个判断def route(state): # 返回的必须是节点名或 END return agent if len(state[messages][-1].content) 10 else END builder.add_conditional_edges(agent, route) # builder.add_edge(agent, END) # 删掉这条固定边改完观察什么debugTrue日志里会出现agent节点第二轮被派工输出消息比原来多一轮追问。方向二让两次invoke之间记住上下文。修改前每次调用都是全新会话agent.invoke({messages: [...]}) # 无 checkpointer调用间互不知情修改后挂上一个内存存档器并固定 thread_idfrom langgraph.checkpoint.memory import InMemorySaver agent builder.compile(checkpointerInMemorySaver()) cfg {configurable: {thread_id: demo}} agent.invoke({messages: [{role: user, content: 我叫小张}]}, cfg) agent.invoke({messages: [{role: user, content: 我叫什么}]}, cfg) # 第二次调用能答出小张改完观察什么第二次回答引用了第一次的信息若把thread_id换成新值则重新失忆——这正是会话隔离的机制。学习路线图读懂 → 改起来 → 参与贡献读懂第 1 周跑通 examples/ 里的 3 个笔记本——react-agent-from-scratch.ipynb、subgraph.ipynb、human_in_the_loop/wait-user-input.ipynb分别对应基础循环、子图嵌套、人工介入。改起来照上一节两个方向动手再试试 libs/checkpoint-sqlite/ 把会话落到磁盘。参与贡献动手前先跑对应包的测试libs/langgraph/tests/ 和 libs/prebuilt/tests/ 里每个功能都有标准用法示例报错行为也都有测试覆盖docs/llms.txt 列出了文档索引方便查证概念。⚠️提醒这个仓库是只读的任何修改都在自己的分支或本地副本上进行。现在就打开终端把第二节那 10 行代码跑一遍——看到第一条tool_call输出时你就真正进入这条流水线了。【免费下载链接】langgraphBuild resilient agents.项目地址: https://gitcode.com/GitHub_Trending/la/langgraph创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/1 22:17:58

轻量级视觉SLAM系统实现:前端、后端与回环检测的工程实践

简介:这是一套面向SLAM算法学习者与嵌入式视觉开发者设计的轻量级C语言视觉SLAM系统实现,聚焦Linux平台下的实时相机位姿估计与稀疏三维建图任务,适用于算法原理验证、课程设计及资源受限场景下的工程原型开发。压缩包共60个文件,…

2026/10/30 23:03:24

React破防指南:从核心机制到多端与AI Agent实战

刷 B 站的时候,刷到过一个切片标题叫“【Derapchu/熟切】react to wifies新arg破防5分钟实录(雾”,第一反应这是某个视频区 Up 主对 Wi-Fi 相关新剧情做的反应合集,评论区大概还会飘过一片“哈哈哈哈”和“泪目”。但如果把“reac…

2026/11/3 22:28:10

万能灯库编辑器:解决多格式灯光控制兼容难题

1. 项目概述:万能灯库编辑器的行业价值灯光控制领域长期存在一个痛点:不同品牌控台之间的灯库格式互不兼容。MA2控台使用XML格式,老虎控台采用D4专属格式,GrandMA系列又有自己的规范。每次更换设备或协同工作时,灯光师…

2026/11/3 22:28:10

AI筛选测试如何改变软件测试行业与职业发展

1. 项目概述:AI筛选测试如何重塑软件测试行业最近两年,招聘平台的AI筛选测试正在快速改变软件测试从业者的就业环境。作为在这个行业摸爬滚打十年的老测试人,我亲眼见证了从纯手工测试到自动化测试,再到如今AI主导筛选的整个演进过…

2026/11/3 22:28:10

JavaScript对象创建与操作全解析

1. JS对象:前端开发的基石与灵魂作为JavaScript三大核心概念之一(另两个是作用域和原型链),对象几乎贯穿了每一个前端项目的始终。记得我刚入行时,面对各种花式对象操作总是一头雾水——为什么有的属性可以枚举有的不行…

2026/11/3 22:28:10

AWR1843AOP毫米波雷达芯片深度解析:AOP封装、FMCW链路与三核架构

简介:这份资源是德州仪器 AWR1843AOP 毫米波雷达芯片的官方数据手册,面向从事自动驾驶、机器人、工业感知等领域的硬件工程师、雷达算法开发者及嵌入式软件人员,用于快速掌握该芯片的射频参数、系统架构与接口定义,为选型评估和电…

2026/11/3 22:28:10

scan chain DRC 全流程:违例分类、定位与修复

1. 先把话说透:scan chain 与 DRC 到底在解决什么问题 做 DFT 的头一年,最容易出现的错觉就是:scan chain 插进去、网表吐出来、ATPG 跑出个数,活就干完了。真正上过几次流片前的 signoff 流程才发现,插链只是把结构搭…

2026/11/3 22:23:09

VoiceStudio Windows部署实战:配音、克隆、转写三大功能避坑指南

语音类开源项目这两年冒出来不少,但真正能在本地跑通、还带完整配音、克隆、转写三件套的,其实没几个。VoiceStudio 算是其中比较能打的一个——四万六千多 Star 的体量摆在那,社区活跃度、模型更新频率、文档完整度都经得起折腾。不过 Star …

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

2026/11/3 1:04:48

STM32实战:基于MAX14431数字隔离器的SPI隔离通信方案

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

2026/11/3 1:04:48

工业SPI隔离通信设计:MAX14431BAEE+与STM32L4A6RG实战

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

2026/11/3 1:04:48

STM32+NRF24L01无线抢答器:硬件设计、通信协议与低功耗实现

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

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/3 14:24:53

SSM电子书店源码全解析:结构、原理、部署与排错实战

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

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

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

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