【LangChain】从“链式调用“到“中间件架构“——一场关于“控制“的三年长征
LangChain从链式调用到中间件架构——一场关于控制的三年长征演讲者LangChain 架构演进史听众所有在 Agent 开发中毕业过、又回来的开发者开场一个尴尬的问题大家好。我想先问在座的各位一个问题你们有多少人用 LangChain 写了个 Demo觉得卧槽这框架真香然后到了生产环境发现代码越写越像框架之外的手写代码最后干脆毕业离开了 LangChain停顿看台下举手好我看到不少手。不举手的要么是在座的大佬要么是还没写到生产环境。我今天要讲的就是 LangChain 团队如何花了近三年时间终于承认了一个事实开发者需要的不是便利而是控制。第一章2022-2023链式调用的蜜月期回到 2022 年底ChatGPT 刚火所有人都在问“怎么把 LLM 接到我的系统里”LangChain 给出的答案是链Chain。fromlangchainimportLLMChain,PromptTemplate template你是一个客服助手。 用户问题{question} 请给出回答chainLLMChain(llmChatOpenAI(),promptPromptTemplate.from_template(template))chain.run(我的订单什么时候到)三行代码一个客服机器人。 当时所有人都疯了这太方便了于是LLMChain、ConversationChain、SequentialChain、RetrievalQA……各种 Chain 像雨后春笋一样冒出来。但问题来了。当你的客服机器人需要先查订单状态再判断用户情绪情绪不好时转人工同时控制上下文长度别超过 4K token还要记录对话历史到数据库你的链就变成了# 伪代码但相信我真实代码比这更惨chainSequentialChain(chains[order_lookup_chain,emotion_analysis_chain,conditional_branch_chain,# 这个 Chain 里还有 if-elsecontext_compression_chain,history_saving_chain])代码爆炸了。而且你发现LangChain 的 Chain 抽象为了通用性把太多东西藏在了黑盒里。你想改一个细节对不起要么继承重写要么干脆不用 Chain自己手写。这就是第一个毕业潮。第二章2024LangGraph 的控制革命2024 年 2 月LangChain 团队做了一件事他们发布了 LangGraph。不是作为 LangChain 的一个新 Chain而是作为一个全新的、独立的框架。LangGraph 的核心思想很简单Agent 不是一个链而是一个图。节点是步骤边是流转条件你可以精确控制每一步的输入、输出、状态。fromlanggraph.graphimportStateGraph builderStateGraph(State)builder.add_node(lookup_order,lookup_order_node)builder.add_node(analyze_emotion,analyze_emotion_node)builder.add_node(human_handoff,human_handoff_node)builder.add_edge(lookup_order,analyze_emotion)builder.add_conditional_edges(analyze_emotion,route_by_emotion,# 你的自定义路由函数{angry:human_handoff,calm:generate_response})控制回来了你可以看到每一步的状态可以插入自定义逻辑可以精确控制流转。但新的问题出现了控制有了但上下文工程Context Engineering 太难了。怎么在调用模型前压缩历史对话怎么动态切换轻量模型和重模型怎么加缓存标签怎么在模型返回后做安全审查这些不是图结构能解决的这是横切关注点——每个节点都可能需要但又不属于任何一个节点的核心逻辑。于是开发者又开始在 LangGraph 的节点里写重复代码或者干脆在图外面包一层自己的前置处理/后置处理。第二个毕业潮来了。第三章2025 年 10 月 20 日LangChain 1.0——“我们错了”2025 年 10 月 20 日LangChain 发布了 1.0.0。官方博客的标题很直接“LangChain 1.0: 为生产级 AI 应用而生”但在我看来这篇博客的潜台词是“我们错了。过去三年我们给了你们便利但剥夺了你们的控制。现在我们要把控制还回来。”1.0 做了三件大事精简主包生态拆分langchain主包不再是一个大杂烩。模型集成拆到langchain-openai、langchain-anthropic……按需安装避免依赖地狱。LangGraph 独立但深度协作LangGraph 成为独立的 PyPI 包但 LangChain 1.0 的 Agent 直接建立在 LangGraph Runtime 之上。LangChain 1.0 Agent LangGraph Runtime控制流 LangChain Middleware上下文工程引入 Middleware API——这是今天的重点LangChain 1.0 从 Web 服务器Express、FastAPI借鉴了中间件模式。在 Agent 的核心循环中引入了三个拦截点fromlangchainimportAgent,MiddlewareclassMyMiddleware(Middleware):asyncdefbefore_model(self,state,config):# 模型调用前压缩上下文state.messagescompress_history(state.messages)returnstateasyncdefmodify_model_request(self,request,config):# 修改本次请求加缓存标签request.metadata[cache]Truereturnrequestasyncdefafter_model(self,state,response,config):# 模型调用后安全审查ifcontains_sensitive_info(response):raiseSecurityException(检测到敏感信息)returnstate agentAgent(modelgpt-4,tools[search,calculator],middleware[MyMiddleware(),LoggingMiddleware()])多个中间件按顺序执行入站正序、出站逆序。你可以像搭积木一样组合上下文压缩中间件模型降级中间件token 贵时切到轻量模型缓存中间件人机协同中间件Human-in-the-loop安全审查中间件而且这些中间件是横切的——不侵入你的业务逻辑节点但每个节点都能享受到。第四章2026 年LangGraph 1.0 与生态成熟2026 年 5 月 27 日LangGraph 1.0 正式发布。这标志着 LangChain 生态的分工彻底清晰层级 职责 对应包运行时 Agent 循环、状态管理、图结构、持久化langgraph上下文工程 中间件、工具调用、提示词管理、模型集成langchainlangchain-core模型集成 各厂商 LLM 的适配器langchain-openai、langchain-anthropic等截至 2026 年 6 月langchain最新 1.3.10langchain-core最新 1.4.8langgraph最新 1.0.0PyPI 总下载量突破 24 亿次Python 3.9 已被放弃最低要求 3.10部分新包甚至要求 3.11。尾声给还在毕业路上的开发者LangChain 的三年演进其实是一个框架与开发者之间信任重建的过程。0.x 时代框架说我帮你搞定一切开发者说好然后发现搞不定。LangGraph 时代框架说我给你控制开发者说好但上下文工程太烦。1.0 时代框架说我给你控制也给你上下文工程的工具开发者说这次好像真的可以了。中间件架构的本质是承认了一件事Agent 开发的复杂度不是来自业务逻辑而是来自横切关注点——安全、成本、缓存、审查、人机协同……这些不应该散落在每个节点里重复实现而应该像 Web 开发一样通过可组合、可复用、可插拔的中间件来解决。结束语如果你曾经因为 LangChain 的黑盒而离开现在可能是时候回来看看了。LangChain 1.0 不是完美的但它终于听懂了开发者真正想要什么。我们要的不是少写代码而是在需要控制的时候能控制得了。谢谢大家。全文完2026 年 6 月 29 日