LangGraph、LangChain、DeepAgent思考循环解析

📅 2026/7/22 12:43:51 👁️ 阅读次数 📝 编程学习
LangGraph、LangChain、DeepAgent思考循环解析

LangChain、LangGraph和DeepAgents的思考循环层数,需要从它们的技术架构和协作关系来理解。三者并非简单的并列关系,而是构成一个从底层运行时到高层应用框架的分层栈。下面通过技术对比和具体示例详细分析。

一、核心架构分层与循环层数定位

根据官方定义,这三个项目是智能体开发栈的三个不同层级,其依赖关系自下而上:

层级项目官方术语核心价值思考循环层数定位
底层LangGraphAgent Runtime(智能体运行时)持久化执行、流式、人机协同、状态持久化单层循环控制(提供最基础的节点-边执行引擎)
中层LangChainAgent Framework(智能体框架)抽象与集成(模型、工具、Agent循环、中间件)双层循环抽象(封装ReAct等模式,提供中间件扩展)
上层Deep AgentsAgent Harness(智能体外壳/装备)预置工具、提示词、子智能体、上下文管理多层嵌套循环(主智能体+子智能体+长期记忆+规划循环)

二、LangGraph:底层单循环运行时

LangGraph作为编排框架与运行时,提供最基础的循环执行引擎。它采用**有状态图(StateGraph)**模型,将智能体逻辑建模为节点和边:

from langgraph.graph import StateGraph, MessagesState, START, END def mock_llm(state: MessagesState): return {"messages": [{"role": "ai", "content": "hello world"}]} # 构建工作流 graph = StateGraph(MessagesState) graph.add_node(mock_llm) # 添加节点 graph.add_edge(START, "mock_llm") # 添加边 graph.add_edge("mock_llm", END) graph = graph.compile() # 编译工作流 # 执行单次循环 result = graph.invoke({"messages": [{"role": "user", "content": "hi!"}]})

循环层数分析:

  • 单层循环控制:LangGraph本身不定义智能体的思考模式,只提供基础执行循环
  • 显式控制流:开发者需要显式定义节点和边,控制流完全由开发者掌控
  • 持久化执行:通过Checkpointer在每一步持久化状态,支持长时运行和中断恢复

典型的"模型+工具"循环在LangGraph中需要显式建模为:开始 → 模型节点 → 条件判断 → 工具节点 → 返回模型节点 → 结束

三、LangChain:中层双层循环框架

LangChain构建在LangGraph之上,通过create_agent工厂函数封装了智能体的核心循环。其1.0版本引入了中间件架构,形成了双层循环结构:

from langchain.agents import create_agent from langchain.chat_models import init_chat_model from langchain.agents.middleware import PIIMiddleware # 初始化模型 deepseek_llm = init_chat_model( model="deepseek-chat", model_provider="deepseek", api_key=DEEPSEEK_API_KEY, base_url=DEEPSEEK_BASE_URL, ) # 创建带中间件的Agent agent = create_agent( model=deepseek_llm, tools=[search_weather], middleware=[ PIIMiddleware("api_key", detector=r"sk-[a-zA-Z0-9]{32}", strategy="block"), ], system_prompt="你是一个AI智能助手,可以查询天气。", )

循环层数分析:

  • 核心ReAct循环:内部实现标准的"思考-行动-观察"循环(第一层)
  • 中间件洋葱圈:中间件在关键阶段提供拦截钩子,形成外层包装循环(第二层)
  • 可组合扩展:每个中间件专注单一功能,按任意顺序堆叠

中间件的拦截点包括:Agent执行前后、模型调用前后、工具调用前后等阶段,形成如下图所示的"洋葱圈"结构:

请求进入 → 中间件1前处理 → 中间件2前处理 → 核心ReAct循环 → 中间件2后处理 → 中间件1后处理 → 响应返回

四、Deep Agents:上层多层嵌套循环

Deep Agents作为智能体Harness,构建在LangChain之上,引入了更复杂的循环结构:

4.1 主智能体循环 + 子智能体循环

Deep Agents通过task工具派生子智能体,形成主从循环结构:

from deepagents import create_deep_agent # 创建Deep Agent agent = create_deep_agent( model="anthropic:claude-sonnet-4-6", tools=[get_weather, task], # 包含子智能体工具 system_prompt="You are a helpful assistant", ) # 主智能体执行 result = agent.invoke({ "messages": [{"role": "user", "content": "分析多个城市的天气并生成报告"}] })

循环嵌套关系:

  1. 主智能体循环:处理用户请求,决定是否派生子任务
  2. 子智能体循环:执行专门化任务,完成后返回结果
  3. 上下文压缩循环:当上下文过大时触发摘要或卸载机制
