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直接用 openaianthropic 官方包
LlamaIndex更专注于 RAG 场景,比 LangChain 更轻
Spring AIJava 开发者首选,和 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

# 如需 MCP 支持
uv pip install langchain-mcp-adapters mcp

版本说明

版本说明
LangChain 0.1.x稳定版,API 相对成熟
LangChain 0.2.x2024-2025,模块化重构
LangChain 0.3.x2025,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 ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

# 模型
llm = ChatOpenAI(model="gpt-4o", temperature=0.7)

# Prompt
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