专栏系列第 3 篇 · 智能体纪元
一、引言:LLM 革命的“下一站”
大型语言模型(LLMs)虽然强大,却仍是“被动”的回答工具。它们无法主动调用工具、执行代码或与外部世界交互。想象一下,如果一个模型不仅能理解问题,还能规划、决策、调用工具,完成一个复杂任务——这就是 AI Agent 的核心愿景。
LangChain 提供了高效构建智能体(Agent)的能力,尤其是其 ReAct 智能体架构,正在成为 AI 应用开发中的关键角色。本篇文章将带你从原理出发,深入理解 ReAct Agent 的机制,并通过实战案例,掌握其使用方法。
二、什么是 LangChain Agent?
LangChain 中的 Agent 是一类可以根据用户输入,自主决定使用哪些工具完成任务的智能体。不同于传统的 LLM 问答,Agent 能够通过“思考-行动-观察”的循环,在复杂任务中实现动态决策与推理。
举个例子:
- 用户提问:“北京今天天气如何?”
- 普通 LLM 只能回答:“我无法获取实时信息。”
Agent 会这样做:
- 解析用户意图
- 决定调用天气查询工具
- 获取结果
- 组合语言反馈给用户
这背后的关键,就是 LangChain 的 ReAct(Reason + Act)架构。
三、ReAct 原理详解:Reasoning + Acting
ReAct 是一个由 Google Research 提出的智能体提示范式,它将“推理(Reasoning)”与“行动(Acting)”结合起来,让语言模型像人类一样“边想边做”。
在 ReAct 中,一个完整的 Agent 回合包括以下步骤:
- Thought(思考):模型根据上下文进行推理。
- Action(行动):模型选择一个工具并提供参数。
- Observation(观察):执行 Action,获取外部工具返回的结果。
- Thought - Action - Observation... 循环
- Final Answer:模型根据观察结果总结最终答案。
这个过程类似于人类解决问题的思维流程:先思考,再查资料,再总结。
示例:
Question: 北京的天气怎么样?
Thought: 我需要查找当前的天气信息。
Action: Search[北京今天天气]
Observation: 北京今天多云,气温 20~28℃。
Thought: 有了天气信息,我可以回答问题。
Final Answer: 北京今天多云,气温在 20~28℃之间。
这种逐步提示风格在 LangChain 中由 AgentType.ZERO_SHOT_REACT_DESCRIPTION
实现。
四、LangChain ReAct Agent 的运行机制
LangChain 中的 Agent 由以下核心组件组成:
- LLM(语言模型):负责推理和输出 Agent 动作。
- Tool(工具):Agent 可调用的功能,例如搜索、计算器、代码执行器等。
- Agent Executor:负责 orchestrate(精心策划) 整个 ReAct 循环过程。
核心工作流程如下:
- 用户输入问题
- LLM 基于 ReAct 提示模板生成 Thought + Action
- Agent Executor 调用对应 Tool 执行 Action
- Tool 返回 Observation(观察),反馈给 LLM
- LLM 继续推理直到输出 Final Answer
LangChain 会自动管理这整个闭环,开发者只需定义工具、选择 Agent 类型即可。
五、实战演练:构建一个 ReAct Agent 查询 AI 最新研究
下面我们通过代码构建一个能自动搜索网络信息的 ReAct Agent,完成“用中文回答最近有哪些 AI Agent 研究”的任务。
1. 安装依赖
pip install langchain langchain-community duckduckgo-search openai
2. 编写代码
import os
from pprint import pprint
from langchain_community.tools import DuckDuckGoSearchRun
from langchain_community.chat_models import ChatOpenAI
from langchain.agents import initialize_agent, AgentType
# 初始化搜索工具
search = DuckDuckGoSearchRun()
tools = [search]
# 初始化语言模型(可替换为 OpenAI 或 DeepSeek 等)
llm = ChatOpenAI(
model='deepseek-chat',
openai_api_key=os.getenv('DEEPSEEK_API_KEY'),
openai_api_base='https://api.deepseek.com',
max_tokens=1024
)
# 初始化 Agent
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True,
handle_parsing_errors=True
)
# 发起查询
response = agent.invoke({
"input": "能不能介绍几个可以在线试用的 AI Agent 示例网站?请用中文回答。"
})
pprint(response)
3. 输出示例(可能因实时搜索而变化)
思考-行动过程:
最终答案:
> Finished chain.
{'input': '能不能介绍几个可以在线试用的 AI Agent 示例网站?请用中文回答。',
'output': '以下是几个可以在线试用的AI Agent示例网站和平台:\n'
'\n'
'1. **BetterYeah AI** \n'
' - 一个简化AI Agent开发的平台,支持无代码构建企业级Agent,适合业务场景应用。\n'
'\n'
'2. **Aibase(AI产品导航站)** \n'
' - 收录超过7000个AI工具和网站,涵盖AI绘画、写作、视频编辑等,提供丰富的AI Agent试用资源。 \n'
' - 网址示例:https://www.aibase.com/(需确认实际可用性)\n'
'\n'
'3. **LangGraph(开源框架)** \n'
' - 提供灵活的AI Agent构建能力,支持状态管理、循环控制等高级功能,适合开发者试用。 \n'
' - GitHub等开源平台可获取代码。\n'
'\n'
'4. **Super 8 合作案例(Line AI机器人)** \n'
' - 如台湾绿藤生机的“Line生成式AI永续机器人”,可通过Line平台体验对话式AI Agent。\n'
'\n'
'建议访问这些平台的官网或开源项目页面,通常会有在线Demo或试用入口。部分企业级平台可能需要注册或申请试用权限。'}
六、小结与延伸阅读
ReAct Agent 是智能体系统中的关键一环,具备“自主规划 + 工具调用”的强大能力。通过 LangChain 的封装,我们可以快速构建具备外部信息获取能力的 Agent,让语言模型“动”起来。
推荐延伸阅读:
- ReAct 论文:arxiv.org/abs/2210.03…
- LangChain Agents 官方文档:python.langchain.com/docs/module…
- AutoGen 项目:github.com/microsoft/a…
下一篇,我们将深入探讨 多工具智能体系统 —— 如何让一个 Agent 根据任务自动切换使用多个工具、并协调调用它们。