目录
  1. 1. 目录
  2. 2. 项目速览
  3. 3. 功能概述
    1. 3.1. create_agent — 一行代码构建 Agent
    2. 3.2. LCEL — 声明式链式组合
    3. 3.3. Middleware 中间件系统
    4. 3.4. Standard Content Blocks
    5. 3.5. LangGraph — 图编排引擎
  4. 4. 适用场景
    1. 4.1. 智能客服与对话系统
    2. 4.2. RAG 知识库问答
    3. 4.3. 多步骤自动化工作流
    4. 4.4. 数据分析与报告生成
    5. 4.5. Agent 编排与多 Agent 系统
  5. 5. 快速上手
    1. 5.1. 环境要求
    2. 5.2. 安装
    3. 5.3. 最简示例:LLM 调用
    4. 5.4. 最简链:提示词 + LLM + 输出解析
  6. 6. 源码架构
  7. 7. 实操 Demo
  8. 8. 同类对比
  9. 9. 参考资源
LangChain — LLM 应用与 Agent 开发框架

GitHub: langchain-ai/langchain
Stars: 139,000+ | Language: Python (99.2%) | License: MIT
官网: langchain.com

目录

  1. 项目速览
  2. 功能概述
  3. 适用场景
  4. 快速上手
  5. 源码架构
  6. 实操 Demo
  7. 同类对比
  8. 参考资源

项目速览

LangChain 是目前最流行的 LLM 应用开发框架之一,由 Harrison Chase 于 2022 年创建,定位为 “The agent engineering platform”。截至 2026 年 6 月,项目在 GitHub 上已获得超过 139,000 颗 Star,拥有 23,000+ Fork 和 1,200+ Release,社区极为活跃。

LangChain 的核心理念是将 LLM 调用与外部工具、数据源组合成可复用的”链”(Chain),从而构建复杂的智能应用。随着 2025 年 10 月 LangChain 1.0 和 LangGraph 1.0 的正式发布,该框架已从早期的”LLM 工具箱”演进为完整的 Agent 工程平台。其生态体系涵盖四大核心组件:langchain-core(抽象层)、langchain(主包)、langchain-community(社区集成)和 langgraph(图编排引擎),此外还有 LangSmith(可观测性平台)和 LangServe(部署服务)等配套产品。

LangChain 的设计哲学是”低抽象、高可控”:提供开箱即用的高层 API 快速上手,也允许开发者随时下沉到 LangGraph 的图级别进行精细控制,两者共享同一运行时,无需重写代码。

功能概述

create_agent — 一行代码构建 Agent

LangChain 1.0 的核心抽象是 create_agent 函数,它封装了标准 Agent 循环:发送请求到模型、模型返回工具调用或最终答案、执行工具、循环往复。开发者只需指定模型和工具列表,即可得到一个功能完备的 Agent。

from langchain.agents import create_agent

agent = create_agent(
model="openai:gpt-4o",
tools=[get_weather, search_web, calculate],
system_prompt="你是一个乐于助人的助手,可以查询天气、搜索网络和执行计算。",
)
result = agent.invoke({"messages": [{"role": "user", "content": "北京的天气如何?"}]})

create_agent 底层运行在 LangGraph 运行时之上,因此你可以随时获取更细粒度的控制权。当需要添加条件分支、循环或人工审批环节时,直接从 Agent 对象中提取底层 StateGraph 进行定制即可。

LCEL — 声明式链式组合

LCEL(LangChain Expression Language)是 LangChain 的声明式组合语言,使用 | 管道操作符将组件串联为可执行的有向无环图(DAG)。LCEL 自动提供同步/异步执行、流式输出、批处理、重试和回退等能力。

from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI

prompt = ChatPromptTemplate.from_template("讲一个关于 {topic} 的笑话")
model = ChatOpenAI(model="gpt-4o")
chain = prompt | model | StrOutputParser()

# 流式输出
for chunk in chain.stream({"topic": "程序员"}):
print(chunk, end="", flush=True)

Middleware 中间件系统

LangChain 1.0 引入了中间件机制,允许开发者通过钩子函数拦截和定制 Agent 循环的每一个步骤。内置中间件包括:

  • Human-in-the-loop:在关键决策点暂停执行,等待人工审批
  • 对话摘要:当对话历史超过上下文窗口时自动压缩
  • PII 脱敏:自动检测和脱敏个人身份信息

自定义中间件可以用于输入预处理、工具选择策略、输出校验等场景。

Standard Content Blocks

LangChain 定义了一套与模型提供商无关的标准内容块规范,统一了不同模型(OpenAI、Anthropic、Google、开源模型等)的输出格式。支持推理追踪(reasoning traces)、引用标注(citations)、工具调用(包括服务端工具调用)等结构化输出,并且在不同提供商之间保持了流式输出的一致性。这意味着切换模型提供商时,上层应用的解析逻辑无需修改。

LangGraph — 图编排引擎

