📑 目录
- [LangChain 是什么](#LangChain 是什么)
- 六大核心组件
- [LangChain 1.x 重大演进](#LangChain 1.x 重大演进)
- LangGraph:有状态图执行引擎
- 核心代码实战
- 生态工具链
- 学习路线与资源
- 总结
1. LangChain 是什么
LangChain 是一个用于构建由大语言模型(LLM)驱动的应用程序的 Python/JS 框架。它提供了一套模块化、可组合的抽象,让开发者能够轻松将 LLM 与外部数据源、工具链、记忆系统等连接起来,构建从简单聊天机器人到复杂多 Agent 协作系统的各类 AI 应用。
一句话理解 : LangChain 不是"成品 Agent",而是造 Agent 的工具箱------你要亲手搭,但能搭出任何东西。
1.1 为什么需要 LangChain?
| 痛点 | LangChain 解决方案 |
|---|---|
| LLM 知识有截止日期,无法获取实时信息 | Tools + Agents 让 LLM 调用搜索引擎、API、数据库 |
| 单次对话无记忆,上下文容易丢失 | Memory 模块管理短期/长期记忆 |
| 提示词管理混乱,复用困难 | Prompts 模板化,支持变量注入与版本管理 |
| 复杂任务需要多步编排 | Chains / LangGraph 将多个步骤串联成工作流 |
| 企业私域数据无法直接喂给 LLM | Indexes + RAG 实现检索增强生成 |
| 生产环境缺乏可观测性 | LangSmith 全链路追踪与评估 |
1.2 典型应用场景
image🛠image_search:1#7
LangChain 的典型应用场景包括:
- 聊天机器人 --- 带记忆的多轮对话系统
- 文档问答(RAG) --- 基于私域知识库的问答
- 智能 Agent --- 能自主调用工具完成复杂任务
- 内容生成 --- 摘要、翻译、写作辅助
- 数据分析 --- 查询结构化数据、生成报表
- API 编排 --- 将多个 API 调用编排成自动化工作流
2. 六大核心组件
LangChain 的架构围绕六大核心模块展开,理解它们是掌握框架的关键。
2.1 Models(模型)
Models 是 LangChain 的"大脑",负责所有推理和生成任务。LangChain 不绑定特定模型,支持通过统一接口调用多种 LLM:
| 类型 | 说明 | 示例 |
|---|---|---|
| Chat Models | 对话型模型,接收消息列表返回消息 | GPT-4、Claude、DeepSeek、Qwen |
| LLMs | 文本补全型模型,接收字符串返回字符串 | GPT-3.5、text-davinci-003 |
| Embeddings | 文本向量化模型,用于语义检索 | text-embedding-ada-003、BGE |
LangChain 1.x 模型调用方式(推荐):
python
from langchain_openai import ChatOpenAI
from langchain_deepseek import ChatDeepSeek
# 方式1:直接使用提供商包
gpt = ChatOpenAI(model="gpt-4", temperature=0)
deepseek = ChatDeepSeek(model="deepseek-chat")
# 方式2:模型标识符字符串(自动推断)
from langchain.agents import create_agent
agent = create_agent("openai:gpt-4", tools=tools)
2.2 Prompts(提示词)
Prompts 模块用于管理提示词模板,支持变量注入、少样本示例(Few-shot)和输出解析。
python
from langchain.prompts import ChatPromptTemplate
prompt = ChatPromptTemplate.from_messages([
("system", "你是一位专业的{role}。"),
("human", "请帮我{task}"),
])
# 变量注入
messages = prompt.format_messages(role="Python工程师", task="写一个快速排序")
2.3 Chains(链)
Chain 是 LangChain 最基础的编排单元,将多个组件按顺序串联,前一个步骤的输出自动传入下一个步骤。
python
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
# 简单的 LLMChain
prompt = PromptTemplate(
input_variables=["product"],
template="为{product}写一句广告语:"
)
chain = LLMChain(llm=llm, prompt=prompt)
result = chain.run("智能手表")
常见 Chain 类型:
LLMChain--- 单步 LLM 调用SequentialChain--- 顺序执行多个 ChainRouterChain--- 根据输入动态路由到不同子 Chain
2.4 Memory(记忆)
Memory 解决 LLM 无状态的问题,让应用能够记住对话历史或用户偏好。
| 记忆类型 | 特点 | 适用场景 |
|---|---|---|
ConversationBufferMemory |
保存完整对话历史 | 短对话 |
ConversationBufferWindowMemory |
只保留最近 K 轮 | 长对话防溢出 |
ConversationSummaryMemory |
用 LLM 自动摘要历史 | 超长对话 |
VectorStoreRetrieverMemory |
基于向量检索相关记忆 | 大规模知识记忆 |
python
from langchain.memory import ConversationBufferMemory
memory = ConversationBufferMemory()
memory.save_context({"input": "你好"}, {"output": "你好!有什么可以帮你的?"})
print(memory.load_memory_variables({})) # 获取历史记录
2.5 Indexes(索引)
Indexes 模块是 RAG(检索增强生成)的核心,负责将文档切分、嵌入、存储到向量数据库,并支持语义检索。
image🛠image_search:1#5
RAG 标准流程:
python
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
# 1. 加载文档
loader = PyPDFLoader("paper.pdf")
docs = loader.load()
# 2. 切分文档
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
splits = text_splitter.split_documents(docs)
# 3. 嵌入并存储到向量库
vectorstore = Chroma.from_documents(splits, OpenAIEmbeddings())
# 4. 检索 + 生成
retriever = vectorstore.as_retriever(search_kwargs={"k": 3})
relevant_docs = retriever.get_relevant_documents("这篇论文的核心贡献是什么?")
2.6 Agents(智能体)
Agent 是 LangChain 最强大的组件,它将 LLM 与 Tools 结合,让模型能够自主推理、选择工具、迭代执行,直到完成任务。
Agent 核心循环(ReAct 模式):
- 接收用户输入
- LLM 推理 → 决定调用哪个 Tool
- Tool 执行并返回结果
- LLM 再次推理 → 循环直到满足停止条件
- 返回最终答案
python
from langchain.agents import create_agent, AgentExecutor
from langchain.tools import Tool
# 定义工具
tools = [
Tool(name="Calculator", func=calculator,
description="执行数学计算"),
Tool(name="Search", func=search,
description="搜索互联网获取实时信息"),
]
# 创建 Agent(LangChain 1.x 统一入口)
agent = create_agent("openai:gpt-4", tools=tools)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 执行
result = agent_executor.invoke({
"messages": [{"role": "user", "content": "今天北京天气如何?25的平方是多少?"}]
})
3. LangChain 1.x 重大演进
LangChain 从 0.x 到 1.x 经历了重大架构升级,核心变化包括:
3.1 统一 Agent 创建接口
| 版本 | 创建方式 | 特点 |
|---|---|---|
| 0.3 | initialize_agent, create_react_agent, create_openai_functions_agent... |
多种方式,容易混淆 |
| 1.x | create_agent |
统一入口,基于 LangGraph 构建 |
3.2 新增核心能力
LangChain 1.x 引入了多项生产级特性:
- 🔄 动态模型选择 --- 根据对话复杂度在运行时切换模型(如简单问题用 GPT-4o-mini,复杂问题用 GPT-4)
- 🔧 Middleware(中间件) --- 在 Agent 执行流程中插入自定义逻辑(日志、限流、模型路由)
- 📐 结构化输出 --- 强制 Agent 返回 JSON / Pydantic 模型,便于下游处理
- 🧠 自定义状态(Custom State) --- 扩展 Agent 的短期记忆,存储业务上下文
- 🛡️ Guardrails(护栏) --- 输出安全校验与内容过滤
- 👤 Human-in-the-loop --- 人工介入审核关键决策点
3.3 完整技术栈
---------------重点核心部分---------------
# 1 LangChain核心组件之 Agents智能体
# 2 LangChain核心组件之 Models模型
# 3 LangChain核心组件之 Messages消息
# 4 LangChain核心组件之 Tools工具
# 5 LangChain核心组件之 Short-term memory短期记忆
# 6 LangChain核心组件之 Streaming流式传输
# 7 LangChain核心组件之 Structured output 结构化输出
---------------高级应用部分---------------
# 8 LangChain高级之 Middleware 中间件
# 9 LangChain高级之 Guardrails 护栏
# 10 LangChain高级之 Runtime 运行时
# 11 LangChain高级之 Context engineering 上下文工程
# 12 LangChain高级之 Model Context Protocol (MCP) 模型上下文协议
# 13 LangChain高级之 Human-in-the-loop 人机交互
# 14 LangChain高级之 Multi-agent 多智能体
# 15 LangChain高级之 Retrieval 检索
# 16 LangChain高级之 Long-term memory 长期记忆
4. LangGraph:有状态图执行引擎
传统 Chain 本质上是有向无环图(DAG) ,无法处理循环、条件分支和持久化状态。LangGraph 是 LangChain 生态在 2024-2026 年的重大演进,已成为复杂工作流编排的核心引擎。
4.1 LangGraph vs 传统 Chain
| 特性 | 传统 Chain | LangGraph |
|---|---|---|
| 循环支持 | ❌ 无 | ✅ 节点间可循环跳转 |
| 条件分支 | ❌ 有限 | ✅ 动态条件路由 |
| 状态持久化 | ❌ 无内置 | ✅ Checkpoint 检查点机制 |
| 人工介入 | ❌ 不支持 | ✅ Human-in-the-loop |
| 流式输出 | ❌ 整链输出 | ✅ 节点级流式 |
4.2 LangGraph 核心概念
- State(状态) --- 整个图共享的状态对象,节点间通过状态传递数据
- Node(节点) --- 执行单元,可以是 LLM 调用、工具调用、函数处理
- Edge(边) --- 节点间的连接,支持普通边和条件边
- Checkpoint(检查点) --- 状态快照,支持中断恢复和历史回放
4.3 代码示例
python
from langgraph.graph import StateGraph, END
from typing import TypedDict, List
# 定义状态
class AgentState(TypedDict):
messages: List[str]
next_action: str
# 定义节点
def call_llm(state: AgentState) -> AgentState:
state["messages"].append("LLM 思考中...")
state["next_action"] = "use_tool"
return state
def use_tool(state: AgentState) -> AgentState:
state["messages"].append("调用工具完成")
state["next_action"] = "end"
return state
# 构建图
graph = StateGraph(AgentState)
graph.add_node("llm", call_llm)
graph.add_node("tool", use_tool)
graph.add_edge("llm", "tool")
# 条件边:根据状态决定下一步
graph.add_conditional_edges(
"tool",
lambda s: END if s["next_action"] == "end" else "llm"
)
graph.set_entry_point("llm")
# 编译并执行
app = graph.compile()
result = app.invoke({"messages": [], "next_action": ""})
4.4 多 Agent 工作流
LangGraph 特别适合构建多 Agent 协作系统,例如:
- Researcher Agent --- 负责信息检索
- Chart Generator Agent --- 负责数据可视化
- Router --- 根据任务类型动态分配 Agent
5. 核心代码实战
5.1 实战一:带工具调用的 ReAct Agent
python
from langchain.agents import create_agent, AgentExecutor
from langchain.tools import Tool
from langchain_openai import ChatOpenAI
import os
# 设置 API Key
os.environ["OPENAI_API_KEY"] = "your-api-key"
# 定义工具
def calculator(expression: str) -> str:
try:
return str(eval(expression, {"__builtins__": {}}, {}))
except Exception as e:
return f"计算错误:{e}"
def get_current_time(_: str) -> str:
from datetime import datetime
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
tools = [
Tool(name="Calculator", func=calculator,
description="执行数学计算,输入为数学表达式如 '360 * 24'"),
Tool(name="CurrentTime", func=get_current_time,
description="获取当前日期时间"),
]
# 创建 Agent
model = ChatOpenAI(model="gpt-4", temperature=0)
agent = create_agent(model, tools=tools,
system_prompt="你是一个 helpful 的助手,尽可能使用工具来回答用户问题。")
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 执行
result = agent_executor.invoke({
"messages": [{"role": "user", "content": "今天的日期是?360乘以24等于多少?"}]
})
print(result["output"])
5.2 实战二:动态模型选择(成本优化)
python
from langchain_openai import ChatOpenAI
from langchain.agents import create_agent
from langchain.agents.middleware import wrap_model_call, ModelRequest, ModelResponse
# 定义两个模型
basic_model = ChatOpenAI(model="gpt-4o-mini") # 便宜、快速
advanced_model = ChatOpenAI(model="gpt-4") # 强大、昂贵
@wrap_model_call
def dynamic_model_selection(request: ModelRequest, handler) -> ModelResponse:
message_count = len(request.state["messages"])
# 对话超过10轮,切换到强模型
model = advanced_model if message_count > 10 else basic_model
return handler(request.override(model=model))
agent = create_agent(
model=basic_model,
tools=tools,
middleware=[dynamic_model_selection]
)
5.3 实战三:RAG 文档问答系统
python
from langchain.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.embeddings import OpenAIEmbeddings
from langchain.vectorstores import Chroma
from langchain.chains import RetrievalQA
# 1. 加载 & 切分文档
loader = PyPDFLoader("company_handbook.pdf")
docs = loader.load()
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
splits = splitter.split_documents(docs)
# 2. 构建向量库
vectorstore = Chroma.from_documents(splits, OpenAIEmbeddings())
retriever = vectorstore.as_retriever(search_kwargs={"k": 4})
# 3. 构建 RAG Chain
qa_chain = RetrievalQA.from_chain_type(
llm=ChatOpenAI(model="gpt-4"),
chain_type="stuff",
retriever=retriever,
return_source_documents=True
)
# 4. 提问
result = qa_chain({"query": "公司的年假政策是什么?"})
print(f"答案: {result['result']}")
print(f"来源: {[doc.metadata for doc in result['source_documents']]}")
6. 生态工具链
LangChain 生态不仅包含核心框架,还有一系列配套工具:
6.1 LangSmith --- 可观测性平台
LangSmith 是 LangChain 官方提供的 LLM 应用观测平台,核心功能:
- ** Trace 追踪** --- 可视化每个 Chain/Agent 的执行步骤、Token 消耗、延迟
- 测试与评估 --- 批量运行测试集,自动评估输出质量
- Prompt 版本管理 --- 提示词 A/B 测试与回滚
- 监控告警 --- 生产环境性能监控
6.2 LangServe --- 部署服务
LangServe 让你可以将 LangChain 应用一键部署为 REST API:
python
from fastapi import FastAPI
from langserve import add_routes
app = FastAPI()
add_routes(app, chain, path="/chat")
# 自动生成 /chat/invoke /chat/stream 等端点
6.3 生态对比
| 工具 | 作用 | 是否付费 |
|---|---|---|
| LangChain | 核心开发框架 | 开源免费 |
| LangGraph | 有状态图执行引擎 | 开源免费 |
| LangSmith | 可观测性与评估 | 有免费额度 |
| LangServe | 部署为 API 服务 | 开源免费 |
7. 学习路线与资源
7.1 推荐学习路线
Week 1: 基础入门
├── Day 1-2: 安装环境,理解 Models + Prompts
├── Day 3-4: 掌握 Chains 基础编排
├── Day 5-6: Memory 记忆系统实战
└── Day 7: 小项目:带记忆的聊天机器人
Week 2: 进阶应用
├── Day 8-9: Indexes + RAG 文档问答
├── Day 10-11: Tools 开发与 Agent 基础
├── Day 12-13: ReAct Agent 实战
└── Day 14: 小项目:私域知识库问答系统
Week 3: 高级特性
├── Day 15-16: LangGraph 图编排
├── Day 17-18: 多 Agent 协作系统
├── Day 19-20: Middleware + 动态模型
└── Day 21: 小项目:多 Agent 研报生成系统
Week 4: 生产部署
├── Day 22-23: LangSmith 观测与评估
├── Day 24-25: LangServe 部署
├── Day 26-27: Guardrails + 安全
└── Day 28: 完整项目上线
7.2 官方资源
7.3 与其他框架对比
| 维度 | LangChain | AutoGPT | CrewAI |
|---|---|---|---|
| 定位 | Agent 构建脚手架 | 开箱即用的执行者 | 多角色协作编排 |
| 学习曲线 | 陡峭(2-4周) | 平缓(半天) | 中等(1周) |
| 生态成熟度 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
| 生产稳定性 | 高 | 低(易死循环) | 中 |
| 适用场景 | 企业级 RAG、复杂工作流 | 自动化研究 | 多角色内容生产 |
💡 选型建议 : 构建生产级系统 → LangChain + LangGraph ;快速原型验证 → CrewAI ;个人探索 → AutoGPT
8. 总结
8.1 核心要点回顾
| 组件 | 核心作用 | 记忆口诀 |
|---|---|---|
| Models | 推理大脑 | "谁在想" |
| Prompts | 指令模板 | "怎么说" |
| Chains | 流程编排 | "怎么串" |
| Memory | 记忆管理 | "记得住" |
| Indexes | 知识检索 | "查得到" |
| Agents | 自主决策 | "自己干" |
| Tools | 外部能力 | "能干啥" |
8.2 2026 发展趋势
- 框架融合加速 --- LangChain 吸收角色编排概念,框架边界逐渐模糊
- Agent 可观测性成为标配 --- 无 Trace/Log 的 Agent 无法进入生产环境
- 边缘 Agent 爆发 --- 手机端 LLM 推理成熟,轻量 Agent 在移动端落地
- Multi-Agent 工程化 --- 从 Hackathon 玩具走向拥有状态恢复、死锁检测的工业级方案
- Agent 即服务(AaaS) --- 托管式 Agent 平台兴起
8.3 最后
LangChain 的学习曲线确实较陡,概念众多,但一旦掌握其**"组件化 + 可组合"**的设计哲学,你就能像搭积木一样构建出任意复杂的 LLM 应用。建议从简单的 Chain 开始,逐步深入到 Agent 和 LangGraph,配合 LangSmith 进行观测调优,最终走向生产部署。
🎯 核心心法: Chain 解决"怎么做",Agent 解决"做什么",LangGraph 解决"怎么循环做"。
参考来源:
- LangChain 官方文档
- LangGraph 官方博客
- CSDN《LangChain 实战指南:2026年大模型应用开发框架核心价值与落地实践》
- CSDN《2026 AI Agent 框架深度对比:LangChain vs AutoGPT vs CrewAI》
- ApFramework《知识提取:LangChain 核心概念与内容精要》