难度:⭐☆☆☆☆ | 重要度:★★★★★ | 预计时长:30 分钟


一、LangChain 到底是什么?(核心定位)

LangChain 是一个大模型应用开发框架,专门解决 “如何基于大模型快速搭建业务应用” 的问题。

  • 核心价值:封装了大模型开发的通用能力,让你不用重复造轮子,专注业务逻辑
  • 适用场景:RAG 检索增强、智能对话机器人、Agent 代理、工具调用等
  • 优势:跨模型兼容、组件化设计、生态丰富、社区活跃

二、LangChain 核心架构(4 大模块)

LangChain 的架构遵循模块化、可组合的设计,所有应用都由这 4 个核心模块搭建而成:

1. Models(模型层)

负责对接不同的大模型服务,提供统一的调用接口,是整个框架的 “大脑”。

  • 分类:
    • LLM:文本补全模型(如 GPT-3.5-turbo-instruct、text-davinci-003)
    • ChatModels:对话模型(如 GPT-3.5/4、通义千问、文心一言)
    • Embeddings:嵌入模型(用于文本向量化,是 RAG 的核心)
  • 特点:同一套代码,无缝切换不同模型,业务代码不用改

2. Prompts(提示词层)

负责管理、构建和优化提示词,解决 “提示词硬编码、多场景复用” 的问题。

  • 核心组件:
    • PromptTemplate:通用提示词模板,支持变量占位符({变量名}
    • ChatPromptTemplate:对话专用模板,支持系统消息、用户消息、AI 消息的拼接
    • FewShotPromptTemplate:少样本提示词模板,可快速构建示例驱动的提示词
  • 价值:提示词与业务代码解耦,支持动态拼接、版本管理

3. Chains(链层)

负责将多个组件串联成完整的业务流程,实现 “模型 + 提示词 + 工具” 的流水线执行。

  • 核心逻辑:把 “模型调用、提示词生成、工具调用、数据处理” 等步骤,按顺序串成一条链,一步执行
  • 常用链:
    • LLMChain:最基础的链,模型 + 提示词模板的组合
    • SequentialChain:顺序链,多个链按顺序执行,前一个链的输出作为后一个链的输入
    • RetrievalQAChain:RAG 专用链,实现 “检索 + 问答” 的完整流程

4. Agents(代理层)

负责让大模型具备 “自主决策、工具调用、任务拆解” 的能力,是 LangChain 最强大的模块之一。

  • 核心组件:
    • Agent:决策主体,根据用户输入判断下一步该做什么
    • Tools:工具集合,给大模型调用的能力(如搜索引擎、计算器、数据库查询)
    • Toolkits:工具包,封装了特定场景的工具集合(如数据库工具包、GitHub 工具包)
    • Executor:代理执行器,负责执行 Agent 的决策,循环直到任务完成
  • 价值:让大模型从 “只会生成文本” 升级为 “能解决复杂多步骤任务” 的智能体

三、LangChain 常用组件一览(面试高频)

表格

组件 核心作用 典型应用场景
Document 文档对象,封装文本内容和元数据 文档加载、文本分割
DocumentLoader 文档加载器,从不同来源加载文档 加载 PDF、Word、网页、数据库数据
TextSplitter 文本分割器,将长文本拆分成小块 解决大模型上下文窗口限制
VectorStore 向量数据库接口,提供统一的存储 / 检索方法 RAG 知识库构建
Retriever 检索器,从向量库中召回相关文档 RAG 问答的召回环节
Callbacks 回调函数,监听链 / 代理的执行过程 日志记录、监控、调试
Memory 记忆模块,存储对话历史 多轮对话机器人

四、基础代码示例(可直接运行)

python

运行

# 1. 安装依赖
# pip install langchain langchain-openai python-dotenv

from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
from dotenv import load_dotenv
import os

# 2. 加载环境变量(你的OpenAI Key)
load_dotenv()
llm = ChatOpenAI(model="gpt-3.5-turbo", api_key=os.getenv("OPENAI_API_KEY"))

# 3. 构建提示词模板
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个专业的前端开发专家,擅长用通俗的语言解释技术问题。"),
    ("user", "请解释一下:{question}")
])

# 4. 构建链(模板 → 模型 → 输出解析器)
chain = prompt | llm | StrOutputParser()

# 5. 执行链
response = chain.invoke({"question": "什么是Vue3的组合式API?"})
print(response)

📝 随堂小测(5 题,检验学习效果)

  1. (单选题)以下哪个不是 LangChain 的核心模块?( )A. Models B. Prompts C. Chains D. Database E. Agents

  2. (判断题)LangChain 只能对接 OpenAI 的大模型,不能使用国内模型(如通义千问)。( )

  3. (填空题)LangChain 中用于文本向量化、构建 RAG 知识库的模型类型是 ______。

  4. (简答题)简述 Chain 在 LangChain 中的核心作用。

  5. (代码题)请补全下面的代码,实现一个基础的 LLMChain,接收用户输入的主题,生成一段 50 字以内的简介。

    python

    运行

    from langchain_core.prompts import PromptTemplate
    from langchain_openai import ChatOpenAI
    from langchain.chains import LLMChain
    
    llm = ChatOpenAI(model="gpt-3.5-turbo")
    prompt = PromptTemplate(
        input_variables=["topic"],
        template="请用50字以内介绍一下:{topic}"
    )
    # 补全代码,构建并执行 LLMChain
    
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