LangChain 生态总览 Python AI Agent 开发的代表性框架。理解它的设计哲学和边界,才能判断何时用它、何时绕过它。
什么是 LangChain? LangChain 是一个调用大模型的工具库 ,核心价值:
1 2 3 4 5 传统方式: 你的代码 → OpenAI API → 手动处理 JSON → 手动拼接 Prompt LangChain 方式: 你的代码 → LangChain → 统一接口 → 支持任意 LLM
对比:就像你用 JDBC/ORM 操作数据库,而不是直接用 Socket 发 SQL。
LangChain 生态组成 1 2 3 4 5 6 7 8 9 10 11 12 ┌────────────────────────────────────────────────────┐ │ LangChain 生态 │ ├──────────────┬───────────────┬─────────────────────┤ │ langchain-core │ langchain │ langchain-community │ │ (核心接口/抽象) │ (高层 API) │ (第三方集成) │ ├──────────────┴───────────────┴─────────────────────┤ │ LangChain Expression Language (LCEL) │ │ 统一的管道式组合语法 │ ├────────────────────────────────────────────────────┤ │ LangGraph │ LangSmith │ │ (有状态工作流) │ (观测/调试平台) │ └────────────────────────────────────────────────────┘
包 说明 langchain-core核心抽象:ChatModel、Prompt、OutputParser、Tool langchain高层 API:各种 Chain、Agent 封装 langchain-community第三方集成:各种 VectorDB、API 适配器 langchain-openai / langchain-anthropic官方模型适配器 langgraph有状态工作流(循环图) langsmith可观测性平台
什么时候用 LangChain? 适合的场景 ✅ RAG 流水线(文档加载 → 分块 → 向量化 → 检索 → 生成) ✅ 多步骤复杂 Prompt 组装 ✅ 需要统一切换不同 LLM(OpenAI ↔ Anthropic ↔ Ollama) ✅ 快速原型开发 ✅ Function Calling 封装
不适合的场景 ❌ 对延迟/成本极度敏感 — LangChain 有抽象开销,直接调 API 更高效 ❌ 需要极简依赖 — 直接用 openai / anthropic Python 包更轻 ❌ 需要完全自定义控制 — LangChain 的”魔法”会在复杂场景下变成障碍
替代方案 替代 说明 Direct API 直接用 openai、anthropic 官方包 LlamaIndex 更专注于 RAG 场景,比 LangChain 更轻 Spring AI Java 开发者首选,和 Spring Boot 深度集成 Semantic Kernel 微软出品,企业 Microsoft 生态首选
安装 1 2 3 4 5 6 7 8 9 10 uv pip install langchain langchain-openai uv pip install langgraph langchain-community \ langchain-openai langchain-anthropic \ langchain-mcp-adapters uv pip install langchain-mcp-adapters mcp
版本说明 版本 说明 LangChain 0.1.x 稳定版,API 相对成熟 LangChain 0.2.x 2024-2025,模块化重构 LangChain 0.3.x 2025,langchain-core 完全重写
注意 :2024 年底 LangChain 进行了breaking change 拆分,老教程可能不兼容,以官方文档为准。
快速示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 from langchain_openai import ChatOpenAIfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.output_parsers import StrOutputParserllm = ChatOpenAI(model="gpt-4o" , temperature=0.7 ) prompt = ChatPromptTemplate.from_messages([ ("system" , "你是一个{language}编程助手" ), ("human" , "用{language}写一个{focus}" ) ]) chain = prompt | llm | StrOutputParser() result = chain.invoke({ "language" : "Python" , "focus" : "快速排序" }) print (result)
核心概念图 1 2 3 4 PromptTemplate → LLM → OutputParser ↑ ↓ └── 都可以用管道 | 连接 ──┘ 这就是 LCEL