LangGraph是构建生产级Agent的底层操作系统,提供五大能力:持久化执行、人机协同、全方位记忆、调试支持和生产级部署。其架构基于状态在节点间的流转与演化,支持传统DAG不具备的循环功能,实现Agent的"思考-行动-观察"循环。LangGraph提供Graph API和Functional API两种开发模式,通过StateGraph、Nodes和Edges构建最小可用图,标志着LLM应用开发从"Prompt Engineering"进阶到"Flow Engineering"。

前排提示,文末有大模型AGI-CSDN独家资料包哦!

01 前言

如果说 LangChain 是高层次使用的组件库,那么 LangGraph 就是那个底层的操作系统,专门为构建、管理和部署**长时运行(long-running)且有状态(stateful)**的 Agent 而生。

LangGraph 为了解决生产级 Agent 的痛点,提供了五大能力:

1、持久化执行:智能体可以在失败后从断点恢复,支持长达数天甚至数周的任务运行。

2、人机协同:支持在智能体决策的关键节点进行人工拦截、检查或修改状态。

3、全方位记忆:创建具有状态的智能体,既具备用于持续推理的短期工作记忆,又拥有跨会话的长期记忆。

4、借助LangSmith调试:利用可视化工具深入了解复杂的智能体行为和运行时指标。

5、生产级部署:设计可扩展基础设施,自信地部署有状态、可长期运行的智能体系统。

02 架构解析

LangGraph 的设计深受 Google Pregel 图计算模型和Apache Beam数据流抽象的影响。它的核心运转逻辑并不复杂,本质上是状态(State)在节点(Nodes)之间的流转与演化

区别于传统的 DAG(有向无环图)工作流,LangGraph 原生支持循环(Cycles),这对于实现 Agent 的“思考-行动-观察”循环至关重要。

LangGraph如何通过共享状态将各个组件串联起来,架构全景图如下:

一个关键概念:State 是不可变的概念,通过 Reducer 演进。在代码层面,我们定义一个 TypedDict,当节点返回数据时,LangGraph 并不是直接覆盖原有的 State,而是根据你定义的 Reducer(通常是 operator.add)将新消息追加到历史记录中。

03 开发范式

LangGraph 支持两套成熟的构建模式,以满足不同开发者的“需求”:

1、Graph API(经典模式):

特点:显式定义 StateGraph,手动执行 add_node 和 add_edge。

适用场景:适合需要极度精细控制路由、或者需要将复杂逻辑可视化的场景。它是这一系列文章的基础,因为最能体现“图”的本质。

2、Functional API(Pythonic 模式):

特点:这是 2025 年推出的特性。通过 @entrypoint 和 @task 装饰器,你完全可以用标准的 if/else 和 while 循环来写逻辑。

适用场景:对软件工程师更友好,代码可读性更高,像写普通 Python 函数一样构建 Agent,底层自动转化为图结构。

建议:先掌握 Graph API,因为它能让你直观地理解 Checkpoint 和 State 的流转原理。

04 核心机制

要构建一个最小可用的图,我们需要关注三个要素:

1、StateGraph:图的骨架。

2、Nodes:具体的业务逻辑函数。

3、Edges:控制流转的规则(特别是条件边)。

一个示例,标准的 ReAct 模式(Reasoning + Acting)的最小实现代码:

# 环境准备:
# pip install langgraph langchain-deepseek langchain-core
import json
import os
from typing import Annotated, TypedDict, Literal
from langchain_core.messages import BaseMessage, ToolMessage
from langchain_core.tools import tool
from langchain_deepseek import ChatDeepSeek
from langgraph.graph import StateGraph, END
from langgraph.graph.message import add_messages
# --- 1. 定义状态 (State) ---
classAgentState(TypedDict):
# 使用 add_messages 确保消息是追加而非覆盖
messages: Annotated[list[BaseMessage], add_messages]
# --- 2. 定义工具 (Tools) ---
@tool
defget_weather(city: str) -> str:
"""查询指定城市的实时天气信息。"""
# 模拟真实 API 调用
print(f"    🛠️ [工具调用] 正在查询 {city} 的天气...")
if"杭州"in city:
return json.dumps({"city": "杭州", "temp": "15℃", "condition": "晴朗"})
elif"上海"in city:
return json.dumps({"city": "上海", "temp": "22℃", "condition": "多云"})
return json.dumps({"city": city, "temp": "未知", "condition": "未知"})
tools = [get_weather]
# --- 3. 初始化模型并绑定工具 ---
# DeepSeek 模型原生支持 Function Calling
os.environ["DEEPSEEK_API_KEY"] = "sk-..."
llm = ChatDeepSeek(
model="deepseek-chat",  # 或 deepseek-reasoner (R1)
temperature=0
)
# 关键步骤:让模型知道有哪些工具可用
llm_with_tools = llm.bind_tools(tools)
# --- 4. 定义节点 (Nodes) ---
defreason_node(state: AgentState):
"""思考节点:LLM 接收历史消息,决定是回复用户还是调用工具"""
return {"messages": [llm_with_tools.invoke(state["messages"])]}
deftool_node(state: AgentState):
"""工具节点:解析 LLM 的工具调用请求,执行函数并返回结果"""
last_message = state["messages"][-1]
# 构造工具执行结果的消息列表
tool_outputs = []
for tool_call in last_message.tool_calls:
# 寻找对应的工具函数
selected_tool = {t.name: t for t in tools}[tool_call["name"]]
# 执行工具
try:
output = selected_tool.invoke(tool_call["args"])
except Exception as e:
output = f"Error: {str(e)}"
# 构造 ToolMessage 返回给 LLM
tool_outputs.append(
ToolMessage(
content=str(output),
tool_call_id=tool_call["id"]
)
)
return {"messages": tool_outputs}
# --- 5. 定义条件边 (Conditional Edge) ---
defshould_continue(state: AgentState) -> Literal["tools", "end"]:
"""路由逻辑:检查最后一条消息是否包含工具调用"""
last_message = state["messages"][-1]
if last_message.tool_calls:
return"tools"
return"end"
# --- 6. 组装图 (Graph Construction) ---
workflow = StateGraph(AgentState)
# 添加节点
workflow.add_node("agent", reason_node)
workflow.add_node("tools", tool_node)
# 设置入口
workflow.set_entry_point("agent")
# 添加边
workflow.add_conditional_edges(
"agent",
should_continue,
{
"tools": "tools",  # 也就是如果 should_continue 返回 "tools",则去 "tools" 节点
"end": END  # 返回 "end",则结束
}
)
workflow.add_edge("tools", "agent")  # 工具执行完,务必回传给 Agent 进行最终总结
# 编译应用
app = workflow.compile()
# Show the agent
png_data = app.get_graph().draw_mermaid_png()
# 保存为文件
withopen("react_demo2.png", "wb") as f:
f.write(png_data)
# --- 7. 运行测试 (Run) ---
if __name__ == "__main__":
from langchain_core.messages import HumanMessage
print("Agent 启动...")
# 测试问题:包含需要调用工具的意图
inputs = {"messages": [HumanMessage(content="杭州今天天气怎么样?适合穿什么?")]}
# stream_mode="values" 可以看到状态流转的每一步
for event in app.stream(inputs, stream_mode="values"):
last_msg = event["messages"][-1]
sender = "用户"ifisinstance(last_msg, HumanMessage) else"Agent"
ifhasattr(last_msg, "tool_calls") and last_msg.tool_calls:
sender = "Agent (决定调用工具)"
elifisinstance(last_msg, ToolMessage):
sender = "系统 (工具返回)"
print(f"[{sender}]: {last_msg.content}")
print("-" * 30)

