news 2026/4/23 9:51:36

LangGraph与LangChain如何协同工作?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LangGraph与LangChain如何协同工作?

LangGraph 与 LangChain 是深度协同、互补增强的关系。LangGraph 并不是取代 LangChain,而是在其基础上扩展了复杂控制流的能力,使得开发者可以构建更强大、灵活的 AI 应用(尤其是智能体系统)。以下是它们如何协同工作的详细说明:

架构关系:LangGraph 建立在 LangChain 之上

LangChain 提供了基础组件:

  1. LLM 封装(如 ChatOpenAI, ChatAnthropic)
  2. 工具(Tools)和工具调用(Tool Calling)
  3. 提示模板(PromptTemplate)、输出解析器(OutputParser)
  4. 记忆(Memory)、文档加载器、检索器等
    LangGraph 则提供流程编排能力:
  5. 用图结构组织多个 LangChain 组件
  6. 控制执行顺序、循环、条件分支等
  7. 管理共享状态(State),实现多步骤推理
    简单说:LangChain 负责“做什么”,LangGraph 负责“怎么做、何时做、做几次”。

典型协同模式

用 LangChain 构建节点,用 LangGraph 编排流程

fromlangchain_openaiimportChatOpenAIfromlangchain_core.toolsimporttoolfromlangchain_core.messagesimportHumanMessagefromlanggraph.graphimportStateGraph,MessagesState# 1. 使用 LangChain 定义工具和模型@tooldefsearch(query:str)->str:return"北京今天的天气晴朗。"llm=ChatOpenAI(model="gpt-4o")llm_with_tools=llm.bind_tools([search])# 2. 在 LangGraph 节点中调用 LangChain 组件defagent_node(state:MessagesState):messages=state["messages"]response=llm_with_tools.invoke(messages)return{"messages":[response]}# 3. 用 LangGraph 编排(支持工具调用循环)workflow=StateGraph(MessagesState)workflow.add_node("agent",agent_node)workflow.set_entry_point("agent")workflow.add_conditional_edges("agent",# LangChain 的工具调用路由逻辑lambdax:"tools"ifx["messages"][-1].tool_callselseEND,)workflow.add_node("tools",ToolNode([search]))workflow.add_edge("tools","agent")app=workflow.compile()

这就实现了经典的 ReAct Agent 循环:思考 → 调用工具 → 观察 → 再思考。

LangChain 的 Memory / Checkpoint 与 LangGraph 集成

LangGraph 支持持久化状态(通过 checkpointer),可与 LangChain 的记忆机制结合:

fromlanggraph.checkpoint.memoryimportMemorySaver memory=MemorySaver()app=workflow.compile(checkpointer=memory)# 带线程 ID 的对话(类似 LangChain 的 Conversation ID)config={"configurable":{"thread_id":"user_123"}}result=app.invoke({"messages":[HumanMessage("你好")]},config)

这使得多轮对话状态可跨请求保留,与 LangChain 的 ConversationBufferMemory 思路一致,但更强大(支持任意状态结构)。

复用 LangChain 的高级抽象

  1. 使用 create_react_agent(LangChain 提供)快速构建基础 Agent
  2. 用 LangGraph 自定义更复杂的 Agent(如多角色、带验证、反思机制)
    LangGraph 给你“乐高积木”,LangChain 给你“预制模块”,两者结合可搭出任意复杂系统。

实际应用场景中的协作

客服机器人:
LangChain 处理意图识别 + 知识库检索,LangGraph 控制“澄清 → 查询 → 确认 → 结束”流程。
数据分析 Agent:
LangChain 调用 Python REPL 工具,LangGraph 实现“生成代码 → 执行 → 验证结果 → 修正”的循环。
多智能体系统:
每个智能体用 LangChain 构建,LangGraph 协调它们之间的消息传递和任务分配。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 4:51:37

14、深入探索硬件驱动:内存屏障、LED驱动与IPMI驱动解析

深入探索硬件驱动:内存屏障、LED驱动与IPMI驱动解析 在硬件与软件交互的世界里,驱动程序扮演着至关重要的角色。它们就像是桥梁,连接着操作系统和硬件设备,使得两者能够顺畅地沟通和协作。本文将深入探讨内存屏障、LED驱动以及智能平台管理接口(IPMI)驱动的相关知识,带…

作者头像 李华
网站建设 2026/4/23 14:35:14

16、深入理解FreeBSD中的DMA管理与存储驱动

深入理解FreeBSD中的DMA管理与存储驱动 1. 直接内存访问(DMA)管理 在系统开发中,直接内存访问(DMA)是一种重要的技术,它允许设备直接与内存进行数据传输,而无需CPU的持续干预,从而提高了系统的性能和效率。下面将介绍一些关键的DMA管理函数。 1.1 DMA映射加载函数 …

作者头像 李华
网站建设 2026/4/23 1:23:11

17、存储驱动与通用访问方法详解

存储驱动与通用访问方法详解 1. 存储驱动相关函数 存储驱动中有多个重要函数,下面将详细介绍这些函数的功能和实现。 1.1 at45d_attach 函数 该函数是存储驱动的 device_attach 实现,其代码如下: static int at45d_attach(device_t dev) {struct at45d_softc *sc = …

作者头像 李华
网站建设 2026/4/23 11:32:15

19、通用访问方法与USB驱动详解

通用访问方法与USB驱动详解 1. 通用访问方法(Common Access Method) 通用访问方法涉及到多种操作,下面详细介绍几个重要的操作及其相关结构和代码示例。 1.1 XPT_SET_TRAN_SETTINGS XPT_SET_TRAN_SETTINGS 用于根据 ccb_trans_settings 结构更改当前的传输设置,不过…

作者头像 李华
网站建设 2026/4/23 11:26:21

FastPhotoStyle入门指南:如何用3个步骤实现专业级照片风格迁移

FastPhotoStyle入门指南:如何用3个步骤实现专业级照片风格迁移 【免费下载链接】FastPhotoStyle Style transfer, deep learning, feature transform 项目地址: https://gitcode.com/gh_mirrors/fa/FastPhotoStyle 想要将普通照片瞬间变成艺术品,…

作者头像 李华
网站建设 2026/4/17 23:19:58

AutoGPT在珊瑚礁生态保护中的物种识别辅助

AutoGPT在珊瑚礁生态保护中的物种识别辅助 在加勒比海某处浅水区,一台水下摄像机连续拍摄了三周的高清影像。当科学家终于将这些数据带回实验室时,面对的是超过 400小时 的视频素材——足够一个人不吃不喝看上整整两周。而他们真正关心的问题却很简单&am…

作者头像 李华