LangChain 0.x 到 1.x 的演进:从 Chain 时代迈向 Agent 时代
目录前言一、LangChain 0.xChain 驱动时代什么是 Chain典型代码示例二、LangChain 0.x 面临的问题问题1流程固定问题2状态管理困难问题3多工具协作能力有限三、Agent 的崛起四、LangChain 1.x 的核心变化变化一Runnable 统一调用接口变化二LCEL 表达式语言变化三langchain-core 独立langchain-corelangchainlangchain-community五、LangGraph 的出现LangGraph 是什么StateNodeEdgeLangGraph 工作流示例六、为什么官方推荐 LangGraph更好的状态管理支持循环执行更适合 Agent七、LangSmith 的加入八、0.x 与 1.x 对比九、项目升级建议总结前言如果你在 2023 年接触过大模型应用开发那么大概率听说过 LangChain。作为 LLMLarge Language Model大语言模型生态中最受欢迎的开发框架之一LangChain 曾经是无数 AI 应用、知识库问答、智能客服以及 Agent 系统的首选框架。然而随着 GPT、Claude、Gemini 等大模型能力的快速提升以及 Agent 技术的兴起LangChain 官方也逐渐意识到单纯依靠 Chain链式调用已经无法满足复杂 AI 应用的需求。因此从 LangChain 0.x 到 LangChain 1.x整个框架经历了一次非常大的架构升级。很多开发者在升级项目时会发现LLMChain 被逐渐弱化AgentExecutor 不再是唯一选择Runnable 成为统一标准langchain-core 被独立拆分LangGraph 成为官方推荐方案那么这次升级究竟改变了什么本文将带你系统了解 LangChain 从 0.x 到 1.x 的完整演进过程。一、LangChain 0.xChain 驱动时代什么是 Chain在 LangChain 0.x 中最核心的概念就是 Chain。Chain 的本质就是将多个组件按照固定顺序连接起来完成任务。例如用户问题 ↓ PromptTemplate ↓ LLM ↓ OutputParser ↓ 结果输出架构图如下这种模式非常符合当时大模型应用开发的需求。开发者只需要编写 Prompt选择模型输出结果即可快速完成开发。典型代码示例在 0.x 时代最常见的代码如下from langchain.chains import LLMChain from langchain.prompts import PromptTemplate from langchain_openai import ChatOpenAI llm ChatOpenAI( modelgpt-4 ) prompt PromptTemplate( input_variables[topic], template请详细介绍一下{topic} ) chain LLMChain( llmllm, promptprompt ) result chain.run( topicLangChain ) print(result)这是当时最经典的开发方式。二、LangChain 0.x 面临的问题随着越来越多企业开始将大模型用于生产环境Chain 模式的问题逐渐暴露出来。问题1流程固定Chain 最大的问题就是执行路径是固定的。例如Prompt ↓ LLM ↓ Result如果希望判断用户意图调用不同工具根据结果再次推理那么 Chain 就会变得异常复杂。问题2状态管理困难例如一个智能客服用户提问 ↓ 查询订单 ↓ 查询物流 ↓ 查询退款 ↓ 回复用户此时会涉及用户上下文工具执行结果中间状态这些状态在 Chain 中管理起来非常麻烦。问题3多工具协作能力有限例如用户问今天北京天气怎么样 顺便帮我查一下从北京到上海的高铁票。此时需要天气工具 ↓ 搜索工具 ↓ 推理 ↓ 结果Chain 很难优雅处理这种复杂流程。三、Agent 的崛起随着 OpenAI Function Calling 的出现。行业开始进入 Agent 时代。所谓 Agent就是让 AI 具备自主决策能力。例如用户帮我规划一次北京三日游Agent 的执行过程可能是思考 ↓ 调用地图工具 ↓ 调用天气工具 ↓ 搜索景点 ↓ 生成行程 ↓ 返回结果此时已经不是简单链式调用。而是动态决策流程。四、LangChain 1.x 的核心变化变化一Runnable 统一调用接口在 0.x 中存在很多调用方式chain.run() chain.call() llm.predict() agent.run()对于开发者来说非常混乱。因此在 1.x 中进行了统一。统一采用 Runnable 接口。例如response chain.invoke( {topic: LangChain} )批量执行results chain.batch([ {topic: Python}, {topic: Java} ])流式输出for chunk in chain.stream( {topic: AI} ): print(chunk)统一之后学习成本明显降低。变化二LCEL 表达式语言LCELLangChain Expression Language是 1.x 的重要特性。以前chain LLMChain( promptprompt, llmllm )现在chain prompt | llm甚至chain ( prompt | llm | parser )这种写法类似 Unix Pipeline。可读性更高。示例from langchain_core.prompts import ChatPromptTemplate from langchain_openai import ChatOpenAI prompt ChatPromptTemplate.from_template( 请介绍一下{topic} ) llm ChatOpenAI() chain prompt | llm result chain.invoke( {topic: LangChain} ) print(result)变化三langchain-core 独立这是 1.x 最重要的架构升级之一。在 0.x 中langchain ├── Prompt ├── Chain ├── Agent ├── LLM └── Memory所有内容都在一个包里。导致包体积巨大启动慢依赖复杂因此官方进行了拆分。新的架构langchain-core ↑ │ langchain │ ↓ langchain-community架构图职责划分langchain-core核心接口Runnable Prompt Message OutputParserlangchain高层封装Agent Chain Workflowlangchain-community第三方集成FAISS Chroma Redis Elasticsearch HuggingFace五、LangGraph 的出现如果说LangChain 0.x 的核心是 Chain那么LangChain 1.x 的核心就是 LangGraph。官方甚至明确表示新项目推荐优先使用 LangGraph 构建 Agent。LangGraph 是什么LangGraph 本质上是State Machine Workflow Agent Framework即状态机 工作流 Agent框架其核心概念包括State状态class State(TypedDict): messages: listNode节点def chatbot(state): return { messages: [...] }Edge边决定执行路线。LangGraph 工作流示例相比 Chain固定流程LangGraph动态流程更加适合复杂 Agent。六、为什么官方推荐 LangGraph更好的状态管理例如state { messages: [], tool_results: [], user_profile: {} }所有状态统一管理。支持循环执行ChainA → B → C只能线性执行。LangGraphA ↓ B ↓ C ↓ B ↓ C支持循环推理。更适合 AgentAgent 的本质思考 ↓ 行动 ↓ 观察 ↓ 继续思考这种模式天然适合 Graph。七、LangSmith 的加入随着 Agent 越来越复杂。调试成为新的难题。因此官方推出LangSmith。作用类似Spring Boot Actuator 链路追踪 日志监控开发者可以看到Prompt ↓ LLM调用 ↓ Tool调用 ↓ 最终结果完整执行过程。示例import os os.environ[LANGCHAIN_TRACING_V2] true os.environ[LANGCHAIN_API_KEY] 你的key开启后即可查看完整调用链。八、0.x 与 1.x 对比对比项0.x1.x核心思想ChainAgent调用方式run/callinvoke架构模式线性流程Graph流程状态管理较弱强多工具协作一般强扩展能力中等高推荐框架LLMChainLangGraph可观测性基础LangSmith九、项目升级建议如果你的项目仍然停留在LLMChain ConversationChain AgentExecutor并不意味着必须立即重构。因为这些组件目前仍然能够正常工作。但是对于新项目推荐采用langchain-core langchain langgraph langsmith这一套官方推荐组合。这样不仅符合未来发展方向也能获得更好的扩展能力。总结从 LangChain 0.x 到 1.x本质上是一场从“链式编排”向“智能体编排”的演进。在 0.x 时代开发者关注的是Prompt ↓ LLM ↓ Output而在 1.x 时代开发者关注的是Agent ↓ Tool ↓ State ↓ Workflow随着 AI Agent 技术不断成熟LangChain 已经不再只是一个 Prompt 编排框架而是在向完整的 Agent 开发平台演进。对于开发者而言掌握 LangChain 1.x、LangGraph 以及 LangSmith 的使用方式将成为未来 AI 应用开发的重要能力。