4.2 规划循环与执行循环

Deep Agents内置write_todos工具,智能体可以维护结构化任务清单,形成规划-执行循环:

阶段工具/机制循环作用
规划阶段write_todos创建带状态的任务清单(pending/in_progress/completed)
执行阶段各种工具调用按清单顺序执行任务
监控阶段状态持久化跟踪任务进度,必要时调整计划
4.3 上下文管理循环

Deep Agents采用智能上下文管理机制,形成动态调整循环:

# 上下文管理决策流程(伪代码逻辑) def manage_context(current_context, model_max_tokens): if tool_input_output > 20000: # 大工具结果 offload_to_filesystem() # 卸载到文件系统 elif context_usage > 0.85 * model_max_tokens: # 上下文接近上限 if can_offload_more(): offload_old_tools() # 卸载旧工具调用 else: summarize_conversation() # 触发摘要 return optimized_context

上下文循环流程:

  1. 监控循环:持续跟踪上下文token使用量
  2. 卸载循环:大工具结果→文件系统,历史中保留指针
  3. 摘要循环:上下文超限→生成结构化摘要替换历史

五、技术选型与循环复杂度对比

框架循环层数循环类型适用场景开发复杂度
LangGraph单层基础执行循环需要细粒度控制、持久化执行的生产级工作流高(需显式定义所有节点和边)
LangChain双层核心ReAct循环 + 中间件包装循环快速构建标准智能体,需要灵活扩展中间件中(提供抽象但保留控制)
Deep Agents多层主从循环 + 规划循环 + 上下文管理循环复杂长时运行任务,需要开箱即用的高级功能低(预置复杂循环逻辑)

六、实际应用场景示例

场景1:简单问答机器人(适合LangChain)
# LangChain双层循环足够 agent = create_agent( model=llm, tools=[search, calculator], middleware=[logging_middleware], # 添加日志中间件 ) # 循环:用户输入 → 中间件处理 → ReAct循环 → 中间件后处理 → 响应
场景2:复杂数据分析流水线(适合LangGraph)
# LangGraph显式控制多阶段循环 graph = StateGraph(WorkflowState) graph.add_node("data_extraction", extract_data) graph.add_node("data_cleaning", clean_data) graph.add_node("analysis", analyze_data) graph.add_node("reporting", generate_report) # 定义条件边实现复杂循环逻辑 graph.add_conditional_edges( "analysis", lambda state: "reporting" if state["quality"] > 0.8 else "data_cleaning" )
场景3:自动化代码开发助手(适合Deep Agents)
# Deep Agents多层循环处理复杂任务 agent = create_deep_agent( model="claude-3-opus", tools=[write_todos, edit_file, execute, task], # 包含规划、执行、子智能体 system_prompt="你是一个全栈开发助手", interrupt_on={"edit_file": True}, # 人机协同循环 ) # 执行过程涉及: # 1. 规划循环:分析需求 → 创建任务清单 # 2. 执行循环:按清单执行编码、测试 # 3. 子智能体循环:派生子任务(如代码审查) # 4. 上下文循环:管理不断增长的代码上下文 # 5. 人机协同循环:关键编辑前等待确认

七、总结:循环层数的演进路径

从技术演进角度看,这三个框架代表了智能体思考循环的不同抽象层级:

  1. LangGraph提供基础:单层显式循环控制,适合需要完全掌控执行流程的复杂工作流
  2. LangChain封装标准模式:双层循环(ReAct核心+中间件包装),平衡易用性与灵活性
  3. Deep Agents预置复杂逻辑:多层嵌套循环(主从、规划、上下文管理),开箱即用但定制性相对较低

选择时需要考虑:任务复杂度决定需要的循环层数,控制需求决定选择哪一层的抽象。简单任务用LangChain即可,需要完全控制用LangGraph,复杂长时任务用Deep Agents。

在实际开发中,可以从LangChain开始快速原型,复杂部分用LangGraph定制,生产级复杂应用考虑Deep Agents。这种分层架构让开发者可以根据具体需求选择合适的循环抽象层级,既避免过度工程,也确保系统可扩展性。


参考来源

  • LangChain vs LangGraph vs Deep Agents技术对比详解
  • [DeepAgents:LangChain平台的Harness-01]LangChain、LangGraph和DeepAgents三者之间的关系
  • 【必学收藏】小白也能懂:LangChain、LangGraph、DeepAgents三层架构解析
  • DeepAgents vs LangChain, LangGraph 如何技术选型?
  • DeepAgents vs LangChain, LangGraph 如何技术选型?
  • 【建议收藏】LangChain、LangGraph、DeepAgents三大框架区别解析,大模型开发入门必看