Sider.ai
  • 聊天
  • Wisebase
  • 工具
  • 浏览器插件
  • 客户端
  • 价格
立即下载
登录

通过Sider更快学习、更深入思考、更聪明成长。

产品
应用
  • 扩展程序
  • iOS
  • Android
  • Mac OS
  • Windows
Wisebase
  • Wisebase
  • Deep Research
  • Scholar Research
  • Math Solver
  • Rec NoteNew
  • Audio To Text
  • Gamified Learning
  • Interactive Reading
  • ChatPDF
工具
  • 网站生成器New
  • AI PPTNew
  • 写作大师
  • Nano Banana Pro
  • Nano Banana Infographic
  • 图片生成
  • 意大利脑洞
  • 背景移除
  • 背景替换
  • 区域抹除
  • 文字移除
  • 局部重绘
  • 画质提升
  • 创作者
  • 文本翻译
  • 图片翻译
  • PDF翻译
Sider
  • 联系我们
  • 帮助中心
  • 下载
  • 价格
  • 教育优惠
  • 新功能
  • 博客
  • 社区
  • 合作伙伴
  • 联盟
  • 邀请
©2026 版权所有
使用条款
隐私政策
  • 首页
  • 博客
  • AI 工具
  • LangChain 使用指南:实用的端到端教程(2025 年)

LangChain 使用指南:实用的端到端教程(2025 年)

更新于 2025年9月25日

8 分钟


如何使用LangChain:一份实用、端到端的指南 (2025)

如果你曾经尝试将LLM与你的数据连接、添加工具并保持对话连贯,却最终陷入了大量的样板代码中,那么LangChain就是你的救星。在2025年,它已经成熟为一个开发者友好的工具包,拥有清晰、可组合的核心、声明式的链式语法,以及为RAG(检索增强生成)、代理和结构化输出提供的各种内置功能。本指南将通过实践示例和实用的路线图,带领你从零开始,构建可用于生产环境的应用。
我们将采取实用且面向解决方案的方法:最少的理论,最多的工作代码,并解释权衡。

什么是LangChain(以及它为何仍然重要)

LangChain的核心是一个用于构建需要多个步骤的LLM驱动应用的框架:
  • 提示词工程和解析
  • 检索增强生成 (RAG)
  • 工具和函数调用
  • 记忆和有状态的聊天
  • 代理和多步骤决策
现代LangChain通过`Runnable`接口和LCEL(LangChain表达式语言)强调可组合性,让你能够清晰地链接转换,同时免费获得流式传输、重试和跟踪功能。有关功能的广泛概述,请参阅官方教程;有关`Runnable`和LCEL行为,请参阅文档。`Runnable`也内置了流式传输支持。对于面向生产的端到端演练,^1Sider的指南是一份有用的辅助读物。

快速开始:你的第一个LangChain应用

以下是一个最小的Python示例,演示了如何:
  • 初始化一个聊天模型
  • 使用LCEL创建一个简单的链
  • 以块的形式流式传输输出
