Skip to content

LangChain 是什么?它主要用来解决什么问题? ​

  • 标签:LangChain、LangChain 基础

🏛 业务架构师 ​

LangChain 是什么、解决什么问题(与 028 题同源,这里从"要不要用"的决策角度补充):

是什么:最流行的 LLM 应用开发框架——把模型调用、提示模板、检索(RAG)、记忆、工具调用、Agent 编排抽象成可组合的标准组件,用统一的 Runnable 协议串接,配套 LangSmith 可观测与评测。

解决什么问题:LLM 应用开发中 80% 的工作量不在调模型 API,而在周边工程——对接数据源、管理提示词、维护会话、编排多步流程、换模型适配、监控调试。LangChain 把这些"每个项目都要重写一遍"的部分标准化——5 人团队两周出 MVP 而不是两个月,这就是它的核心价值:降低试错成本,加速价值验证。

企业要不要用,我的决策框架:

  • 用它的理由:生态最全(组件/文档/案例)、人才好招(社区大)、快速验证期效率无敌;
  • 防它的理由:抽象层多导致排错困难、版本迭代有 Breaking Change、深度绑定后迁移成本高。

我的实践姿势(可直接背):POC 期全量用 LangChain 换速度;生产期收窄依赖面——核心链路只用最底层抽象(模型接口+LCEL),复杂业务逻辑自己写;架构上永远保留"离开 LangChain"的能力——提示词、评测集、数据管道这些真正值钱的资产框架无关。"框架是租的,资产是自己的"——这句话就是我的选型立场。

🏗 系统架构师 ​

LangChain = LLM 应用开发的编排框架:统一抽象(模型/Prompt/检索/记忆/工具)+ 组合管道(LCEL)+ Agent 编排(LangGraph),解决 LLM 生态的碎片化问题:

解决的问题(架构视角三个):

  • 集成碎片化:模型厂商、向量库、工具 API 各自为政——LangChain 的统一抽象(BaseChatModel/VectorStore/Tool)实现依赖倒置,换供应商只改配置;集成生态(上百个包)让 PoC 速度从周级到天级;
  • 缺乏编程范式:LLM 应用早期各家手写胶水代码——LangChain 定义了标准结构(链式管道、消息模型、输出解析、流式/异步原语),社区形成共同语言;
  • 复杂编排缺工具:Agent 循环、状态管理、多步工作流——LangGraph 提供图状态机 + checkpoint 持久化 + human-in-the-loop,把"手写 while 循环 + 全局变量"的粗糙实现工程化。

清醒的边界(生产权衡):

  • 抽象税:层数多 → 调试栈深、性能开销、版本迭代快接口不稳——生产核心链路薄封装是正当策略(PoC 用框架抢速度,稳定后热点路径绕过直连 SDK);
  • 不替你解决的:评估体系(LangSmith 是配套不是内置能力)、数据质量、Prompt 资产管理——这些是应用团队的功课。

选型结论:2026 年 LangChain+LangGraph 仍是 LLM 应用默认起点(生态最大、文档最全),但把 Prompt/评估集/工具实现沉淀在框架外——框架可换,资产永存。

💻 全栈开发专家 ​

LangChain 是 LLM 应用开发框架,解决的是「从模型 API 到可维护的应用」之间的所有胶水问题:

它解决的问题清单(按痛点):

  1. 集成碎片化:各家模型、几十种向量库、各种数据源的 SDK 各不相同——LangChain 统一抽象(ChatModel/VectorStore/Retriever),换实现不动业务代码;
  2. 编排复杂度:prompt→检索→生成→解析的流程、流式/重试/降级这些横切需求——LCEL 管道一行组合,工程能力内置;
  3. RAG 全链路:加载→切分→嵌入→检索→重排→生成的每个环节都有现成组件;
  4. Agent 开发:工具定义、Agent 循环、记忆管理、(配合 LangGraph)状态机编排;
  5. 可观测与评估:LangSmith 集成 trace/评测,LLM 应用的「单元测试」基础设施。

一个最小感受(10 行 RAG):

python
chunks = RecursiveCharacterTextSplitter().split_documents(docs)
vs = Chroma.from_documents(chunks, OpenAIEmbeddings())
chain = ({"context": vs.as_retriever() | fmt, "question": RunnablePassthrough()}
         | prompt | llm | StrOutputParser())
chain.invoke("退货政策")

我的使用哲学(十年工程视角):

  • 原型期:LangChain 极快,生态省几周胶水代码;
  • 生产期:只依赖 langchain-core + partner 包,核心链路薄抽象自研——框架升级、抽象泄漏的长期成本要提前防;
  • 它最大的价值是把「LLM 应用的通用模式」沉淀成了标准件,哪怕最后自研,你也应该先用它学一遍「该有哪些件」。