
LangGraph3 步跑通第一个有状态 Agent【免费下载链接】langgraphBuild resilient agents.项目地址: https://gitcode.com/GitHub_Trending/la/langgraphLangGraph 是一个用于构建有状态智能体的低层工作流编排框架它把多步 AI 流程组织成显式的图让每一步的中间状态都能被持久化、暂停和恢复。读完这篇文章你能克隆仓库、跑通一个最小状态机 demo再搭出一个带工具调用和记忆的 ReAct Agent并知道默认行为怎么改成自己的。 认知层 —— 这个项目到底在干什么它是什么一张会存档的流程图LangGraph 的核心是StateGraph。你往里加节点add_node和边add_edge再compile()就得到一个可运行的图。可以把它理解成一张会存档的流程图节点是步骤边决定流向而 checkpointer存档器负责在任意时刻把状态快照存下来崩了也能从断点接着跑。能帮你做什么README 里列了四个核心价值翻译成人话就是持久执行Agent 跑一半进程挂了重启后从存档点继续不用从头再来人在回路在任意节点前暂停让人检查或修改状态后再放行记忆短期工作记忆对话内 长期记忆跨会话用store可观测与部署本地调试有 Studio 可视化线上可部署成服务项目整体怎么组织源码全部放在libs/下每个子包独立发版langgraph/ ├── libs/langgraph/ # 核心框架StateGraph 定义与 Pregel 执行引擎 ├── libs/prebuilt/ # 预构建组件create_react_agent、ToolNode 等 ├── libs/checkpoint/ # 内存版 checkpointerInMemorySaver ├── libs/checkpoint-sqlite/ # SQLite 持久化后端 ├── libs/checkpoint-postgres/# PostgreSQL 持久化后端 ├── libs/cli/ # LangGraph CLI 与本地开发部署工具 ├── libs/sdk-py/ # Python 客户端 SDK用于调用已部署的图 └── examples/ # 历史示例已迁往官方文档仅作存档参考结构清楚了直接跑起来。 实操层 —— 从零到第一个可运行 demo获取代码一条命令git clone https://gitcode.com/GitHub_Trending/la/langgraph cd langgraph执行后应看到Cloning into langgraph...随后进入仓库根目录。准备环境装依赖只需 2 条命令框架要求 Python 3.10见libs/langgraph/pyproject.toml。先隔离环境再安装python -m venv .venv source .venv/bin/activate pip install -U langgraph执行后应看到Successfully installed langgraph-1.2.x langgraph-checkpoint ...一串依赖。如果只想跑仓库里的源码而不是 PyPI 版本把最后一条换成pip install libs/langgraph。⚠️ 现象报Requires-Python 3.10—— 解法说明系统 Python 版本太旧换 3.10 及以上的解释器重建虚拟环境不要直接往系统环境里装。跑通第一个示例两节点状态机下面这段代码定义了一个最小图START → greet → ENDinvoke 后返回更新过的状态。存成demo.py运行# demo.py最小 LangGraph 工作流 from langgraph.graph import StateGraph, START, END # 状态 schema一个 dict 子类各节点共享并更新它的字段 class State(dict): pass def greet(state): return {result: hello, state[name]} builder StateGraph(State) builder.add_node(greet, greet) builder.add_edge(START, greet) # 指定入口 builder.add_edge(greet, END) # 指定出口 app builder.compile() print(app.invoke({name: LangGraph}))执行后应看到{name: LangGraph, result: hello, LangGraph}。注意输出里result是被节点返回值合并进状态的这正是状态在节点间流转的含义。升级 demo带工具调用和记忆的 Agent真实场景很少是单节点。下面用libs/prebuilt/里的create_react_agent搭一个能调工具的 ReAct Agent并挂上内存 checkpointer让它跨多次调用记住上下文。存成agent_demo.py# agent_demo.py可调用工具、有记忆记忆的 ReAct Agent from langgraph.prebuilt import create_react_agent from langchain_openai import ChatOpenAI from langchain_core.tools import tool from langgraph.checkpoint.memory import InMemorySaver tool def get_weather(city: str) - str: 查询某城市天气 return f{city} 今天晴25 度 agent create_react_agent( modelChatOpenAI(modelgpt-4o-mini), # 任意 LangChain 聊天模型 tools[get_weather], checkpointerInMemorySaver(), # 会话状态存内存 ) config {configurable: {thread_id: session-1}} print(agent.invoke( {messages: [{role: user, content: 杭州天气怎么样}]}, config, ))执行后应看到 Agent 先调用get_weather工具再输出一条 AIMessage 回答天气。再 invoke 一次同thread_id的对话它会记得上一轮内容。⚠️ 现象ImportError: cannot import name InMemorySaver—— 解法checkpointer 在独立包langgraph-checkpoint里跑pip show langgraph-checkpoint确认它随langgraph一起装上了源码位于libs/checkpoint/。⚠️ 现象示例里的langchain_openai没装 —— 解法pip install langchain-openai。⚙️ 调优层 —— 把默认配置改成你自己的切换底层模型只改一个参数create_react_agent的model参数接受模型 id 字符串或任意聊天模型对象。换成别的提供商就构造对应的模型比如ChatAnthropic(modelclaude-3-5-sonnet)其余代码不动。改完效果Agent 的推理和工具调用都由新模型驱动tools列表不受影响。换持久化后端内存换成 Postgres默认InMemorySaver随进程退出而清空只够开发。要跨重启保留会话把 checkpointer 换成libs/checkpoint-postgres/包里的 Postgres saver连接方式看该目录源码和libs/checkpoint-postgres/tests/里的用法SQLite 版在libs/checkpoint-sqlite/。⚠️ 数据库密码、模型 API key 一律通过环境变量注入不要写死在代码或提交进仓库。让人按暂停加一个 interrupt 参数create_react_agent(..., interrupt_before[tools])或编译期传interrupt_before[节点名]图跑到该节点前会停下等你调用update_state放行或修改状态。改完效果关键动作比如真正执行工具前多了一道人工确认。核心可配置项汇总参数名类型默认值改它会怎样model模型 id / 聊天模型对象必传决定 Agent 用哪个 LLM 思考tools工具列表必传Agent 可调用的工具集空列表则不会调工具checkpointerCheckpointerNone不加则每次 invoke 互不相识加了才有会话记忆interrupt_before节点名列表None列表内节点执行前暂停等人工介入state_schema状态类None默认消息态自定义节点间流转的状态结构多环境dev/prod不用维护多份配置用环境变量选择即可import os env os.getenv(APP_ENV, dev) if env dev: checkpointer InMemorySaver() # 内存版进程退出即丢 else: # prodPG_DSN 从环境变量读取 # checkpointer 的构建方式参见 libs/checkpoint-postgres/ 源码 checkpointer None # 替换为 Postgres saver 实例️ 避坑层 —— 高频问题与下一步打开examples/里的 notebook 只有一行 This file has been moved。原因是示例整体迁到了 LangChain 官方文档该目录仅作存档保留见examples/README.md。想在仓库里找可运行的参考写法直接翻libs/langgraph/tests/下的测试文件比如test_pregel.py里面全是真实的图构建和断言。图能跑起来但输出是空的或者编译时报图不连通。原因是节点没有从START出发的路径、或没走到END。解法给孤立节点补上add_edge(START, ...)或add_edge(..., END)拿不准时用app.get_graph().draw_mermaid()打印图结构核对。同一个thread_idinvoke 两次状态却没接上。原因是挂了 checkpointer 但 invoke 时没传config。解法每次调用都带上{configurable: {thread_id: 同一值}}LangGraph 靠 thread_id 找到上次存档。想深入执行引擎直接读libs/langgraph/langgraph/pregel/_algo.py想摸清图构建 API 的全部选项看libs/langgraph/langgraph/graph/state.py的 docstring每个参数都带示例。现在打开终端把实操层的两个 demo 依次跑通再把模型换成你自己有 key 的那一个。【免费下载链接】langgraphBuild resilient agents.项目地址: https://gitcode.com/GitHub_Trending/la/langgraph创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考