LangChain 1.0 VS LangGraph 1.0:深度解析与迁移指南

2025-12-23 16:28:54
文章摘要
LangChain 1.0 与 LangGraph 1.0 的核心区别是什么

在当今快速发展的 AI 领域,两个最受欢迎的 AI 框架正日益壮大并相互竞争:LangChain 1.0 与 LangGraph 1.0。

2025 年 10 月 22 日,LangChain 在其博客上宣布 LangChainLangGraph 智能体框架均已达到 v1.0 里程碑。这一声明将 LangChain 与 LangGraph 1.0 的讨论推向了新的高度。

据红杉资本(Sequoia Capital)消息,LangChain 完成了 1.25 亿美元的 B 轮融资,并同步宣布了 LangChain v1.0,标志着其从原型工具向生产级平台的转型。融资和业务里程碑意味着该生态系统正在通过机构支持实现规模化。

本文将深入剖析这两个新版本,拆解其功能,强调关键差异,并就何时选择其中之一提供切实可行的指导。


目录

  1. 1. LangChain 1.0 与 LangGraph 1.0 的核心区别是什么?
  2. 2. LangChain 1.0 有什么新功能?
  3. 3. LangGraph 1.0 有什么新功能?
  4. 4. 工具对比表:LangChain 1.0 vs LangGraph 1.0
  5. 5. 实战用例:何时使用 LangChain 1.0 vs LangGraph 1.0
  6. 6. 用例对比表
  7. 7. 从 LangChain 迁移到 LangGraph 教程
  8. 8. 常见问题解答 (FAQs)

LangChain 1.0 与 LangGraph 1.0 的核心区别是什么?

LangChain 是一个高层框架,用于快速原型设计和部署基于大语言模型(LLM)的应用程序。它的设计重点在于为模型、工具和智能体(Agents)提供标准化的抽象。这种方法允许开发者构建复杂的 LLM 应用而无需被特定供应商锁定。新的 LangChain 1.0 版本在模块化、性能和生产级支持方面完善了这一愿景。

LangGraph 1.0 是一个底层编排引擎,以支持持久、有状态的智能体工作流而闻名。该工具旨在有效处理生产级、长运行智能体的复杂性。它利用基于图的执行模型(Graph-based execution models)取代了线性链(Linear Chains),并具备流式输出、人机交互(HITL)干预以及数据持久化支持等原生能力。它使 AI 智能体能够循环、分支、重访状态并做出动态决策。LangGraph 非常适合迭代推理、多智能体系统以及长运行、有状态的 AI 应用。

核心差异总结:

虽然两者都能帮助开发者快速构建生产级 LLM 应用,但它们在核心能力、设计理念、抽象层级和用例上有所不同。

  1. LangChain 1.0 助力于快速、模块化的设置,通常涉及用于构建基础聊天机器人或检索增强生成(RAG)的线性管道
  2. LangGraph 1.0 则适用于需要显式状态管理和分支逻辑的非线性、自适应系统

在工作流设计方面,LangChain 建立在 LCEL (LangChain 表达式语言) 之上,用于声明式链式调用。LangGraph 扩展了这一点,引入了支持循环、重试和条件边的图结构。

二者结合使用效果极佳。LangChain 提供高层易用性(Ergonomics),而 LangGraph 提供底层控制力,LangChain 的新智能体现在后台直接运行在 LangGraph 的运行时(Runtime)上


LangChain 1.0 有什么新功能?

LangChain 1.0 从一个广泛的工具包演变为一个用于 AI 智能体开发的精简引擎。

2025 年 10 月发布的 LangChain 1.0 版本吸纳了社区反馈,引入了构建在 LangGraph 运行时之上的、经过改进的以智能体为中心的架构。它专注于生产就绪性,提供简洁性、灵活性和长期稳定性,且在 2.0 版本之前没有计划中的破坏性变更。

a) 新特性

向中心化智能体抽象的重大转变

LangChain 1.0 转向统一的智能体对象或模式,构建在 LangGraph 1.0 的运行时之上。

以下是使用 Python 调用天气智能体的示例:

from langchain.agents import create_agent
from langchain.agents.structured_output import ToolStrategy
from pydantic import BaseModel

classWeather(BaseModel):
    temperature: float
    condition: str

defweather_tool(city: str) -> str:
    """获取某城市的天气。"""
    returnf"It's sunny and 70 degrees in {city}"