LangGraph 是 LangChain 生态中的底层编排引擎,基于 Pregel/BSP(Bulk Synchronous Parallel)模型构建。它将工作流建模为有向图,其中节点(Node)代表工作单元(LLM 调用、工具执行、代码函数),边(Edge)代表执行流和状态转换。核心特性包括:

  • 自动并行化:当多个节点之间不存在依赖关系时自动并行执行
  • 6 种流式模式:values、updates、messages、tasks、checkpoints、custom
  • 检查点(Checkpointing):可序列化的状态快照,支持从任意机器、任意时间恢复执行
  • Human-in-the-Loopinterrupt() 函数可在任意节点暂停,检查点机制支持数小时甚至数天后恢复

适用场景

智能客服与对话系统

LangChain 的 LCEL 和 LangGraph 组合非常适合构建多轮对话系统。可以利用 LangGraph 的条件分支实现意图识别、上下文切换等功能,通过检查点机制在长时间对话中保持状态一致,借助 Human-in-the-Loop 中间件在敏感操作(如退款)前加入人工审批。

RAG 知识库问答

LangChain 提供完整的 RAG 管道:文档加载器(支持 PDF、网页、数据库等 100+ 数据源)、文本分割器、向量存储集成(Chroma、Pinecone、Weaviate 等)和检索器。结合 LCEL,几行代码即可搭建一个从文档检索到答案生成的完整问答系统。

多步骤自动化工作流

对于需要复杂决策逻辑的企业自动化场景(如合同审核、贷款审批、供应链管理),LangGraph 的图编排能力可以将业务流程建模为有向图,每个步骤由 LLM 或代码函数执行,支持条件分支、循环、错误处理和人工干预。

数据分析与报告生成

Agent 可以连接数据库(通过 SQL 工具)、调用数据分析库(如 Pandas)、生成图表并撰写报告。LangGraph 的多 Agent 协作能力可以将数据提取、分析、可视化和报告撰写分派给不同的专门 Agent 并行处理。

Agent 编排与多 Agent 系统

LangGraph 支持构建复杂的多 Agent 系统:不同 Agent 拥有不同的工具集和系统提示词,通过有向图定义它们之间的协作关系。可以构建监督者-执行者模式、辩论模式或层级委托模式等多种 Agent 协作架构。

快速上手

环境要求

  • Python 3.10+
  • 一个 LLM 提供商的 API Key(如 OpenAI、Anthropic 或本地 Ollama)

安装

pip install langchain langchain-community langchain-openai

如果使用 Ollama 运行本地模型:

pip install langchain langchain-community langchain-ollama

最简示例:LLM 调用

from langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4o", temperature=0)
response = llm.invoke("用一句话解释什么是 LangChain")
print(response.content)

最简链:提示词 + LLM + 输出解析

from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI

prompt = ChatPromptTemplate.from_template(
"将以下文本翻译成{target_language}:{text}"
)
model = ChatOpenAI(model="gpt-4o")
chain = prompt | model | StrOutputParser()

result = chain.invoke({
"target_language": "英文",
"text": "人工智能正在改变世界"
})
print(result)
# Output: Artificial intelligence is changing the world.

源码架构

LangChain 仓库采用 monorepo 结构,核心代码位于 libs/ 目录下:

langchain/
├── libs/
│ ├── core/ # langchain-core:抽象层
│ │ ├── runnables/ # Runnable 接口(LCEL 基础)
│ │ ├── messages/ # 消息类型定义
│ │ ├── tools/ # 工具抽象与基类
│ │ ├── prompts/ # 提示词模板
│ │ ├── outputs/ # 输出解析器
│ │ └── callbacks/ # 回调系统
│ ├── langchain/ # 主包(高层的链和 Agent)
│ │ ├── chains/ # 预构建的链(问答、摘要等)
│ │ ├── agents/ # create_agent 和 Agent 抽象
│ │ └── middleware/ # 中间件系统
│ ├── community/ # langchain-community:社区集成
│ │ ├── document_loaders/ # 100+ 文档加载器
│ │ ├── vectorstores/ # 50+ 向量存储集成
│ │ ├── llms/ # 社区 LLM 集成
│ │ └── tools/ # 社区工具集
│ ├── langgraph/ # LangGraph:图编排引擎(独立仓库)
│ ├── text-splitters/ # 文本分割器
│ └── standard-tests/ # 标准测试套件
├── .github/ # CI/CD 工作流
└── README.md
  • langchain-core:框架的基石,定义了 Runnable、消息、工具、提示词、回调等核心抽象。所有其他包都依赖此包。
  • langchain:面向用户的主包,提供 create_agent、预构建链、中间件等高层 API。
  • langchain-community:社区维护的集成包,包含文档加载器、向量存储、LLM 包装器等第三方集成。
  • langgraph:底层的图编排引擎,实现基于 Pregel/BSP 的并行执行、状态管理、检查点和人工介入。

实操 Demo

下面是一个完整的 RAG 问答系统 Demo,演示如何使用 LangChain 从网页文档构建知识库并进行问答。