# pip install langchain langchain-openai
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
# 1) 模型
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
# 2) 提示词
prompt = ChatPromptTemplate.from_messages(和流式传输指南。
---
## 你80%的时间会用到的构建块
### 1) 提示词和输出解析
- 使用`ChatPromptTemplate`来构建结构化提示词。
- 使用`StrOutputParser`或JSON解析器来解析输出,以获得类型化的响应。
```python
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(model="gpt-4o-mini")
prompt = ChatPromptTemplate.from_template(
"""
用3个要点总结以下文本:
---
{text}
"""
)
parser = StrOutputParser
chain = prompt | llm | parser
summary = chain.invoke({"text": "LangChain helps build LLM apps with RAG and tools."})
print(summary)

2) 检索增强生成 (RAG)

RAG将你的模型与你的数据配对。你嵌入文档,存储向量,然后在查询时检索上下文。
# pip install faiss-cpu tiktoken
from langchain_openai import OpenAIEmbeddings, ChatOpenAI
from langchain_community.vectorstores import FAISS
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_core.prompts import ChatPromptTemplate
# 准备文档
texts = .
---
## 从原型到生产:一步一步的蓝图
### 步骤1:定义用户故事
- 用户是谁?他们试图完成什么工作?
- 示例:“一个支持代理,回答来自内部文档和最近工单的产品问题。”
### 步骤2:选择最小可行技术栈
- 模型:选择一个价格合理、可靠的模型(例如,GPT-4o-mini或一个前沿的开源模型)。
- 数据:确定你现在是否需要RAG。如果需要,从本地的FAISS开始。
- I/O:使用LCEL进行快速迭代;避免自定义粘合代码。
### 步骤3:实现一个干净的RAG循环
- 正确分割文档。
- 索引嵌入。
- 使用上下文和引用进行提示。
- 添加一个护栏,以避免在找不到相关上下文时产生幻觉。
```python
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
qa_prompt = ChatPromptTemplate.from_template(
"""
仅使用以下上下文回答问题。如果答案不在
上下文中,请说“我不知道”。包括引用的文档ID。
上下文:
{context}
问题:{question}
"""
)
parser = StrOutputParser
rag_chain = (RunnableParallel(context=retriever, question=RunnableLambda(lambda x: x.
### 步骤5:类型化输出和验证
- 使用`PydanticOutputParser`或JSON模式来强制执行API响应的结构。
- 验证字段以捕获模型漂移。
### 步骤6:用于实际任务的工具和函数调用
- 谨慎引入工具。
- 常用工具:计算器、网络搜索、SQL查询执行器、代码运行器。
- 在文档字符串中清楚地描述工具的功能。
### 步骤7:强化
- 速率限制和重试策略。
- 超时和熔断器。
- 安全过滤器和内容检查。
### 步骤8:评估与持续改进
- 使用黄金数据集进行测试(输入→预期输出)。
- 评估忠实度、答案完整性和引用准确性。
- 测量检索命中率和延迟。
---
## 常见模式和注意事项
- 从简单开始:先链,后代理。你将获得可预测性和更低的成本。
- 分块很重要:调整块大小/重叠可以比模型交换更能改变检索质量。
- 提示词泄露:不要将所有东西都塞进系统提示词中;保持它们的重点。
- 确定性:为评估和关键工作流程设置`temperature=0`。
- 流式传输用户体验:在系统的其余部分获取资产或预加载上下文时,将令牌流式传输到UI。
- 结构化输出:使用解析器使下游集成变得轻松。
---
## 一个完整的迷你项目:带引用的文档问答
此示例将所有内容联系在一起:摄取、RAG、答案生成和流式传输。
```python
# pip install langchain langchain-openai faiss-cpu tiktoken
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import FAISS
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnableParallel, RunnableLambda
# 1) 摄取
corpus = {
"pricing": "我们的Pro计划支持100万个上下文令牌,并包括优先支持。",
"limits": "Pro用户的API速率限制为每分钟60个请求。",
"security": "除非管理员禁用日志记录,否则我们会将日志存储30天。",
}
splitter = RecursiveCharacterTextSplitter(chunk_size=300, chunk_overlap=50)
all_chunks, ids = [], []
for doc_id, text in corpus.items:
for i, chunk in enumerate(splitter.split_text(text)):
all_chunks.append(chunk)
ids.append(f"{doc_id}-{i}")
# 2) 索引
db = FAISS.from_texts(all_chunks, OpenAIEmbeddings)
retriever = db.as_retriever(k=4)
# 3) 提示词
prompt = ChatPromptTemplate.from_template(
"""
你是一个支持助手。使用上下文来回答问题。
如果不确定,请说“我不知道”。包括源ID的引用。
上下文:
{context}
问题:{question}
"""
)
# 4) 模型和解析器
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0)
parser = StrOutputParser
# 5) 组合链
rag = (
RunnableParallel(
context=retriever,
question=RunnableLambda(lambda x: x["question"]) # 直通
)
| prompt
| llm
| parser
)
# 6) 提问
for chunk in rag.stream({"question": "Pro费率限制和日志保留策略是什么?"}):
print(chunk, end="", flush=True)

何时使用代理与普通链

  • 当你的任务是确定性的时,使用链:RAG回答、结构化提取、分类、摘要。
  • 当任务需要探索、工具选择或多步骤规划时,使用代理:研究助手、数据整理器或工作流程协调器。
  • 如果代理的行为变得不可预测,请约束工具集并添加中间验证器。
有关AI代理框架的战略概述以及与LangChain的权衡,此比较分析很有用^3。

接下来要探索的高级主题

  • LangGraph用于有状态的多参与者工作流程和护栏。
  • 混合检索(密集 + 稀疏)以获得更好的召回率。
  • 重新排序模型以提高上下文质量。
  • 使用结构化JSON模式和验证器的函数调用。
  • 通过`Runnable`上的batch进行批量处理以提高吞吐量。
要深入了解,官方教程目录涵盖了聊天、RAG、代理等,其中包含当前的模式和示例。最新版本的API参考在此处。 侧重于聊天和部署的循序渐进的生产指南^1也可用,并且带有优缺点的框架回顾将帮助你为你的用例正确选择^2。

顺便说一句:使用Sider.AI加速原型设计

值得注意的是:如果你正在原型设计或记录你的LangChain应用,一个可以创建、测试和解释代码片段的助手可以节省数小时。 顺便说一句,Sider.AI可以与你的IDE和浏览器并排工作,以生成代码草案、比较方法,并在上下文中回答“为什么这不起作用?”。 在Sider.ai上查看它^1。

主要收获

  • 从LCEL管道开始;仅在必要时添加代理。
  • 在模型升级之前,投资于分块、检索质量和结构化输出。
  • 流式传输结果以改善用户体验,并跟踪所有内容以提高可靠性。
  • 在扩展流量之前,验证输出并添加安全措施。

后续步骤

  • 为你的用例构建最小的链(摘要、RAG或提取)。
  • 添加流式传输和日志记录。
  • 使用小型黄金数据集进行验证。
  • 只有这样,才考虑用于复杂任务的工具/代理。
对于实践学习,请完成官方教程并随时掌握`Runnable`文档。 有关以生产为导向的演练,请参阅本指南^1。

常见问题

问1:开始使用LangChain的最简单方法是什么? 使用LCEL组合一个prompt | llm链,并使用.invoke或.stream进行测试。 官方教程逐步介绍了简单的聊天、RAG和代理,以便快速入门。
问2:我应该使用LangChain代理还是普通链? 对于可预测的任务(如RAG、摘要和提取),首选普通链。 当问题需要工具选择和多步骤规划时,使用代理; 有关差异,请参阅API文档。
问3:如何在LangChain中实现RAG? 分块文档,嵌入它们,并使用检索器在调用模型之前将上下文注入到提示词中。 从本地的FAISS开始,并查阅RAG模式的教程。
问4:如何使用LangChain流式传输响应? 所有Runnable链都支持.stream进行同步,.astream进行异步,以便在块到达时产生块。 流式传输指南涵盖了用法和最佳实践。
问5:在哪里可以找到以生产为中心的LangChain聊天应用指南? 查看此实践演练,其中包含关键模式、权衡和代码示例,从零开始进行部署^1。

最近文章
如何掌握 ChatPDF:快速洞察密集文档

如何掌握 ChatPDF:快速洞察密集文档

快速、精准文档的最佳X自动翻译替代方案

快速、精准文档的最佳X自动翻译替代方案

三星AI翻译在伊朗无法使用?实用解决方法

三星AI翻译在伊朗无法使用?实用解决方法

波斯语翻译工具:实现更快更准确工作的实用指南

波斯语翻译工具:实现更快更准确工作的实用指南

深度、有引用研究的最佳Grok替代方案

深度、有引用研究的最佳Grok替代方案

你真正会用的AI图像生成器15大功能

你真正会用的AI图像生成器15大功能