免费POC, 零成本试错
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


我要投稿

智能体LangChain v1.0生态解读与迁移建议

发布日期:2025-12-17 15:31:14 浏览次数: 1526
作者:极客e家

微信搜一搜,关注“极客e家”

推荐语

LangChain v1.0生态全面升级,四大组件助力智能体开发更高效!

核心内容:
1. LangChain生态四大组成部分解析
2. v1.0版本的核心改进与优化方向
3. 从0.x到1.0的迁移实践建议

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

之前写过一篇关于《从框架到智能体,一文看懂LangChain五兄弟的秘密》文章,这里先跟大家道个歉,里面确实有些东西说的有歧义,而今天则系统的对LangChain最新的v1.0生态进行解读。

1、四大组成部分
LangChain发展至今,现早已不是一个框架那么简单,只是因为LangChain的名字使用的最广泛,知名度最高,所以还在延用,但我们要清楚,现在说的LangChain其实指的是一个生态。这个全新的家族生态,主要由四部分组成。
LangChain:生态的起点,智能体的开发基石,出现最早的基于LLM应用的框架,主打链式(Chain)结构,提供了基础能力,例如模型调用、工具调用、智能体创建、中间件等。
LangGraph:发展到一定阶段的必然产物,是复杂工作流的编排引擎,从名字上也可以看出来,主打Graph图结构。其核心是使用节点(Node)、边(Edge)和状态(State)打造有向图。
Deep Agents:LangChain的新成员,我没记错的话,应该是今年8月慢慢放出消息后发布的,其实我个人认为,还是属于一个探索性质的项目,比较年轻,出现的目的则是想打造对标Manus和Claude Code这类工业级智能体。它构建于LangChain与LangGraph之上,被定为是智能体执行框架,背后的核心是由Agent Harness驱动的。不过它内部封装的一些核心特性,例如任务自动规划、文件系统、大结果下沉(英文是Large tool result eviction,我也不知道咋翻译好)、子智能体等,还是确实能快速构建出一个较为复杂的智能体,尤其是Deep Research那种,确实特别快。
注:它内置的那些核心特性,本质上都是中间件机制。而中间件机制,我感觉是LangChain v1.0中最大的一个变化,也是最重要的一个变化,没有之一,后面会详细说明。
LangSmith:这个就不多说了,想必大家都很清楚,跟智能体开发没啥关系,是智能体的一个可观测性(监控)和智能体评估平台。当然,基于非langchain开发的智能体也可以使用,只不过他默认绑定的肯定是LangChain生态。所以从这也能看出来了LangChain团队的野心,他要玩闭环才能把他的商业模式转起来:开发->调试->部署->监控->评估->持续优化。
所以现在LangChain 1.0生态,主要包含我上面说的四部分,千万不要认为只是一LangChain框架,他是一个生态,不要被名字骗了。
2、LangChain v1.0新特性

之前使用LangChain v0.x版本时,大家可能都有这种感觉,虽然其功能强大,但是概念繁杂、框架整体臃肿、乱、学习曲线杂。而LangChain自2022年底发布以来,将近3年的时间里,版本号一直也没说直接上升到1.x,始终停留在0.x版本,这本身就说明了,其快速发展中保持了谨慎的态度。而此次直接跃迁至v1.0,真正意义上的第一个正式大版本,其意义不言而喻,并且其官方也声明了,在v2.0到来之前,不会再引入一些破坏性的颠覆功能特性,所以大家是时候,将老版本的代码,进行重构和升级了。

首先,LangChain v1.0解决的第一个问题是统一性。它对框架进行了一次彻底的重构与瘦身,目的不是为了引入更多的功能,而是重塑开发者的体验。它废弃了老版本中冗余API,统一了接口,新版本中使得框架变得更为轻量、直观且容易维护。

其背后的核心思想是象层设计,引入了Runnable Interface作为统一入口点,所有可执行组件实现了Runnable协议,可被例如‘.invoke’和‘.stream’调用。

result = model.invoke("请帮我生成一段关于AI未来的简短总结。")
pv = chat_prompt.invoke({"topic""LangChain 的核心理念"})
result = agent.invoke(    {"messages": [HumanMessage(content="请计算3乘以5的结果是多少?")]})
for chunk in model.stream("请用一句话总结人工智能的意义:"):    print(chunk.content, end="")
for chunk in graph.stream(inputs, stream_mode="custom"):    print(chunk)

其次,更强化了智能体的理念。从早期的链式思维,升级为以智能体为核心,建立在LangGraph强大编排能力之上,封装了智能体的编程接口('create_agent'与'create_deep_agent')来创建智能体,而并没有延用LangGraph的命名。因为在LangChain v1.0中,已经将LangGraph下沉为底层框架了,再加上有重要新特性中间件的加持,我们大多数场景下,无需再使用底层LangGraph API了。

agent = create_agent(    model=llm,    tools=[calculate, get_info],    system_prompt="你是一位专业的智能助理,拥有计算和信息查询的能力。请根据用户需求,自主选择最合适的工具进行处理。",)
agent = create_deep_agent(    model=llm,    tools=[internet_search],    system_prompt=research_instructions,)
最后,中间件与深度智能体
我个人感觉,中间件绝对堪称LangChain v1.0版本增加的最核心机制,它也可作为底层的一种机制,LangChain v1.0封装的Agent组件背后,大量用到了中间件,感兴趣的可以看源码,这里就不详细剖析了。中间件设计思想,有点像Java Spring框架AOP的感觉,但又不完全一样,它允许开发者可以方便地注入日志记录和监控等通用性质逻辑,但不必污染核心的业务代码为智能体的执行流程提供了强大的可观测性与可控性。除了可以自定义逻辑实现中间件外,官方现在内置了12种常用场景下的中间件,例如Summarization、Human-in-the-loop(HITL)、Model call limit等,实在太方便了,相信大家实际使用过就有感受了,省去了我们自己去实现这些复杂逻辑,用起来确实爽。
官方预置中间件:

