作为 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 及以上版本,两种安装方式任选:

  • 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 知识冻结和幻觉问题,核心流程:

  1. 文档加载(Document Loaders):支持 PDF、Word、网页等多种格式
  1. 文本分割(Text Splitters):将文档拆分为语义块
  1. 向量化(Embedding):将文本转换为向量
  1. 存储(Vector Store):存入向量数据库(如 FAISS)
  1. 检索(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 解决复杂领域问题

六、学习资源推荐

  • 向量数据库:FAISS、Milvus、Pinecone
  • 实战项目:医疗问答助手、电商智能客服、企业知识库

LangChain 降低了大模型应用开发的门槛,但要构建生产级应用,还需要深入理解各组件的底层逻辑和优化技巧。建议从简单的 RAG 项目入手,逐步掌握 Agent、LangGraph 等高级特性,最终实现复杂场景的落地。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