2026年,大语言模型(LLM)已经渗透到各行各业。但仅仅调用一个聊天API远远不够——真正的AI应用需要把模型与外部数据、工具、工作流串联起来。这就是LangChain大放异彩的地方。

我自己从2024年开始使用LangChain,当时它还处于快速迭代的早期阶段,文档经常跟不上代码的变化,踩了不少坑。到了2026年,LangChain已经稳定了很多,API设计更加合理,社区生态也更加丰富。我用LangChain构建过知识库问答系统、自动化客服机器人、数据分析Agent等多种类型的应用,可以说它是我AI开发工具箱中最常用的工具。
LangChain是什么? LangChain是由Harrison Chase于2022年创建的LLM应用开发框架,总部位于美国。它的核心定位是”LLM应用的瑞士军刀”——提供一套标准化的组件,让开发者像搭积木一样构建复杂的AI应用。无论你是想做RAG知识库、AI Agent、还是多步骤数据管道,LangChain都能帮你大幅减少样板代码。
那LangChain怎么读呢?它读作/læŋ tʃeɪn/,中文音译约”朗-切恩”,Lang是Language(语言)的缩写,Chain是”链”的意思,形象地表达了其核心理念:将多个AI处理步骤串联成一条处理链路。想访问LangChain官网获取LangChain中文文档,可以直接前往 langchain.com。
如果你想要一个更全面的AI开发工具概览,可以看看我们的AI工具合集2026,里面涵盖了从开发到部署的全链路工具。
二、LangChain核心概念
理解LangChain,只需要掌握四个核心组件。我会用生活中的类比来解释,确保零基础的同学也能理解。

2.1 Chains(链)
Chain是LangChain最基础的设计模式。它将多个处理步骤按顺序串联:Prompt模板 → LLM调用 → 输出解析。
生活类比:想象你在餐厅点菜。你(用户)把需求告诉服务员(Prompt模板),服务员把订单传给厨师(LLM),厨师做好菜后由传菜员端上来(输出解析)。这整个流程就是一条Chain。
例如,接收用户问题 → 套入预设模板 → 调用GPT-4 → 格式化返回结果,这就是一条最简单的链。在代码中,LangChain用管道符号|来串联各个步骤,非常直观。
2.2 Agents(智能体)
Agent是LangChain最具魅力的组件。它赋予LLM”自主决策”能力——模型可以分析任务、选择工具、执行操作、观察结果,然后决定下一步。
生活类比:Agent就像你的私人助理。你说”帮我查一下北京明天天气,然后发送邮件给老板”,助理会自动判断需要先调用天气查询工具,再调用邮件工具,完全自主完成。你不需要告诉他每一步怎么做,他有自己的判断力。
在实际应用中,Agent可以调用的工具包括:搜索引擎、代码解释器、数据库查询、文件操作、API调用等等。只要你能定义好工具的接口,Agent就能学会使用它。
2.3 Tools(工具)
Tool是扩展LLM能力的插件。LLM本身只能生成文本,但通过Tool,它可以搜索网页、执行Python代码、查询数据库、调用API。
LangChain内置了大量工具,也支持自定义——这正是Agent”动手能力”的来源。每个Tool都有三个关键属性:名称(name)、描述(description)、执行函数(func)。描述越准确,Agent就越能正确选择和使用这个工具。
自定义工具示例:
from langchain.tools import tool
@tool
def search_product(query: str) -> str:
"""搜索商品数据库,返回匹配的商品列表"""
# 这里连接你的数据库或API
results = db.search(query)
return str(results)
2.4 Memory(记忆)
默认情况下,LLM每次调用都是”失忆”的。Memory组件为对话注入上下文持久化能力,让聊天机器人记住之前的对话历史,实现真正连贯的多轮对话。
生活类比:没有Memory的LLM就像金鱼,每次对话都是全新开始。有了Memory,它就像一个正常的对话伙伴,能记住之前聊过什么。
LangChain提供多种Memory类型:
- ConversationBufferMemory:保存完整对话历史,最简单但token消耗大
- ConversationSummaryMemory:自动总结历史,节省token但会丢失细节
- ConversationBufferWindowMemory:只保留最近N轮对话,平衡效果与成本
- VectorStoreMemory:用向量数据库存储历史,支持语义检索
架构图说明
LangChain的整体架构可以理解为:应用层通过Chain或Agent编排逻辑 → Memory提供上下文 → LLM作为”大脑”推理 → Tools扩展执行能力 → 外部数据源(向量数据库、API、文档)提供知识。各组件松耦合,开发者可以灵活组合。
三、安装与环境配置
基础安装
使用pip安装LangChain核心包和最常用的集成:

