返回首页

如何使用LangChain构建AI智能体:分步指南

本分步教程教你如何使用LangChain构建AI智能体,涵盖环境设置、大语言模型集成、工具定义和记忆实现。你将构建一个功能性的文件管理智能体,并学习多智能体系统的高级模式。

分步教程:使用LangChain构建AI智能体
Advertisement 728x90

创建安全的临时工作目录

从仅能生成文本的大型语言模型(LLM)到能够采取行动的 AI 智能体的转变,是现代软件工程中最重要的发展之一。智能体系统能够感知环境、做出决策,并使用工具来实现特定目标,超越了简单的问答式聊天机器人。LangChain 作为一个开源框架,通过将 LLM 与外部数据、工具以及其他 LLM 连接起来,已成为构建这些复杂应用的标准。

本教程提供了一份全面、分步的指南,教你如何使用 LangChain 构建 AI 智能体。你将学习基础概念,并通过实际实现进行实践,从而能够创建自己的自主智能体,执行现实世界中的任务。

你将学到什么

在本教程结束时,你将理解智能体 AI 和 LangChain 框架的核心原理。你将能够设置开发环境、连接到 LLM、定义自定义工具,并使用现代的 create_agent API 构建一个功能完整的智能体。你将构建并运行一个完整的 AI 智能体,能够根据自然语言命令与本地文件系统交互,为你创建更复杂的自动化任务打下实践基础。

Google AdInline article slot

1. LangChain 基础与核心概念

在深入代码之前,理解什么是 AI 智能体以及 LangChain 如何简化其创建过程至关重要。智能体的核心是一个使用 LLM 作为其推理引擎的系统。智能体接收用户请求,提示 LLM 决定采取何种行动,执行该行动(通常通过调用工具),然后处理结果以生成响应。这个循环会持续进行,直到任务完成。

LangChain 提供了一个标准框架来实现这个推理循环,最显著的是通过其对 ReAct(推理+行动)框架的支持。LangChain 是一个构建在 LangGraph 之上的高级工具,LangGraph 是一个更低层级的编排框架,让你能够对智能体的工作流和状态进行精细控制。

要使用 LangChain 构建智能体,你需要四个主要组件:

Google AdInline article slot
  1. LLM: 智能体的推理引擎。
  2. 工具: 允许智能体与外部世界交互的函数,例如 API、数据库或文件系统。
  3. 智能体循环: 管理 LLM、工具和状态的“大脑”编排层。
  4. 记忆(检查点): 持久化智能体状态的能力,使其能够在对话线程中记住过去的交互。

2. 设置开发环境

首先,你需要安装 LangChain 及其核心依赖项。本教程使用 Python 演示该过程,但概念和高级模式对于 TypeScript 用户来说是相似的。

首先,确保你的系统上安装了 Python 3 和 Pip。对于基于 Debian/Ubuntu 的系统,你可以使用以下命令。对于其他操作系统,请遵循相应的安装方法。

sudo apt update
sudo apt install python3 python3-pip

接下来,安装主要的 LangChain 包。langchain 包是核心框架。langchain-community 包含由社区维护的工具,而 langgraph 是现代智能体创建 API 所需的。

Google AdInline article slot
pip install langchain langgraph langchain-community

3. 集成大型语言模型

构建智能体的第一步是将其连接到 LLM。LangChain 支持数十个模型提供商,包括 Google Gemini、OpenAI、Anthropic 等。在本教程中,我们将使用 Google 的 Gemini 模型。

你需要从 Gemini 控制台获取一个 API 密钥。获得密钥后,你可以安装 Google GenAI 集成包并设置环境。

pip install -qU "langchain[google-genai]"

现在,你可以编写 Python 代码来初始化模型。getpass 模块用于安全地提示输入 API 密钥。

import getpass
import os
from langchain.chat_models import init_chat_model
from langchain_core.messages import HumanMessage, SystemMessage

if not os.environ.get("GOOGLE_API_KEY"):
    os.environ["GOOGLE_API_KEY"] = getpass.getpass("输入 Google Gemini 的 API 密钥:")

model = init_chat_model("gemini-2.0-flash", model_provider="google_genai")

你可以通过一个简单的查询来测试设置是否成功。

response = model.invoke("法国大革命是什么时候开始的?")
print(response.content)

4. 为智能体定义工具

工具是智能体强大的关键。它们允许 LLM 执行超出文本生成范围的操作。在本教程中,我们将使用 LangChain 的 FileManagementToolkit 构建一个能够管理本地计算机上文件的智能体。

FileManagementToolkitlangchain-community 包的一部分,你已经安装了这个包。该工具包允许你指定智能体可以执行哪些文件操作,例如读取、写入和列出文件。

导入必要的模块并定义工具。一个关键的安全实践是将智能体限制在临时目录中,而不是让它完全控制整个文件系统。

from langchain_community.agent_toolkits import FileManagementToolkit
from tempfile import TemporaryDirectory

working_directory = TemporaryDirectory()

# 使用选定的工具和根目录初始化工具包
tools = FileManagementToolkit(
    root_dir=str(working_directory.name),
    selected_tools=["read_file", "write_file", "list_directory"],
).get_tools()

5. 使用 create_agent 构建智能体

准备好 LLM 和工具后,你现在可以构建智能体了。在 LangChain 中构建智能体的现代且推荐的方法是使用 create_agent 函数。

