LangChain 是构建大模型应用的「万能积木框架」—— 它把大模型、数据、工具(数据库 / API / 爬虫)等能力拆成可复用的组件,让你不用从零写代码,就能快速搭出复杂的 AI 应用(比如智能问答机器人、AI 数据分析助手、自主执行任务的智能体)。

下面用「通俗讲解 + 实战代码」的方式,带你从零入门 LangChain,核心目标:1 小时内跑通第一个 LangChain 应用,理解核心逻辑

一、先搞懂 LangChain 的核心定位

1. 它解决了什么问题?

纯大模型(比如 GPT-3.5)有两个痛点:

  • 「失忆」:无法直接访问你的本地文档、数据库、实时数据(比如查今天的天气、公司内网数据);
  • 「无能」:只能聊天,不能主动调用工具(比如查数据库、发邮件、爬网页)。

LangChain 的核心价值:把大模型和「外部数据 / 工具」串联起来,让 AI 能「读你的数据」+「做具体事」

2. 核心设计思路:「组件化」

LangChain 把 AI 应用的全流程拆成一个个独立组件,你像拼乐高一样组合即可:

核心组件 作用(通俗版)
模型(Models) 对接各种大模型(OpenAI/LLaMA/ 文心一言),是 AI 的「大脑」
数据连接(Document Loaders) 读取你的本地数据(PDF/Excel/Word)、网络数据(网页 / API)
文本处理(Text Splitters) 把长文档拆成小片段(适配大模型的上下文窗口)
检索(Retrievers) 从你的数据里找和问题相关的内容(RAG 核心)
提示词(Prompts) 给大模型发指令 + 传数据,控制回答的逻辑
记忆(Memory) 保存多轮对话历史(让 AI 记得你之前问了什么)
工具(Tools) 让 AI 调用外部工具(查数据库 / 发邮件 / 算数学题)
链(Chains) 把多个组件串起来(比如「加载文档→检索→大模型回答」)
智能体(Agents) 让 AI 自主决策(比如「用户问天气→AI 调用天气 API→返回结果」)

二、环境准备(5 分钟搞定)

1. 安装依赖

# 核心依赖(基础组件)
pip install langchain

# 对接 OpenAI 大模型(新手首选,易上手)
pip install openai

# 文档加载依赖(支持 PDF/Excel 等)
pip install pypdf python-dotenv

# 可选:本地模型依赖(比如 LLaMA 3)
# pip install langchain-community llama-cpp-python

2. 配置 API 密钥(以 OpenAI 为例)

新建 .env 文件,写入你的 OpenAI API 密钥(没有的话去 OpenAI 官网申请):

OPENAI_API_KEY=你的api密钥
# 国内用户可配置代理地址(可选)
# OPENAI_BASE_URL=https://api.openai-proxy.com/v1

三、入门实战:3 个核心案例(从简单到复杂)

案例 1:基础对话(调用大模型)

最基础的用法:用 LangChain 对接 OpenAI,实现聊天功能(比直接调用 OpenAI API 更简洁)。

import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain.schema import HumanMessage, SystemMessage

# 加载环境变量
load_dotenv()

# 1. 初始化大模型(对接 OpenAI 的 GPT-3.5)
llm = ChatOpenAI(
    model="gpt-3.5-turbo",
    temperature=0.1,  # 回答随机性(0=最严谨,1=最有创意)
    api_key=os.getenv("OPENAI_API_KEY")
)

# 2. 构造对话消息(System 是系统指令,Human 是用户问题)
messages = [
    SystemMessage(content="你是一个友好的助手,回答简洁明了,用中文回复。"),
    HumanMessage(content="什么是 LangChain?")
]

# 3. 调用大模型并输出结果
response = llm.invoke(messages)
print("AI 回答:", response.content)

运行结果示例

AI 回答:LangChain 是一个构建大模型应用的框架,核心是将大模型与外部数据、工具串联,通过组件化的方式快速搭建复杂的 AI 应用(如智能问答、AI 智能体等),简化大模型应用的开发流程。

案例 2:多轮对话(带记忆功能)

让 AI 记住之前的对话内容(比如先问「我叫小明」,再问「我叫什么」,AI 能回答)。

from langchain_openai import ChatOpenAI
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain

# 1. 初始化大模型
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.1)

# 2. 初始化记忆(保存对话历史)
memory = ConversationBufferMemory()

# 3. 构建对话链(把大模型和记忆串联)
conversation = ConversationChain(
    llm=llm,
    memory=memory,
    verbose=True  # 打印对话流程(方便调试)
)

# 4. 多轮对话
conversation.invoke(input="我叫小明,是一名测试工程师")
response = conversation.invoke(input="我叫什么名字?我的职业是什么?")

# 输出结果
print("\n最终回答:", response["response"])

运行结果示例

