当前位置:首页 > AI > 正文内容

LangChain 入门实战教程:从零构建 AI 智能体应用

廖万里刚刚AI0

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 都提供了开箱即用的解决方案。

学习路径建议

  1. 掌握 LLM 调用和提示词模板
  2. 理解链的概念和 LCEL 语法
  3. 实践工具调用和智能体开发
  4. 深入 RAG 架构和向量数据库
  5. 学习 LangGraph 构建复杂工作流

LangChain 生态正在快速发展,2026 年的 LangGraph、LangSmith 等工具让 AI 应用开发更加专业和高效。建议持续关注官方文档和社区动态,不断更新知识体系。

— 完 —

本文发布于 2026年4月3日 | 作者:廖万里

本文链接:https://www.kkkliao.cn/?id=983 转载需授权!

分享到:

版权声明:本文由廖万里的博客发布,如需转载请注明出处。


“LangChain 入门实战教程:从零构建 AI 智能体应用” 的相关文章

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。