https://docs.langchain.com/oss/python/langchain/middleware/built-in

具体使用上,就给大家展示一小段使用它预置中间件的代码片段吧,用起来很方便。
# 会话摘要中间件:极低阈值,快速触发middleware = SummarizationMiddleware(    model=summ_llm,    max_tokens_before_summary=30,   # 累计上下文估算到阈值30时触发,把早期消息压缩成摘要。    messages_to_keep=5,             # 摘要后仍保留的最近N条原文    summary_prompt="用20个字以内概括要点。"# 自定义“如何摘要”的提示词(不设则用默认))
agent = create_agent(    model=llm,    tools=[],    system_prompt="只用一句极短中文回答,且不超过30个字。",  # 只用“极简短句”回答    middleware=[middleware],)
但真正复杂场景智能体中,需要切入很多主业务外的逻辑,我们自己实现中间件时(基于装饰器(Decorator-based)或基于类(Class-based)实现),也还是需要写不少代码的。
然后是Deep Agents,深度智能体。文中前面也简单介绍了一些,他背后就是在LangGraph之上,基于中间件机制高度封装了一些开箱即用的特性,通过提供了一套更高阶的Agent Harness进行调度。(Agent Harness是Deep Agent整体的运行骨架,负责驱动大模型、工具、文件系统、子智能体、中间件和长期记忆等协同工作。
我们通过配置子智能体、文件系统路径、系统提示词和工具集等,即可快速组装出具备深度规划与协作能力的复杂智能体,我们也不需要理解底层Graph的实现细节,极大限度降低了构建工业级智能体应用的门槛。
Deep Agents背后最核心的三个中间件:规划任务(TodoListMiddleware)、文件系统记忆(FilesystemMiddleware)、子智能体调度(SubAgentMiddleware)。

最后关于Deep Agents再说一个实现要点吧,是我个人在真实使用时的感受。它虽然进行了高度封装,开箱即用,我们进行一些简单配置(例如配置模型、工具、子智能体、存储体系等)就可以使用,但是对于提示词编写的要求极高,提示词一定要明确定义出每一个步骤,所以反而最后优化系统提示词,花了很长时间,尤其复杂智能体下,想让系统每一次都按照提示词的指示去做,尤其稳定性,这绝对是一个挑战。简单的场景这一点请忽略,简单场景我测试时稳定性还是挺高的。当然,这一点,也跟模型的能力有关。

# 创建并返回 Deep Agentagent = create_deep_agent(    model=model,    tools=[internet_search],    system_prompt=DEEP_RESEARCH_SYSTEM_PROMPT,    backend=backend_factory,    store=store,    subagents=subagents,    interrupt_on=interrupt_on,    checkpointer=checkpointer,)

当然,LangChain v1.0中还有很多新特性,上面只列举了我认为重要的一些,还有很多,大家可以通过LangChain官网左侧文档目录就可以看出来,我就不过多说明了。

oh,对了,突然想起来,在使用LangSmith平台调试的时候,原LangGraph Studio改名为LangSmith Studio了,这个之前还真没注意。所以,LangChain哈哈,真是分的清楚,要调试,就在LangSmith上,怕还用LangGraph Studio误会,直接改为了LangSmith Studio,除此之外,官方也不建议再用LangServe了,以后慢慢就被废弃掉了。

3、LangChain v1.0迁移建议

最后,从我个人角度来聊聊,如果要老项目重构或迁移为LangChain v1.0版本,应该关注哪些重点。(注意,只提供需要考虑哪些重点,不作为迁移指南使用)以下建议仅供参考:

1)、分析代码现状,明确你代码用的是哪个LangChain生态包版本,又或是混用langgraph+老agent等方式。所以需要分析现有代码写法,尤其LangChain众多老版本中,API众多,写法肯定各异。最后还需注意,最后Python版本可能也需要升级,因为v1.0移除了对Python 3.9的支持,Python版本需>= 3.10,影响范围可想而知。

2)、明确LangChain v1.0全家桶的核心变更,评估想要迁移的具体写法。例如新的`create_agent()`成为标准入口,取代`langgraph.prebuilt.create_react_agent`或`initialize_agent`等接口。同时还需确认是否保留旧特性,如果需要,可以通过`langchain-classic`和`langchain-legacy`兼容旧组件。

3)、依据场景不同,评估是否需要重构。有些高级的复杂模块,例如Deep Research这类业务,我就推荐使用Deep Agent搞定了。还有些业务,是否需要拆分,使用子智能体或子图的方式实现。

最后,我个人建议,与其考虑迁移到LangChain v1.0版本,真不如直接就重构吧,因为LangChain v1.0版本变化太大了。整体流程肯定是:你需要先全面了解LangChain v1.0的新特性,然后分析自己项目的业务与代码现状,进行重要度、复杂度、重构风险与重构成本等评估,制定重构业务或技术点的优先级。等全方位进行整体评估后,制定重构计划,再进行具体重构作业,而并不简单的告诉开发者说,出LangChain新版本了,你们给系统升级下吧,没那么简单。

-----

今天就写到这了,希望对大家有所帮助。

(正文完)

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询