pip install langchain langchain-community langchain-openai
如果你使用DeepSeek、通义千问等国产模型,还需要安装对应的集成包:
# DeepSeek(兼容OpenAI接口)
pip install langchain-openai # DeepSeek使用OpenAI兼容接口
# 通义千问
pip install langchain-community # 包含通义千问集成
# 本地模型(Ollama)
pip install langchain-community
API Key配置
以OpenAI为例:
import os
os.environ["OPENAI_API_KEY"] = "your-api-key"
推荐使用.env文件管理敏感配置,避免密钥泄露:
# .env文件
OPENAI_API_KEY=sk-xxxxx
DEEPSEEK_API_KEY=sk-xxxxx
SERPAPI_API_KEY=xxxxx
from dotenv import load_dotenv
load_dotenv() # 自动加载.env中的环境变量
LangChain支持几乎所有主流模型提供商:OpenAI(GPT-4)、Anthropic(Claude)、DeepSeek、通义千问等。只需安装对应的集成包即可切换。想了解DeepSeek的具体用法,可以参考我们的DeepSeek完整指南。
开发环境推荐配置
我推荐的开发环境配置如下:
- Python版本:3.10+(LangChain对旧版Python支持有限)
- IDE:VS Code + Python扩展 + Jupyter扩展
- 虚拟环境:使用conda或venv隔离依赖
- 调试工具:LangSmith(后面会详细介绍)
- 版本管理:Git(每次调优Prompt都commit一次)
四、8个入门代码示例
示例1:最简单的Chain(Prompt → LLM → Output)

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
llm = ChatOpenAI(model="gpt-4o", temperature=0.7)
prompt = ChatPromptTemplate.from_template("用一句话解释{topic}是什么")
chain = prompt | llm
response = chain.invoke({"topic": "LangChain"})
print(response.content)
# 输出:LangChain是一个用于构建LLM驱动应用的框架...
这是LangChain最基础的用法。|是Python的管道运算符,LangChain重载了它来实现链式调用。数据从左到右依次流过每个组件。
示例2:带输出解析的Chain
from langchain_core.output_parsers import JsonOutputParser
from langchain_core.prompts import ChatPromptTemplate
parser = JsonOutputParser()
prompt = ChatPromptTemplate.from_template(
"列出3个{topic}的优点,用JSON格式返回,格式:{{\"优点\": [\"...\", \"...\", \"...\"]}}"
)
chain = prompt | llm | parser
result = chain.invoke({"topic": "Python语言"})
print(result) # 直接得到Python字典
# {'优点': ['语法简洁', '生态丰富', '社区活跃']}
示例3:带记忆的对话机器人
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
memory = ConversationBufferMemory()
conversation = ConversationChain(llm=llm, memory=memory)
conversation.predict(input="我叫小明")
conversation.predict(input="我叫什么名字?")
# 输出:你叫小明(Memory让它记住了上下文)
示例4:使用工具(搜索引擎Agent)
from langchain.agents import initialize_agent, AgentType
from langchain.tools import Tool
def search_tool(query):
# 接入搜索引擎API(如SerpAPI、Tavily)
return f"关于'{query}'的搜索结果..."
tools = [Tool(name="搜索", func=search_tool, description="搜索互联网获取信息")]
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION)
agent.run("2026年诺贝尔和平奖得主是谁?")
示例5:RAG文档问答
from langchain_community.document_loaders import TextLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import Chroma
from langchain_openai import OpenAIEmbeddings
# 加载并切分文档
loader = TextLoader("knowledge.txt")
documents = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = text_splitter.split_documents(documents)
# 向量化存储
vectorstore = Chroma.from_documents(chunks, OpenAIEmbeddings())
# 检索问答
retriever = vectorstore.as_retriever()
query = "公司年假政策是什么?"
docs = retriever.get_relevant_documents(query)
print(docs[0].page_content)
示例6:多步骤数据管道
from langchain.chains import SequentialChain, LLMChain
from langchain_core.prompts import PromptTemplate
# 第一步:分析文本情绪
sentiment_prompt = PromptTemplate(
input_variables=["text"],
template="分析以下文本的情感倾向(正面/负面/中性):{text}"
)
sentiment_chain = LLMChain(llm=llm, prompt=sentiment_prompt, output_key="sentiment")
# 第二步:根据情绪生成回复
reply_prompt = PromptTemplate(
input_variables=["text", "sentiment"],
template="原文:{text}
情感:{sentiment}
请根据情感类型生成合适的回复"
)
reply_chain = LLMChain(llm=llm, prompt=reply_prompt, output_key="reply")
# 串联
overall_chain = SequentialChain(
chains=[sentiment_chain, reply_chain],
input_variables=["text"],
output_variables=["sentiment", "reply"]
)
result = overall_chain({"text": "这个产品质量太差了!"})
print(result["sentiment"]) # 负面
print(result["reply"]) # 很抱歉给您带来不好的体验...
示例7:自定义工具Agent
from langchain.agents import tool
from langchain.agents import AgentExecutor, create_openai_tools_agent
@tool
def calculate(expression: str) -> str:
"""计算数学表达式,输入如 '2 + 3 * 4'"""
return str(eval(expression))
@tool
def get_weather(city: str) -> str:
"""查询指定城市的天气"""
# 实际项目中这里调用天气API
return f"{city}今天晴,25°C"
tools = [calculate, get_weather]
agent = create_openai_tools_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
result = agent_executor.invoke({"input": "北京今天天气怎么样?如果温度乘以2是多少?"})
示例8:流式输出(实时显示生成过程)
from langchain_openai import ChatOpenAI
llm_streaming = ChatOpenAI(model="gpt-4o", streaming=True)
prompt = ChatPromptTemplate.from_template("写一篇关于{topic}的短文")
chain = prompt | llm_streaming
for chunk in chain.stream({"topic": "人工智能"}):
print(chunk.content, end="", flush=True)
# 逐字输出,像ChatGPT那样的打字效果
五、LangChain生态详解
LangChain不仅仅是一个框架,更是一个完整的生态系统。了解这些工具可以大幅提升你的开发效率。
LangSmith:调试与监控平台
LangSmith是我在生产环境中不可或缺的工具。它可以可视化追踪每一轮LLM调用,分析Token消耗、延迟、错误率。
核心功能:
- Trace追踪:看到每一次LLM调用的完整输入输出,包括中间的Tool调用
- 数据集评估:创建测试数据集,自动化评估Prompt的效果
- 在线监控:实时查看生产环境的LLM调用情况
- A/B测试:对比不同Prompt版本的效果
接入方式:
import os
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = "your-langsmith-key"
只需设置两个环境变量,你所有的LangChain调用就会自动被记录到LangSmith后台。
LangServe:一键部署为API
LangServe让你把Chain或Agent一键部署为REST API,支持自动生成OpenAPI文档和在线测试页面:
from langserve import add_routes
from fastapi import FastAPI
app = FastAPI()
add_routes(app, chain, path="/chat")
# 访问 /chat/playground 即可在线测试
如果你正在学习FastAPI,可以看看我们的FastAPI与AI开发教程,里面有更详细的部署指南。
LangGraph:复杂工作流编排
当简单的线性Chain无法满足需求时,LangGraph让你用图(Graph)来定义Agent的多分支决策流程。
适用场景:
- 需要循环的逻辑(如:反复搜索直到找到满意的答案)
- 需要分支判断(如:根据用户意图走不同的处理路径)
- 需要多个Agent协作(如:一个Agent负责搜索,另一个负责总结)
- 需要人工干预(如:关键决策需要人类确认)
from langgraph.graph import StateGraph, END
# 定义状态
class AgentState(TypedDict):
messages: list
next_step: str
# 定义节点
def researcher(state):
# 搜索信息
...
def writer(state):
# 撰写内容
...
# 构建图
graph = StateGraph(AgentState)
graph.add_node("research", researcher)
graph.add_node("write", writer)
graph.add_edge("research", "write")
graph.add_edge("write", END)
六、与其他框架对比
除了LangChain,2026年还有几个热门框架值得关注:
| 框架 | 定位 | 适用场景 | 学习曲线 | 社区规模 | 生态完整度 |
|---|---|---|---|---|---|
| LangChain | 通用LLM框架 | 几乎所有场景 | 中等 | 最大 | 最完整 |
| LlamaIndex | 数据索引与检索 | RAG、文档问答 | 较低 | 大 | 专注RAG |
| CrewAI | 多Agent协作 | 模拟团队工作流 | 较低 | 中等 | 专注多Agent |
| Dify | 低代码AI平台 | 快速搭建应用 | 最低 | 中等 | 中等 |
| AutoGen | 多Agent对话 | 研究/实验 | 较高 | 中等 | 专注对话 |
LangChain的优势在于生态最完整、社区最大、灵活性最高,适合有编程基础的开发者。Dify更适合非技术人员通过可视化界面搭建应用。LlamaIndex在RAG场景下效率更高。CrewAI则专注于多Agent协作。
实际项目中,常常是LangChain + LlamaIndex配合使用:LlamaIndex负责高效检索,LangChain负责流程编排。这种组合在知识库问答场景中表现最佳。
七、常见问题与解决方案
Q:LangChain的API变化太频繁了,怎么跟上最新版本? A:确实,LangChain的API在2024-2025年变化很大,很多老教程已经过时了。到了2026年已经相对稳定。建议关注官方changelog,使用langchain-core中的稳定接口,尽量避免使用langchain-community中频繁变动的实验性功能。另外,LangChain的官方文档现在有了中文翻译,对中文开发者友好多了。我的建议是:锁定一个稳定版本(如0.3.x),只在有大版本更新时才升级。
Q:LangChain的性能怎么样?会不会很慢? A:LangChain本身只是编排层,它不会增加明显的性能开销。性能瓶颈通常在LLM调用和网络请求上。合理使用流式输出、异步调用和缓存可以大幅优化体验。对于高并发场景,建议使用LangServe + FastAPI的异步能力,配合Redis缓存重复查询,可以将响应时间降低60%以上。
Q:怎么处理LangChain的错误和异常? A:建议在Chain中添加fallback逻辑,这样主链失败时会自动切换到备用链。同时,在生产环境中一定要加上重试机制和超时控制。LLM API偶尔会出现500错误或超时,没有重试机制的应用在高峰期很容易崩溃。
chain = primary_chain.with_fallbacks([backup_chain])
# 配合重试装饰器
from tenacity import retry, stop_after_attempt
@retry(stop=stop_after_attempt(3))
def call_chain():
return chain.invoke(input)
Q:LangChain支持流式输出吗?怎么实现打字机效果?
A:支持。使用.stream()方法代替.invoke()即可逐块接收LLM的输出。这在Web应用中特别有用,可以让用户看到实时生成的文字,就像ChatGPT那样的打字机效果,大幅提升用户体验。参考上面的示例8,那个就是最简单的流式输出实现方式。
Q:怎么调试LangChain应用?出了问题很难排查
A:三种方式:第一,设置verbose=True可以看到详细的中间步骤,包括每个Tool的调用和LLM的推理过程;第二,使用LangSmith追踪每次调用,它提供了可视化的调用链路图,可以精确定位哪个环节出了问题;第三,在Jupyter Notebook中逐步调试每个Chain组件,单独测试每一步的输入输出。我推荐日常开发用verbose,生产环境用LangSmith。
Q:LangChain和直接调用API有什么区别?为什么要多一层框架? A:直接调用API适合简单场景,比如单次对话或简单问答。但当你需要记忆管理、工具调用、多步骤编排、RAG检索等复杂功能时,自己写这些代码工作量巨大。LangChain的价值在于:标准化的组件接口、内置的Memory管理、Tool/Agent编排能力、以及与各种数据源的集成。当你的应用复杂度增加时,LangChain能帮你避免大量重复代码,让你专注于业务逻辑而不是底层实现。
Q:LangChain能用在生产环境中吗?还是只适合原型? A:完全可以用于生产环境。我自己的多个项目已经在生产环境运行了超过一年。关键是要做好监控(用LangSmith)、错误处理(fallback和重试)、缓存(Redis)和日志记录。LangServe提供了生产级的API部署能力,支持负载均衡和自动扩缩容。
八、进阶技巧
Prompt工程与LangChain结合
LangChain的PromptTemplate是做好提示词工程的基础。我推荐几个实用技巧:
- Few-shot模板:在模板中包含2-3个示例,教AI学习你的期望格式
- 结构化输出:配合Pydantic模型使用
with_structured_output确保输出格式 - 动态Prompt:根据用户输入动态选择不同的Prompt模板
from langchain_core.prompts import FewShotPromptTemplate, PromptTemplate
examples = [
{"input": "今天天气真好", "output": "情感:正面,关键词:天气"},
{"input": "这个项目延期了", "output": "情感:负面,关键词:项目、延期"},
]
缓存策略优化
对于重复的查询,使用LangChain的缓存功能可以大幅节省成本:
from langchain.cache import InMemoryCache
from langchain.globals import set_llm_cache
set_llm_cache(InMemoryCache())
# 相同的查询只会调用一次LLM,后续从缓存返回
生产环境建议使用Redis缓存:
from langchain.cache import RedisCache
import redis
set_llm_cache(RedisCache(redis_=redis.Redis()))
评估与测试
LangChain提供了内置的评估框架,可以自动化测试你的应用质量:
from langchain.evaluation import load_evaluator
evaluator = load_evaluator("qa")
result = evaluator.evaluate_strings(
prediction="LangChain是AI开发框架",
reference="LangChain是一个用于构建LLM应用的开源框架",
input="LangChain是什么?"
)
print(result["score"]) # 评分
与DeepSeek配合使用
DeepSeek的API与OpenAI完全兼容,只需修改base_url和api_key即可在LangChain中使用:
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="deepseek-chat",
openai_api_key="your-deepseek-key",
openai_api_base="https://api.deepseek.com/v1"
)
更多关于DeepSeek的使用技巧,可以参考DeepSeek完整指南。DeepSeek的编程能力在国产模型中首屈一指,配合LangChain构建AI编程助手是非常好的选择。
九、实战项目:从零构建RAG知识库问答系统
为了让你更好地理解LangChain的实际应用,我来完整演示一个RAG知识库问答系统的搭建过程。这是最常见也最实用的AI应用场景之一。
项目目标
构建一个基于公司内部文档的智能问答助手,员工可以用自然语言提问,系统会从文档中检索相关内容并生成准确的回答。
第一步:准备数据和环境
pip install langchain langchain-openai langchain-community chromadb
mkdir my_rag_project
cd my_rag_project
mkdir docs # 把你的文档文件放在这里
支持的文档格式:TXT、PDF、Word、Markdown、HTML等。LangChain有对应的DocumentLoader处理每种格式。
第二步:文档加载与切分
文档切分是RAG系统中非常关键的一步。切分策略直接影响检索质量。我的经验是:chunk_size设为500-1000字符,chunk_overlap设为50-100字符。太小会丢失上下文,太大会引入噪音。
第三步:向量化与存储
选择合适的Embedding模型也很重要。OpenAI的text-embedding-3-small性价比最高,国内用户可以用通义千问的Embedding模型,延迟更低。向量数据库方面,小规模用Chroma就够了,大规模建议用Milvus或Pinecone。
第四步:构建检索问答链
把检索器和LLM组合起来,形成完整的问答链。关键是要设计好Prompt模板,告诉LLM基于检索到的文档内容回答问题,如果文档中没有相关信息就诚实说不知道。
这个完整项目大约50行代码就能实现,但效果已经可以满足大部分内部知识库的需求。如果你想部署为API服务,可以参考FastAPI与AI开发教程,学习如何将这个RAG系统变成可供前端调用的REST API。
十、总结
LangChain已经成为2026年AI应用开发的事实标准。它的核心价值在于标准化——把LLM应用开发中常见的需求(记忆管理、工具调用、链式编排)抽象为统一的组件,让开发者不再重复造轮子。
对新手来说,建议从最简单的Chain开始,逐步上手Agent和RAG,最后深入LangGraph掌握复杂工作流。记住:LangChain就像乐高积木,你不需要一次性掌握所有组件——用到哪学到哪,边做边学。
我的学习路径建议:
- 第1天:跑通示例1-3,理解Chain和Memory
- 第2-3天:学习Tool和Agent(示例4、7)
- 第1周:完成一个RAG项目(示例5)
- 第2周:学习LangSmith调试和LangServe部署
- 第3-4周:深入学习LangGraph和复杂工作流
现在,打开终端,输入pip install langchain,开始你的第一个AI应用吧!如果你还想了解更多AI开发相关的内容,可以看看FastAPI与AI开发教程,学习如何将LangChain应用部署为高性能API服务。
最后更新:2026年6月 | 基于LangChain 0.3.x版本
深度扩展阅读
本文涵盖的内容是AI领域持续发展的方向之一。如果想进一步了解相关知识,可以参考以下推荐阅读:
相关工具推荐
以下是本文提到或相关的AI工具,点击即可查看详细介绍:
-
密流智能科技:密流智能科技是一家专注于全同态加密(FHE)技术研发的科技企业,通过自研算法与硬件加速平台,为金融、政务、医疗等领域提供
-
Reportify:Reportify是一款由清华与哈佛团队开发的AI金融投研智能体,利用RAG技术提供财报解析、深度研究报告生成及全球市场
-
Scholar Search:一款AI驱动的学术搜索工具,可快速筛选海量文献并精确定位关键论文。
-
CSDN:CSDN是中国领先的IT技术社区与开发者服务平台,提供技术博客、问答、培训及资源下载等服务。
-
稀土掘金:稀土掘金是一个面向互联网技术人的内容分享平台,旨在通过分享和学习帮助开发者成长。
推荐阅读
- 从入门到构建AI应用:LangChain教程2026:从入门到构建AI应用
- 用LLM框架构建AI应用:2026年LangChain应用开发教程:用LLM框架构建AI应用
- FastAPI高级AI应用:2026年FastAPI高级AI应用开发:构建高性能AI后端服务
- 用AI写网页爬虫:用AI写网页爬虫:零基础数据采集入门教程