LangChain 入门实战教程:从零构建 AI 智能体应用
LangChain 是 2026 年构建 AI 应用最热门的 Python 框架之一。它让开发者能够像搭积木一样,将大语言模型、工具调用、记忆系统和检索增强等组件串联起来,构建出强大的 AI 智能体。本教程将从零开始,带你掌握 LangChain 的核心概念和实战技能。
一、LangChain 是什么?
LangChain 是一个开源框架,专门用于开发由大语言模型(LLM)驱动的应用程序。它的核心理念是“链式组合”——将 LLM 调用与外部数据源、API、工具等组件串联起来,实现远超简单问答的复杂任务。
为什么选择 LangChain?
1. 模块化设计
LangChain 提供了标准化的接口,可以轻松切换不同的 LLM(如 OpenAI、Claude、Gemini)、向量数据库(如 Chroma、Pinecone)和嵌入模型,无需重写代码。
2. 开箱即用的组件
框架内置了提示词模板、记忆系统、文档加载器、文本分割器等常用组件,大幅降低开发门槛。
3. 智能体支持
不同于传统的问答机器人,LangChain 的 Agent 能够根据目标自主决策,调用工具、执行操作、观察结果,循环迭代直到任务完成。
4. 生态完善
LangGraph 提供复杂状态管理,LangSmith 提供调试和监控平台,LangServe 支持一键部署为 API。
二、核心概念详解
1. LLM(大语言模型)
LLM 是 LangChain 应用的“大脑”,负责理解和生成文本。LangChain 通过统一的接口支持多种模型:
from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic
from langchain_google_genai import ChatGoogleGenerativeAI
# 使用 OpenAI GPT-4
llm_openai = ChatOpenAI(model="gpt-4o", temperature=0)
# 使用 Claude
llm_claude = ChatAnthropic(model="claude-3-5-sonnet-20241022")
# 使用 Gemini
llm_gemini = ChatGoogleGenerativeAI(model="gemini-2.0-flash")
# 统一的调用方式
response = llm_openai.invoke("解释什么是向量数据库")
print(response.content)
2. Prompt Templates(提示词模板)
提示词模板让你能够动态构建输入,支持变量插值和复杂的多轮对话:
from langchain.prompts import PromptTemplate, ChatPromptTemplate
# 简单模板
simple_template = PromptTemplate.from_template(
"将以下文本翻译成{language}:\n{text}"
)
# 聊天模板(支持角色)
chat_template = ChatPromptTemplate.from_messages([
("system", "你是一个专业的{role},擅长{skill}。"),
("user", "{question}")
])
# 渲染模板
prompt = chat_template.format(
role="Python 开发工程师",
skill="代码优化和调试",
question="如何提高 Python 代码的执行效率?"
)
3. Chains(链)
链是 LangChain 的核心概念,用于将多个组件串联起来执行复杂流程。LCEL(LangChain Expression Language)提供了优雅的语法:
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
from langchain.schema.output_parser import StrOutputParser
# 创建组件
model = ChatOpenAI(model="gpt-4o")
prompt = ChatPromptTemplate.from_template("为{product}写一段50字的广告语")
# 使用 LCEL 构建链(| 操作符)
chain = prompt | model | StrOutputParser()
# 执行链
result = chain.invoke({"product": "智能手表"})
print(result)
4. Memory(记忆系统)
记忆系统让 AI 能够“记住”之前的对话内容,这对于构建聊天机器人至关重要:
from langchain.memory import ConversationBufferMemory
from langchain.chains import ConversationChain
from langchain_openai import ChatOpenAI
# 创建记忆缓冲区
memory = ConversationBufferMemory()
# 创建对话链
conversation = ConversationChain(
llm=ChatOpenAI(model="gpt-4o"),
memory=memory,
verbose=True # 打印内部思考过程
)
# 多轮对话
print(conversation.predict(input="我叫小明,今年25岁"))
print(conversation.predict(input="我刚才告诉你我叫什么?"))
# 输出:你告诉我你叫小明
5. Tools(工具)
工具让智能体能够执行实际操作,如搜索网页、查询数据库、调用 API 等:
from langchain.tools import tool
# 使用装饰器定义工具
@tool
def get_weather(city: str) -> str:
"""
查询指定城市的天气信息。
参数:
city: 城市名称,如"北京"、"上海"
返回:
天气描述字符串
"""
# 实际应用中调用天气 API
weather_data = {
"北京": "晴天,气温 15°C,空气质量良好",
"上海": "多云,气温 18°C,有轻微雾霾",
"深圳": "小雨,气温 22°C,湿度较高"
}
return weather_data.get(city, f"未找到 {city} 的天气信息")
@tool
def calculate(expression: str) -> str:
"""
计算数学表达式。
参数:
expression: 数学表达式,如"2+3*4"
返回:
计算结果
"""
try:
result = eval(expression)
return f"计算结果:{result}"
except Exception as e:
return f"计算错误:{str(e)}"
# 工具列表
tools = [get_weather, calculate]
6. Agents(智能体)
智能体是 LangChain 的最高级组件,能够根据用户输入自主决定使用哪些工具、如何执行任务:
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_openai import ChatOpenAI
from langchain.prompts import ChatPromptTemplate
# 初始化模型
llm = ChatOpenAI(model="gpt-4o", temperature=0)
# 定义提示词
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个有用的助手,可以使用工具帮助用户。"),
("user", "{input}"),
("placeholder", "{agent_scratchpad}") # 用于智能体的思考过程
])
# 创建智能体
agent = create_tool_calling_agent(llm, tools, prompt)
# 创建执行器
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 执行任务
result = agent_executor.invoke({
"input": "北京今天的天气怎么样?另外帮我算一下 15 * 8 + 20"
})
print(result["output"])
三、实战案例:构建智能问答助手
下面我们通过一个完整的案例,构建一个能够搜索网页、记住对话历史的智能问答助手。
步骤1:安装依赖
# 安装核心库 pip install langchain langchain-openai langchain-community # 安装搜索工具 pip install tavily-python # 安装环境变量管理 pip install python-dotenv
步骤2:配置环境变量
# .env 文件 OPENAI_API_KEY=your_openai_api_key TAVILY_API_KEY=your_tavily_api_key # 搜索 API
步骤3:完整代码实现
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain.prompts import ChatPromptTemplate
from langchain.memory import ConversationBufferMemory
from langchain_community.tools.tavily_search import TavilySearchResults
# 加载环境变量
load_dotenv()
# 初始化 LLM
llm = ChatOpenAI(model="gpt-4o", temperature=0)
# 创建搜索工具
search_tool = TavilySearchResults(max_results=3)
# 定义工具列表
tools = [search_tool]
# 创建记忆系统
memory = ConversationBufferMemory(
memory_key="chat_history",
return_messages=True
)
# 定义提示词模板
prompt = ChatPromptTemplate.from_messages([
("system", """你是一个智能问答助手,具备以下能力:
1. 能够搜索互联网获取最新信息
2. 记住之前的对话内容
3. 给出准确、有依据的回答
当用户问题需要实时信息时,使用搜索工具。
回答时要注明信息来源。"""),
("placeholder", "{chat_history}"), # 对话历史
("user", "{input}"),
("placeholder", "{agent_scratchpad}")
])
# 创建智能体
agent = create_tool_calling_agent(llm, tools, prompt)
# 创建执行器(带记忆)
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
memory=memory,
verbose=True,
handle_parsing_errors=True
)
# 对话循环
def chat():
print("=== 智能问答助手 ===")
print("输入问题开始对话,输入 quit 退出\n")
while True:
user_input = input("你: ")
if user_input.lower() == "quit":
print("再见!")
break
# 调用智能体
response = agent_executor.invoke({"input": user_input})
print(f"\n助手: {response[output]}\n")
if __name__ == "__main__":
chat()
步骤4:运行效果
你: 2026年最新的 AI 技术趋势是什么? [调用搜索工具...] 助手: 根据2026年的最新信息,AI 技术的主要趋势包括: 1. **多模态 AI 成为主流** GPT-4V、Gemini 等模型已经能够理解图像、音频、视频等多种模态... 2. **AI Agent 智能体爆发** 自主规划、工具调用的智能体成为应用开发新范式... 3. **小模型+端侧部署** 模型蒸馏技术成熟,手机、IoT 设备本地运行 AI... 你: 刚才提到的智能体是什么? 助手: 我刚才提到的智能体是指... [智能体记住了之前的对话内容!]
四、进阶应用:RAG 检索增强生成
RAG(Retrieval-Augmented Generation)是 LangChain 最强大的应用场景之一,让 AI 能够基于你的私有文档回答问题。
RAG 架构流程
文档处理流程:文档加载 → 文本分割 → 向量化 → 存入向量数据库
查询流程:用户问题 → 向量化 → 相似度检索 → 构建上下文 → LLM 回答
代码实现
from langchain_community.document_loaders import TextLoader, PyPDFLoader
from langchain.text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.chains import RetrievalQA
from langchain_openai import ChatOpenAI
# 1. 加载文档
loader = PyPDFLoader("your_document.pdf")
documents = loader.load()
# 2. 文本分割
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=1000, # 每块最大 1000 字符
chunk_overlap=200, # 块之间重叠 200 字符
length_function=len
)
texts = text_splitter.split_documents(documents)
# 3. 创建向量存储
embeddings = OpenAIEmbeddings()
vectorstore = Chroma.from_documents(
documents=texts,
embedding=embeddings,
persist_directory="./chroma_db" # 持久化存储
)
# 4. 创建 RAG 链
llm = ChatOpenAI(model="gpt-4o", temperature=0)
qa_chain = RetrievalQA.from_chain_type(
llm=llm,
chain_type="stuff", # 将所有检索到的文档一次性喂给 LLM
retriever=vectorstore.as_retriever(
search_kwargs={"k": 3} # 返回最相关的 3 个文档块
),
return_source_documents=True # 返回来源文档
)
# 5. 查询
question = "文档中提到的核心技术架构是什么?"
result = qa_chain({"query": question})
print(f"回答: {result[result]}")
print(f"\n来源文档: {result[source_documents][0].metadata}")
五、最佳实践与踩坑指南
1. 提示词工程
好的提示词是成功的一半。建议:
- 明确指定 AI 的角色和能力边界
- 提供具体示例(few-shot prompting)
- 使用结构化输出格式(如 JSON)
2. 记忆管理策略
- ConversationBufferMemory:保存所有对话,适合短对话
- ConversationSummaryMemory:自动总结历史,适合长对话
- ConversationTokenBufferMemory:按 token 数限制,平衡上下文
3. 性能优化
- 使用异步调用提升并发性能
- 开启 LLM 缓存减少重复调用
- 合理设置 chunk_size 和 overlap
4. 成本控制
- 优先使用 GPT-4o-mini 等小模型处理简单任务
- 实现请求缓存机制
- 监控 token 使用量
六、总结
LangChain 为 AI 应用开发提供了强大的基础设施,让开发者能够专注于业务逻辑而非底层实现。从简单的 LLM 调用到复杂的智能体系统,从基础的问答到企业级 RAG 应用,LangChain 都提供了开箱即用的解决方案。
学习路径建议:
- 掌握 LLM 调用和提示词模板
- 理解链的概念和 LCEL 语法
- 实践工具调用和智能体开发
- 深入 RAG 架构和向量数据库
- 学习 LangGraph 构建复杂工作流
LangChain 生态正在快速发展,2026 年的 LangGraph、LangSmith 等工具让 AI 应用开发更加专业和高效。建议持续关注官方文档和社区动态,不断更新知识体系。
— 完 —
本文发布于 2026年4月3日 | 作者:廖万里
本文链接:https://www.kkkliao.cn/?id=983 转载需授权!
版权声明:本文由廖万里的博客发布,如需转载请注明出处。



手机流量卡
免费领卡
号卡合伙人
产品服务
关于本站