# 控制台会打印对话流程(verbose=True)
> Entering new ConversationChain chain...
> Finished chain.

最终回答: 你叫小明,职业是测试工程师哦。

案例 3:RAG 文档问答(核心场景)

让 AI 读取你的本地 PDF 文档,回答关于文档的问题(LangChain 最常用的场景之一)。

步骤 1:准备文档

新建 data 文件夹,放入一个 PDF 文档(比如《测试工程师手册.pdf》)。

步骤 2:核心代码
from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.document_loaders import PyPDFLoader
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.vectorstores import FAISS
from langchain.chains import RetrievalQA

# 1. 加载并分割 PDF 文档
loader = PyPDFLoader("./data/测试工程师手册.pdf")  # 替换为你的 PDF 路径
documents = loader.load()

# 拆分文档(大模型上下文有限,拆成小片段)
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=500,  # 每个片段 500 个字符
    chunk_overlap=50  # 片段重叠 50 字符(避免上下文断裂)
)
split_docs = text_splitter.split_documents(documents)

# 2. 构建向量库(把文档片段转成向量,方便检索)
embeddings = OpenAIEmbeddings()  # OpenAI 嵌入模型(把文本转向量)
vector_db = FAISS.from_documents(split_docs, embeddings)

# 3. 构建检索链(检索相关文档 + 大模型回答)
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0.1)
qa_chain = RetrievalQA.from_chain_type(
    llm=llm,
    chain_type="stuff",  # 把检索到的文档全部传给大模型
    retriever=vector_db.as_retriever(search_kwargs={"k": 3}),  # 检索最相关的 3 个片段
    return_source_documents=True  # 返回参考的文档片段
)

# 4. 提问并获取答案
query = "测试用例的设计原则有哪些?"
result = qa_chain.invoke({"query": query})

# 输出结果
print("回答:", result["result"])
print("\n参考文档片段:")
for doc in result["source_documents"]:
    print("-", doc.page_content[:100], "...")  # 只打印前 100 字符

运行结果示例

回答: 测试用例的设计原则主要包括:1. 有效性:确保用例能覆盖核心功能,验证功能是否符合需求;2. 可重复性:用例可重复执行,结果可复现;3. 独立性:每个用例独立,不依赖其他用例的执行结果;4. 覆盖性:兼顾正常场景和异常场景;5. 简洁性:步骤清晰,无冗余操作。

参考文档片段:
- 测试用例设计原则
1. 有效性:测试用例必须能够验证功能是否符合需求,无效的用例无任何意义。
2. 可重复性:相同的测试用例在相同环境下... ...

四、核心概念巩固(新手必懂)

1. Chain(链)

把多个组件串联起来的「管道」,比如案例 3 中的 RetrievalQA 链:加载文档 → 拆分 → 转向量 → 检索相关片段 → 传给大模型 → 生成回答LangChain 内置了大量现成的链(比如 ConversationChain 对话链、RetrievalQA 检索问答链),不用自己从头拼。

2. Memory(记忆)

本质是「保存对话历史的容器」,常用的有:

  • ConversationBufferMemory:简单保存所有对话(适合短对话);
  • ConversationSummaryMemory:总结长对话(避免历史过长);
  • ConversationTokenBufferMemory:按 token 数限制保存(适配大模型上下文)。

3. Retriever(检索器)

从向量库中找和问题相关的文档片段,核心参数 k:检索前 k 个最相关的片段(k=3 即找 Top3)。

五、进阶方向(入门后拓展)

  1. 对接本地模型:不用 OpenAI,改用 LLaMA 3 / 通义千问等本地模型(需下载模型文件);
  2. 工具调用:让 AI 调用外部工具(比如查天气 API、操作数据库、爬网页);
  3. 智能体(Agent):实现 AI 自主决策(比如「用户问 “今天适合跑步吗?”→ AI 查天气→ 查空气质量→ 给出建议」);
  4. 多模态:处理图片 / 音频(比如上传一张截图,让 AI 分析截图内容)。

六、新手避坑指南

  1. 不要贪多:先掌握「模型 + 链 + 检索」核心三件套,再学智能体等复杂功能;
  2. API 密钥安全:不要直接写在代码里,用 .env 文件 +load_dotenv 加载;
  3. 文档拆分尺寸:chunk_size 不是越小越好(建议 500-1000 字符),太小会丢失上下文;
  4. verbose 调试:开发时打开 verbose=True,能看到链的执行流程,快速定位问题。

总结

LangChain 入门的核心是「理解组件 + 复用链」:

  • 简单场景(聊天):用 ChatOpenAI + ConversationChain
  • 文档问答场景:用「Loader+Splitter+VectorDB+RetrievalQA」;
  • 复杂场景(工具调用):用 Agent + Tools

先跑通上面的 3 个案例,再根据具体需求(比如做公司知识库问答、AI 数据分析)拓展组件,很快就能上手实际开发。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