agent = create_agent(
    "openai:gpt-4o-mini",
    tools=[weather_tool],
    response_format=ToolStrategy(Weather)
)

result = agent.invoke({
    "messages": [{"role": "user", "content": "What's the weather in SF?"}]
})
print(repr(result["structured_response"]))
# 输出: Weather(temperature=70.0, condition='sunny')

通过 Pydantic 模型的结构化输出,确保了跨供应商的响应类型安全。

标准化的消息内容块 (Standard Content Blocks)

LangChain 1.0 引入了标准化的消息内容块,允许跨 LLM 供应商使用结构化数据(如推理轨迹、引用、工具调用)和多模态内容(如图像、音频和 PDF)。

例如:

  1. • 纯文本:message.content_blocks[0].text
  2. • 来源:message.content_blocks[1].citation

在此之前,这被 OpenAI 的 JSON 模式和 Anthropic 的 XML 标签等碎片化处理。新版本提供了统一的、与供应商无关的接口,无需重写代码即可无缝切换模型。

JavaScript 端 API 简化

LangChain 1.0 简化了 API 管理。例如,像 createReactAgent 这样的旧模式已被 createAgent API 取代,简化了智能体的创建流程。

精简的包结构

核心 LangChain 包已被精简,仅保留必要的智能体抽象。JavaScript 中的遗留功能已被移至 @langchain/classic 包中。

改进的集成与向后兼容性

LangChain 1.0 增强了集成并改进了对向后兼容性的支持。例如,它通过标准化消息格式支持主流供应商。此外,内容块等工具也可在遗留消息类型上工作。

b) 设计与开发方法

LangChain 1.0 根据社区反馈,从“多种链或智能体模式”转向更少但更具导向性(Opinionated)的抽象。这种方法引导开发者走向生产就绪,而非仅仅停留在原型模式。

团队识别并剥离了诸如“厚重的抽象”和“过于宽泛的 API 表面积”等痛点。结果是一个更紧凑的命名空间,专注于核心智能体组件,而非详尽的原语。旧的实用工具被移至 langchain-classic

开发重点转向企业级应用,强调跨 LLM 供应商的稳定性、标准化、可扩展智能体以及多模态工作流。版本控制策略表明,1.0 主版本可能包含破坏性变更和架构改进,并会提供迁移指南。

c) 新文档

LangChain 1.0 的一大更新是重新设计的文档中心,试图解决多年来关于指南分散的反馈。它首次将 Python 和 JavaScript 内容整合在一个统一的体验下。新文档包括概念指南、手把手教程(如构建 RAG 智能体)、统一的 API 参考以及从 v1 之前的版本过渡的迁移指南

d) 学习曲线

API 更加精简,通过标准化的智能体抽象和简化的 createAgent API,新手可以受益于更一致的工作流。

缺点:如果是从旧的 v0.x 版本升级,会有一些破坏性变更或不同的抽象需要学习。特别是迁移到新的智能体模型、消息内容块,或从旧的链/智能体模式迁移时,存在一定的学习曲线。

e) 社区观点

开发者称赞其经过多年迭代后的成熟度。但也存在批评声音,部分用户认为抽象中存在“非必要的复杂性”,且对于初学者来说,升级类似于 Python 2 到 3 的转变,虽然稳定但门槛较高。


LangGraph 1.0 有什么新功能?

LangGraph 1.0 于 2025 年 10 月 22 日与 LangChain 1.0 同步推出。经过一年的生产环境打磨和社区驱动的改进,这一稳定版本巩固了 LangGraph 作为持久化智能体工作流骨干的地位。

其核心在于,LangGraph 暴露了一个基于图的运行时抽象,用于自定义控制流、分支逻辑、重试和多智能体协调。它允许通过混合确定性逻辑和智能体步骤(Agentic steps)来对执行图进行细粒度控制,从而优化延迟、成本和监督。

a) 新特性

LangGraph 1.0 扩展了其图驱动架构,通过节点(动作)、边(转换)和共享状态对工作流进行建模。这种方法提供了企业级的可靠性和弹性,同时保持实现的简单直观。

一个关键的增加是持久化状态管理 (Durable State Management)。它自动将每个执行步骤通过检查点(Checkpoints)保存到可配置的后端(如内存存储、SQLite 或 PostgreSQL)。因此,工作流可以在崩溃、重启或断开连接后无缝恢复。这使其非常适合处理耗时较长的异步流程,如多日审批。

以下是调用简单持久化图的代码示例:

from langgraph.graph import StateGraph, END
from langgraph.checkpoint.sqlite import SqliteSaver
from typing import TypedDict, Annotated
import operator

classState(TypedDict):
    messages: Annotated[list, operator.add]
    count: int

defincrement(state: State) -> State:
    return {"count": state["count"] + 1}

workflow = StateGraph(State)
workflow.add_node("increment", increment)
workflow.add_edge("increment", END)
workflow.set_entry_point("increment")

memory = SqliteSaver.from_conn_string(":memory:")
app = workflow.compile(checkpointer=memory)

config = {"configurable": {"thread_id": "abc123"}}
result1 = app.invoke({"count": 0}, config)
result2 = app.invoke({"count": 0}, config)  # 从检查点恢复
print(result2["count"])  # 输出: 2

LangGraph 还为短期工作记忆和持久长期状态提供了全面的内存处理,使其非常适合有状态的、多会话智能体。

b) 设计与开发

LangGraph 1.0 的设计旨在解决现有框架“易于开始但难以扩展或定制”的问题。随着 LangChain 1.0 的智能体现在由 LangGraph 运行时驱动,您可以从高层入手,并在需要时下钻进行定制,无需重写成本。

运行时设计将开发者 SDK/API 与执行引擎分离。它放弃了对 Python 3.9 的支持(EOL),并增加了 3.14 兼容性,采用**异步优先(Async-first)**的 API 以实现可扩展性。

新版本允许您混合结构化步骤(如 API 调用)和概率性步骤(如 LLM 决策),并通过边来强制执行确定性。例如,它可以在工具故障时重试,或根据置信度分数进行分支。这与可观测性要求一致,每个节点都会追踪到 LangSmith,确保大规模下的可调试性。

c) 新文档

docs.langchain.com 上的 1.0 文档整合了 LangGraph 和 LangChain 的资源,解决了内容碎片化问题,并提供了关于智能体图论的概念入门。值得注意的是,文档指出 LangGraph 专注于底层编排。如果您只是刚开始接触智能体,使用 LangChain 的高层 API 可能更合适。

d) 学习曲线

LangGraph 是底层且可扩展的,这意味着学习曲线陡峭。它提供了更大的控制权,但也需要更多的理解,因为您需要手动设计图、节点、边和状态流,而不是依赖现成的智能体模板。对于熟悉简单框架的团队来说,理解基于图的编排、状态管理和部署模式需要额外的努力。

e) 社区观点

用户普遍认为“从‘魔法编排’到‘显式状态图’的转变终于来了”,不再有神秘中断的黑盒智能体循环。如果不能画出智能体的状态转换,就无法调试它。但也有用户希望减少类似 AutoGen 的断崖式更新带来的痛苦。


工具对比表:LangChain 1.0 vs LangGraph 1.0

评估维度

LangChain 1.0

LangGraph 1.0

主要定位

用于快速原型设计和生产级 LLM 应用的高层智能体框架

用于持久、有状态和复杂智能体工作流的底层编排引擎

架构

基于 LCEL 的声明式链式调用

基于节点、边和持久状态构建的图运行时

执行控制

抽象化控制,追求简洁

细粒度控制,支持自定义分支、重试和检查点

持久性

短暂(Ephemeral)会话

跨会话的持久状态和可恢复执行

集成层级

即插即用集成(100+ 模型和 API)

与 LangChain 1.0 运行时深度集成以执行图

学习曲线

较低,适合初学者和快速迭代

中等到高,需要理解状态图和运行时逻辑

人机交互 (HITL)

通过高层封装支持

原生支持

暂停/恢复及人工验证

最佳适用场景

构建快速原型、聊天机器人、RAG 管道或工具增强型智能体

部署长运行、多智能体或人机交互系统

何时选择

快速构建并频繁迭代

弹性、生产级智能体编排



实战用例与迁移指南

什么时候使用 LangChain 1.0?

适合需要快速开发、配置最少的情况。

  1. 用例:聊天机器人、简单的 RAG 管道、客户支持自动化。
  2. 代码示例:利用 create_agent 和中间件(Middleware)仅需约 20 行代码即可构建支持机器人的系统。

什么时候使用 LangGraph 1.0?

适合需要精确控制编排和弹性的开发者。

  1. 用例:长运行/有状态智能体(如多阶段审批)、人机交互(HITL)系统、复杂多智能体协作。
  2. 代码示例:通过 StateGraphadd_conditional_edges 构建审批工作流,利用 checkpointer 实现状态持久化。