"""
完整的 RAG 问答系统 Demo
功能:加载网页文档 → 文本分割 → 向量化存储 → 检索 → 生成答案
"""

from langchain_community.document_loaders import WebBaseLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import Chroma
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough

# 1. 加载文档:从 LangChain 官方文档加载页面
print("[1/5] 正在加载文档...")
loader = WebBaseLoader(
web_paths=["https://python.langchain.com/docs/introduction/"]
)
docs = loader.load()
print(f" 加载了 {len(docs)} 个文档,总计约 {len(docs[0].page_content)} 字符")

# 2. 文本分割:将长文档切成适合检索的小块
print("[2/5] 正在分割文本...")
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=500, # 每块最大字符数
chunk_overlap=50, # 块之间重叠字符数,保持语义连续
separators=["\n\n", "\n", "。", ".", " ", ""]
)
splits = text_splitter.split_documents(docs)
print(f" 分割为 {len(splits)} 个文本块")

# 3. 向量化存储:将文本块转为向量并存入 Chroma
print("[3/5] 正在构建向量数据库...")
embeddings = OpenAIEmbeddings(model="text-embedding-3-small")
vectorstore = Chroma.from_documents(
documents=splits,
embedding=embeddings,
collection_name="langchain_docs"
)
retriever = vectorstore.as_retriever(
search_type="similarity", # 相似度检索
search_kwargs={"k": 4} # 返回最相关的 4 个文档块
)
print(f" 向量数据库已就绪,共 {vectorstore._collection.count()} 条记录")

# 4. 构建 RAG 链
print("[4/5] 正在构建 RAG 链...")

# 提示词模板:指示 LLM 如何利用检索到的上下文回答问题
template = """你是一个乐于助人的助手。请根据以下上下文回答问题。
如果上下文中没有足够信息,请如实说明不知道。

上下文:
{context}

问题:{question}

答案:"""

prompt = ChatPromptTemplate.from_template(template)
llm = ChatOpenAI(model="gpt-4o", temperature=0)

# LCEL 链:检索 → 格式化 → LLM → 解析
rag_chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt
| llm
| StrOutputParser()
)

# 5. 提问测试
print("[5/5] 开始问答测试\n")

questions = [
"LangChain 是什么?",
"LangChain 支持哪些主要功能?",
"什么是 LCEL?",
]

for i, question in enumerate(questions, 1):
print(f"--- 问题 {i} ---")
print(f"问:{question}")
answer = rag_chain.invoke(question)
print(f"答:{answer}\n")

# 额外展示:查看检索到的相关文档块
print("=== 检索示例:查看检索到的文档块 ===")
retrieved_docs = retriever.invoke("什么是 LangChain?")
for i, doc in enumerate(retrieved_docs):
print(f"\n[文档块 {i+1}] (来源: {doc.metadata.get('source', 'unknown')})")
print(doc.page_content[:200] + "...")

运行这个 Demo 的前提是:

# 安装依赖
pip install langchain langchain-community langchain-openai langchain-text-splitters chromadb

# 设置 API Key
export OPENAI_API_KEY="sk-..."

同类对比

特性 LangChain LlamaIndex Semantic Kernel
定位 通用 Agent 工程平台 文档 Agent 和 RAG 平台 企业级多语言 Agent SDK
Stars 139,000+ 50,100+ 28,100+
核心语言 Python Python C# / Python / Java
主要优势 生态最丰富,抽象设计优雅,LangGraph 提供精细控制 文档处理与检索能力业界领先,LlamaParse 文档解析出色 微软生态深度集成,支持 .NET/Java,企业级治理
Agent 模式 create_agent + LangGraph 图编排 + Middleware Agentic Document Workflows + Workflows 1.0 Agent Framework + Planner + Process Framework
适用场景 适合需要灵活组合和复杂编排的通用 Agent 应用 适合以文档为中心的 RAG 和智能文档处理场景 适合 .NET/Java 技术栈的企业级 AI 应用
学习曲线 中等:概念较多,但 1.0 后 API 已大幅简化 中等:RAG 概念直观,高级功能需要学习 中等偏高:横跨多种语言,文档相对分散

分析:LangChain 的最大优势在于其生态丰富度和设计灵活性。三者的定位差异明显:LangChain 是一个通用平台,适合需要高度定制化的 Agent 应用;LlamaIndex 在文档处理和 RAG 方面更专业;Semantic Kernel 则面向微软技术栈的企业用户。LangChain 1.0 的发布显著改善了 API 的可用性,create_agent 函数让 Agent 构建变得极其简洁,同时 LangGraph 为需要精细控制的场景提供了强大的图编排能力。如果你需要一个生态最完善、社区最活跃的通用 Agent 框架,LangChain 是最稳妥的选择。

参考资源

文章作者: Leo·Cheung
文章链接: http://tufusi.com/2026/06/15/SKILL-LangChain/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ONE·PIECE
打赏
  • 微信
  • 支付宝

评论