LangChain 入门:从核心概念到实战上手
简单场景(聊天):用ChatOpenAI;文档问答场景:用「Loader+Splitter+VectorDB+RetrievalQA」;复杂场景(工具调用):用AgentTools。先跑通上面的 3 个案例,再根据具体需求(比如做公司知识库问答、AI 数据分析)拓展组件,很快就能上手实际开发。
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)。
五、进阶方向(入门后拓展)
- 对接本地模型:不用 OpenAI,改用 LLaMA 3 / 通义千问等本地模型(需下载模型文件);
- 工具调用:让 AI 调用外部工具(比如查天气 API、操作数据库、爬网页);
- 智能体(Agent):实现 AI 自主决策(比如「用户问 “今天适合跑步吗?”→ AI 查天气→ 查空气质量→ 给出建议」);
- 多模态:处理图片 / 音频(比如上传一张截图,让 AI 分析截图内容)。
六、新手避坑指南
- 不要贪多:先掌握「模型 + 链 + 检索」核心三件套,再学智能体等复杂功能;
- API 密钥安全:不要直接写在代码里,用
.env文件 +load_dotenv加载; - 文档拆分尺寸:chunk_size 不是越小越好(建议 500-1000 字符),太小会丢失上下文;
- verbose 调试:开发时打开
verbose=True,能看到链的执行流程,快速定位问题。
总结
LangChain 入门的核心是「理解组件 + 复用链」:
- 简单场景(聊天):用
ChatOpenAI+ConversationChain; - 文档问答场景:用「Loader+Splitter+VectorDB+RetrievalQA」;
- 复杂场景(工具调用):用
Agent+Tools。
先跑通上面的 3 个案例,再根据具体需求(比如做公司知识库问答、AI 数据分析)拓展组件,很快就能上手实际开发。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)