LangChain使用概述
摘要:LangChain是2022年兴起的开源大模型应用开发框架,GitHub星标112k,月下载量超5900万次。本文从框架认知、环境搭建到实战开发,系统介绍LangChain的核心功能。其模块化设计包含六大组件:Model I/O、Chains、Memory、Agents、Retrieval和Callbacks,支持从简单问答到复杂智能体的开发需求。通过民法典知识库问答系统案例,演示了RAG技
作为 2022 年兴起的开源框架,LangChain 已成为大模型应用开发的核心工具之一,其 GitHub 星标量达 112k,月下载量超 5900 万次。本文结合尚硅谷 LangChain 教程核心内容,从框架认知、环境搭建到实战开发,带大家快速掌握 LangChain 的使用精髓。
一、LangChain 核心认知:不止是 "LLM 连接器"
1. 什么是 LangChain
LangChain 是由哈佛大学 Harrison Chase 发起的开源框架,专注于构建大语言模型(LLMs)驱动的应用程序。它就像 Spring 之于 Java、Django 之于 Python,为 LLM 应用开发提供了标准化的组件和流程,让开发者无需关注底层实现,专注于业务逻辑。
核心定位:连接 LLM 与外部数据、工具和组件,实现智能体(Agent)、问答系统、知识库等复杂应用的快速开发。
2. 为什么选择 LangChain
- 降低开发成本:统一不同 LLM 的调用接口,切换模型(如 ChatGPT、豆包、DeepSeek)无需修改核心代码
- 提供完整工具链:覆盖 Prompt 构建、记忆管理、工具调用、RAG 等全流程模块
- 支持复杂场景:原生支持链式调用、多智能体协作、检索增强生成等高级功能
- 生态成熟:兼容向量数据库、第三方 API、各类文件格式,社区资源丰富
3. 主流开发框架对比
|
开发语言 |
开发框架 |
stars 数量 |
核心优势 |
|
Python |
LangChain |
112k |
功能最全、生态成熟,适合复杂任务 |
|
Java |
LangChain4J |
8.5k |
核心功能完备,适配 Java 技术栈 |
|
C# |
SemanticKernel |
- |
微软推出,专为 C# 开发者优化 |
|
Python |
LlamaIndex |
- |
专注检索场景,RAG 性能突出 |
二、开发环境搭建:3 步快速上手
1. 前置知识要求
- Python 基础:掌握变量、函数、类、模块导入等核心语法
- LLM 基础:了解 Token、Prompt、Embedding 等基本概念
- 工具基础:熟悉 pip/conda 包管理,具备 PyCharm 等 IDE 使用经验
2. 环境配置步骤
(1)安装 Python 环境
推荐 Python 3.10 及以上版本,两种安装方式任选:
- 直接下载:Python 官网
- conda 安装:通过 Anaconda 创建独立虚拟环境(推荐,避免依赖冲突)
(2)安装核心依赖
# 基础安装(默认最新版)
pip install langchain
# 指定版本安装(推荐0.3.7稳定版)
pip install langchain==0.3.7
# 国内镜像加速(解决下载慢)
pip install -i https://mirrors.aliyun.com/pypi/simple/ langchain
# 安装配套依赖
pip install langchain-openai langchain-community faiss-cpu python-dotenv
(3)配置 API 密钥
创建.env文件存储密钥信息(避免硬编码):
OPENAI_API_KEY1="你的API密钥"
OPENAI_BASE_URL="https://api.openai-proxy.org/v1"
3. 验证环境
import dotenv
from langchain_openai import ChatOpenAI
import os
dotenv.load_dotenv()
os.environ['OPENAI_API_KEY'] = os.getenv("OPENAI_API_KEY1")
os.environ['OPENAI_BASE_URL'] = os.getenv("OPENAI_BASE_URL")
# 初始化模型
llm = ChatOpenAI(model="gpt-4o-mini")
# 测试调用
response = llm.invoke("LangChain的核心作用是什么?")
print(response.content)
三、核心组件详解:LangChain 的 "乐高积木"
LangChain 的核心优势在于模块化设计,六大组件覆盖 LLM 应用开发全流程:
1. Model I/O:模型输入输出管理
最基础也最常用的组件,负责标准化 LLM 的输入、调用和输出格式化:
- Prompt Template:提示词模板,支持变量注入
- Models:统一调用接口,兼容各类 LLM
- Output Parser:格式化输出结果(如 JSON、字符串)
示例:使用提示词模板和输出解析器
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import JsonOutputParser
# 创建提示词模板
prompt = ChatPromptTemplate.from_messages([
("system", "你是技术文档专家,输出格式要求:{format_instructions}"),
("user", "{input}")
])
# 初始化输出解析器
output_parser = JsonOutputParser()
# 构建链并调用
chain = prompt | llm | output_parser
result = chain.invoke({
"input": "什么是RAG?",
"format_instructions": output_parser.get_format_instructions()
})
print(result)
2. Chains:任务流程串联
将多个组件按逻辑串联成流程,核心类型包括:
- LLMChain:基础模型调用链
- SequentialChain:多链顺序执行
- RouterChain:根据需求自动选择合适的链
- RetrievalQA:结合检索的问答链
3. Memory:对话记忆管理
保存对话上下文,支持多轮交互,常用类型:
- ConversationBufferMemory:保存完整对话历史
- ConversationSummaryMemory:保存对话摘要(适合长对话)
- VectorStoreRetrieverMemory:基于向量数据库的记忆存储
4. Agents:智能体核心组件
LangChain 的高阶能力,实现自主决策和工具调用,核心组成:
- LLM:作为 "大脑" 提供推理能力
- Tools:外部工具(如检索器、API、数据库)
- Memory:上下文记忆
- Planning:任务规划和子目标分解
5. Retrieval:检索增强生成(RAG)
解决 LLM 知识冻结和幻觉问题,核心流程:
- 文档加载(Document Loaders):支持 PDF、Word、网页等多种格式
- 文本分割(Text Splitters):将文档拆分为语义块
- 向量化(Embedding):将文本转换为向量
- 存储(Vector Store):存入向量数据库(如 FAISS)
- 检索(Retriever):根据查询匹配相关文本
6. Callbacks:回调机制
用于监控和分析 LangChain 运行过程,支持日志记录、性能监控、流式传输等。
四、实战案例:构建 RAG 知识库问答系统
以民法典知识库为例,实现 "建设用地使用权" 相关问答:
1. 数据准备与加载
from langchain_community.document_loaders import WebBaseLoader
import bs4
# 加载网页文档(民法典相关页面)
loader = WebBaseLoader(
web_path="https://www.gov.cn/xinwen/2020-06/01/content_5516649.htm",
bs_kwargs=dict(parse_only=bs4.SoupStrainer(id="UCAP-CONTENT"))
)
docs = loader.load()
2. 文档处理与向量化
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
# 文本分割
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
documents = text_splitter.split_documents(docs)
# 向量化并存储到FAISS
embeddings = OpenAIEmbeddings(model="text-embedding-ada-002")
vector_db = FAISS.from_documents(documents, embeddings)
3. 构建检索问答链
from langchain_core.prompts import PromptTemplate
from langchain.chains import RetrievalQA
# 定义提示词模板
prompt_template = """
你是一个法律问答机器人,仅根据以下已知信息回答用户问题。
已知信息:{context}
用户问题:{question}
如果已知信息不足以回答,直接回复"我无法回答您的问题"。
"""
prompt = PromptTemplate(
template=prompt_template,
input_variables=["context", "question"]
)
# 构建检索器
retriever = vector_db.as_retriever(search_kwargs={"k": 3})
# 构建问答链
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff",
retriever=retriever,
chain_type_kwargs={"prompt": prompt}
)
# 测试问答
result = qa_chain.invoke({"query": "建设用地使用权的设立方式有哪些?"})
print(result["result"])
4. 进阶:添加 Agent 智能调用
from langchain.tools.retriever import create_retriever_tool
from langchain.agents import create_openai_functions_agent, AgentExecutor
from langchain import hub
# 创建检索工具
retriever_tool = create_retriever_tool(
retriever,
"CivilCodeRetriever",
"查询民法典相关信息,必须使用此工具回答法律问题!"
)
tools = [retriever_tool]
# 加载Agent提示词模板
prompt = hub.pull("hwchase17/openai-functions-agent")
# 创建Agent并执行
agent = create_openai_functions_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 运行Agent
agent_executor.invoke({"input": "建设用地使用权到期后怎么办?"})
五、常见应用场景与进阶方向
1. 典型应用场景
|
项目类型 |
技术要点 |
难度 |
|
文档问答助手 |
Prompt + Embedding + RetrievalQA |
⭐⭐ |
|
智能日程规划 |
Agent + Tool + Memory |
⭐⭐⭐ |
|
LLM + 数据库问答 |
SQLDatabaseToolkit + Agent |
⭐⭐⭐⭐ |
|
企业知识库 |
VectorDB + LLM + Streamlit |
⭐⭐⭐⭐⭐ |
2. 进阶学习方向
- LangGraph:构建复杂工作流和多智能体协作系统
- LangSmith:调试、监控和测试 LLM 应用
- LangServe:将 LangChain 应用部署为 REST API
- 微调(Fine-tuning):结合 RAG 解决复杂领域问题
六、学习资源推荐
- GitHub 仓库:langchain-ai/langchain
- 向量数据库:FAISS、Milvus、Pinecone
- 实战项目:医疗问答助手、电商智能客服、企业知识库
LangChain 降低了大模型应用开发的门槛,但要构建生产级应用,还需要深入理解各组件的底层逻辑和优化技巧。建议从简单的 RAG 项目入手,逐步掌握 Agent、LangGraph 等高级特性,最终实现复杂场景的落地。
更多推荐



所有评论(0)