该函数接收你的模型和一个工具列表,并创建一个管理推理循环的智能体执行器。它简化了流程,无需手动创建 ReAct 智能体和执行器。

from langchain.agents import create_agent

# “model”和“tools”变量来自前面的步骤。
agent = create_agent(
    model=model,
    tools=tools
)

这一行代码创建了一个复杂的智能体。该智能体使用模型根据用户输入决定调用哪个工具。它可以处理将多个工具调用链接在一起以完成复杂任务的情况。

⚠️ 重要提示: 虽然 LangChain 可以与较旧的智能体创建方法(如 create_react_agent)一起使用,但 create_agent API 是现代推荐的方法,应该是你构建新智能体的默认选择。

6. 运行你的第一个智能体

智能体构建完成后,你可以通过向其发送用户消息来运行它。以下命令将演示智能体与文件系统交互的能力。

首先,让智能体列出当前工作目录中的文件。此时,目录是空的。

input_message = {"role": "user", "content": "列出当前工作目录中的文件"}
response = agent.invoke({"messages": [input_message]})

for message in response["messages"]:
    message.pretty_print()

接下来,指示智能体创建一个名为 sample-file.txt 的文件。

input_message = {"role": "user", "content": "创建一个名为 sample-file.txt 的文件"}
response = agent.invoke({"messages": [input_message]})

for message in response["messages"]:
    message.pretty_print()

最后,再次让智能体列出文件。它将显示 sample-file.txt 存在。

input_message = {"role": "user", "content": "列出当前工作目录中的文件"}
response = agent.invoke({"messages": [input_message]})

for message in response["messages"]:
    message.pretty_print()

如你所见,智能体成功解释了自然语言命令,调用了适当的工具(list_directorywrite_file),并对所采取的行动提供了反馈。这是一个基本但强大的演示,展示了如何使用 LangChain 构建 AI 智能体。

7. 为智能体添加记忆

无状态智能体的一个关键限制是,它在一次调用完成后会忘记所有上下文。要创建一个能够记住过去交互的对话式智能体,你需要添加记忆。这通过一个“检查点器”来实现,它可以保存智能体的状态。

LangGraph 提供了一个 MemorySaver 类,这是一个简单的内存检查点器。在生产环境中,你会使用更健壮的选项,如 PostgresSaver 或基于 MongoDB 的检查点器,但 MemorySaver 非常适合测试和开发。

首先,导入并初始化检查点器。

from langgraph.checkpoint.memory import MemorySaver

checkpointer = MemorySaver()

接下来,重新创建你的智能体,并将 checkpointer 作为参数传递。

agent_with_memory = create_agent(
    model=model,
    tools=tools,
    checkpointer=checkpointer
)

要使用记忆,你必须在配置中指定一个 thread_id。这个 thread_id 充当对话 ID,允许智能体为每个不同的对话维护独立的记忆。

config = {"configurable": {"thread_id": "user-123"}}

agent_with_memory.invoke(
    {"messages": [{"role": "user", "content": "我叫 Alice"}]},
    config=config
)

result = agent_with_memory.invoke(
    {"messages": [{"role": "user", "content": "我叫什么名字?"}]},
    config=config
)
# 智能体回应:“你的名字是 Alice。”
print(result["messages"][-1].content)

这个简单的添加使你的智能体能够进行有上下文的对话,使其感觉更加智能和有用。

8. 超越基础:多智能体系统

随着你的进步,你可能会遇到单个智能体无法处理的复杂任务。LangChain 支持构建复杂的多智能体系统,其中专门的智能体协作解决问题。这是处理复杂工作流的一种强大架构模式。

子智能体 是一种核心的多智能体模式,其中主监督智能体协调多个专门的子智能体,将它们作为工具调用。例如,一个子智能体可能负责研究,另一个负责内容创作,第三个负责审查工作。

模式 工作原理
子智能体 主智能体将子智能体作为工具进行协调。所有路由都通过主智能体,由它决定何时调用每个子智能体。
交接 行为根据状态动态变化,工具调用会触发切换到不同的智能体或配置。
技能 专门的提示和知识按需加载到单个智能体的上下文中。
路由器 路由步骤对输入进行分类,并将其定向到一个或多个专门的智能体进行处理。

选择正确的模式至关重要。例如,子智能体架构非常适合并行执行和分布式开发,而交接模式对于单个对话中的重复用户请求更高效。在个人助理应用中使用子智能体模式可以实现上下文隔离——每个子智能体在一个干净的上下文窗口中处理任务,防止主智能体的记忆膨胀。

来源

  1. Chris Tozzi. "Build an AI agent with LangChain in this beginner tutorial." TechTarget, 2025年9月。
  2. "Quickstart" LangChain 官方文档。
  3. "Multi-agent" LangChain 官方文档。
  4. "Workflows and agents" LangChain 官方文档。
  5. "langchain-fundamentals" LangChain Skills 文档,GitHub。
  6. "How to Build an AI Agent with LangChain and LangGraph: Build an Autonomous Starbucks Agent." freeCodeCamp, 2025年12月。
  7. "Subagents" LangChain 官方文档。
  8. "LangChain Python Tutorial: A Complete Guide for 2026." The JetBrains Blog, 2026年3月。

— Editorial Team

Advertisement 728x90

继续阅读