示例首先定义一个AgentState用于记录状态;然后定义一个查询天气的工具,模拟天气的查询;再定义llm对象并通过bind_tools绑定工具,这一步很重要,告诉大模型有哪些可用的工具;再通过StateGraph定义节点和边,组装成图;最后运行测试。

示例输出如下所示:

Agent 启动...
[用户]: 杭州今天天气怎么样?适合穿什么?
------------------------------
[Agent (决定调用工具)]: 我来帮您查询杭州今天的天气情况。
------------------------------
🛠️ [工具调用] 正在查询 杭州 的天气...
[系统 (工具返回)]: {"city": "\u676d\u5dde", "temp": "15\u2103", "condition": "\u6674\u6717"}
------------------------------
[Agent]: 根据查询结果,杭州今天的天气情况如下:
- **温度**:15°C
- **天气状况**:晴朗
**穿衣建议**:
15°C的晴朗天气比较舒适,建议穿着:
1. **上衣**:长袖T恤或薄款卫衣,可以搭配一件薄外套(如牛仔外套、风衣或针织开衫)
2. **下装**:长裤(牛仔裤、休闲裤等)
3. **鞋子**:运动鞋或休闲鞋
4. **其他**:早晚温差可能较大,建议带一件薄外套备用
这样的天气非常适合户外活动,但要注意防晒,因为晴朗天气紫外线可能较强。总体来说,今天的杭州天气很不错,适合外出!

05 前言

LangGraph的出现,标志着 LLM 应用开发从“Prompt Engineering”进阶到了“Flow Engineering”。

  • StateGraph给了我们结构化的数据流视图。
  • Cyclic Graph 解决了复杂推理的循环依赖。
  • Persistence 让 Agent 具备了生产级的容错与交互能力。

如果你只是做一个简单的聊天机器人,LangChain 的 Runnable 体系足矣;但如果你在构建一个需要稳定、长时间运行、甚至需要人工介入审批的智能体工作流,LangGraph 是目前 Python 生态中一个不错的选择。

如何学习AI大模型 ?

“最先掌握AI的人,将会晚掌握AI的人有竞争优势,晚掌握AI的人比完全不会AI的人竞争优势更大”。 在这个技术日新月异的时代,不会新技能或者说落后就要挨打。

老蓝我作为一名在一线互联网企业(保密不方便透露)工作十余年,指导过不少同行后辈。帮助很多人得到了学习和成长。

我是非常希望可以把知识和技术分享给大家,但苦于传播途径有限,很多互联网行业的朋友无法获得正确的籽料得到学习的提升,所以也是整理了一份AI大模型籽料包括:AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、落地项目实战等 免费分享出来。

👉点击即可获取大模型学习包2026年最新版👈

  1. AI大模型学习路线图
  2. 100套AI大模型商业化落地方案
  3. 100集大模型视频教程
  4. 200本大模型PDF书籍
  5. LLM面试题合集
  6. AI产品经理资源合集

大模型学习路线

想要学习一门新技术,你最先应该开始看的就是学习路线图,而下方这张超详细的学习路线图,按照这个路线进行学习,学完成为一名大模型算法工程师,拿个20k、15薪那是轻轻松松!

视频教程

首先是建议零基础的小伙伴通过视频教程来学习,其中这里给大家分享一份与上面成长路线&学习计划相对应的视频教程。文末有整合包的领取方式

技术书籍籽料

当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,这里也分享一份我学习期间整理的大模型入门书籍籽料。文末有整合包的领取方式

大模型实际应用报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。文末有整合包的领取方式

大模型落地应用案例PPT

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。文末有整合包的领取方式

大模型面试题&答案

截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。文末有整合包的领取方式

领取方式

这份完整版的 AI大模型学习籽料我已经上传CSDN,需要的同学可以微⭐扫描下方CSDN官方认证二维码免费领取

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