从 LangChain 迁移到 LangGraph 教程

对于许多开发者来说,从 LangChain 迁移到 LangGraph 并不是必须的,因为 LangChain 1.0 的 create_agent 已经在透明地使用 LangGraph。但是,对于需要循环(Cycles)、持久化或多角色编排的自定义工作流,迁移到 LangGraph 是明智的选择。

架构转变:

  1. LangChain (旧版):顺序链(Sequential Chains),仅会话内内存,手动重试。
  2. LangGraph 1.0:节点与边的图,持久化且可恢复的内存,内置检查点。

步骤 1:先决条件与设置

安装依赖:

pip install langchain langgraph langchain-openai langsmith

设置 API Key 并开启 LangSmith 用于调试。

步骤 2:将简单链(Chains)迁移为基本图(Basic Graphs)

旧版的 LCEL 链是线性的。迁移到 StateGraph 意味着数据在步骤间共享。

迁移后 (LangGraph StateGraph):

关键变更:

  1. 1. 定义 State 模式(如 TypedDict)以强制类型安全。
  2. 2. 将逻辑封装在不可变地更新状态的节点函数中。
  3. 3. 编译并调用:API 与链类似,但更具扩展性。
from typing import TypedDict
from langgraph.graph import StateGraph, END
from langchain_openai import ChatOpenAI

classState(TypedDict):
    text: str
    summary: str

defsummarize(state: State) -> State:
    model = ChatOpenAI(model="gpt-4o-mini")
    prompt = f"Summarize the following: {state['text']}"
    response = model.invoke(prompt)
    return {"summary": response.content}

workflow = StateGraph(State)
workflow.add_node("summarize", summarize)
workflow.set_entry_point("summarize")
workflow.add_edge("summarize", END)

app = workflow.compile()
result = app.invoke({"text": "LangChain is a framework for LLM apps."})
print(result["summary"]) 

步骤 3:将智能体迁移为配备工具的图

旧版的 AgentExecutor 是黑盒。LangGraph 将其暴露为用于重试和分支的显式节点。

迁移后 (LangGraph Agent Graph):

关键变更:

  1. 1. 使用 LangGraph 的 create_react_agent(或自定义构建)。
  2. 2. 使用 messages 列表和包含 thread_idconfig 进行调用。
  3. 3. 添加检查点器(如 MemorySaver),弃用旧的 ConversationBufferMemory
from langgraph.prebuilt import create_react_agent
from langgraph.checkpoint.memory import MemorySaver

# ... 定义工具和 LLM ...

memory = MemorySaver() # 短期内存
agent_executor = create_react_agent(llm, tools, checkpointer=memory)
config = {"configurable": {"thread_id": "abc123"}}
# 调用方式变为传递 messages

步骤 4:添加持久化和内存

使用 SqliteSaver 替换 MemorySaver 以实现生产级持久化。这允许在重启后通过相同的 thread_id 恢复状态。

步骤 5:集成人机交互 (HITL)

将隐式循环迁移为显式暂停。

# 在自定义图中...
def route_decision(state):
    if "high_risk" in state["messages"][-1].content:
        return "human_review"
    return "continue"

workflow.add_conditional_edges("agent", route_decision, {"human_review": "human_node", "continue": END})

这确保了在高风险任务中的错误减少。


常见问题解答 (FAQs)

Q: LangGraph 现在要取代 LangChain 吗?

A: 不是。LangGraph 不是替代品,而是 LangChain 的运行时扩展。LangChain 1.0 仍然提供构建智能体的高层抽象,而 LangGraph 1.0 在后台处理管理执行图、持久性和控制流的底层编排。

Q: 我需要重写我的 LangChain 项目来使用 LangGraph 1.0 吗?

A: 不一定! 许多现有的 LangChain 工作流无需更改即可继续工作。但是,如果您的项目需要状态持久化、长运行任务或分支逻辑,建议将特定组件迁移到 LangGraph。

Q: LangChain vs LangGraph 1.0:我应该先学哪个?

A: 如果您是 AI 智能体开发的新手,从 LangChain 1.0 开始。它提供了更简单的抽象。随后,您可以转向 LangGraph 1.0 以获得更深层的控制、可扩展性和自定义编排能力。


声明:该内容由作者自行发布,观点内容仅供参考,不代表平台立场;如有侵权,请联系平台删除。
标签:
大模型
智能体(Agent)
模型开发平台