拆解ReAct:让AI智能体学会“三思而后行”

一、大模型的局限性

近几年,大语言模型(Large Language Model,LLM)取得了巨大的成功。无论是问答、翻译、代码生成还是内容创作,大模型都展现出了惊人的能力。但即便如此,大模型依然存在一个天然的局限:

它只能基于训练数据和输入内容进行推理,而无法主动感知外部环境。

例如:

  • 今天上海天气怎么样?
  • 当前股票价格是多少?
  • 数据库里有多少订单?
  • 某个接口是否正常运行?

对于这些问题,大模型本身并不知道答案。因为大模型实际上是一个概率预测模型,它只能根据已有知识生成最可能的文本,而无法直接访问:

  • 网络
  • 数据库
  • 文件系统
  • 企业内部系统
  • 第三方 API

换句话说:

大模型拥有强大的"大脑",但没有"眼睛"和"手"。

它能够思考,却无法主动获取信息,也无法执行实际操作。

二、什么是 Agent

既然大模型无法直接感知和操作外部世界,那么一个自然的想法就是:

给大模型配上一系列工具(Tools)。

例如:

  • 搜索引擎
  • 数据库查询工具
  • 文件读取工具
  • 邮件发送工具
  • 天气查询工具
  • 代码执行工具

当大模型需要某种能力时,可以调用对应工具完成任务。

这类能够自主规划并调用工具完成任务的智能程序,被称为:Agent(智能体)

简单来说:Agent = 具备推理能力的大模型 + 可执行操作的工具集合

Agent不仅能够回答问题,还能够:

  • 获取外部信息
  • 执行具体操作
  • 根据结果继续推理
  • 最终完成复杂任务

例如用户说:

"帮我查询今天北京天气并生成一份出行建议。"

Agent会:

  1. 调用天气工具
  2. 获取天气数据
  3. 分析天气情况
  4. 生成出行建议
  5. 返回结果

整个过程不需要人工干预。

三、Agent 的种类(按应用场景分)

随着 Agent 技术的发展,逐渐出现了多种不同类型。

1. 编程 Agent(Coding Agent)

帮助开发软件和编写代码。

能力:

  • 编写代码
  • 修复 Bug
  • 自动测试
  • 代码重构
  • 项目开发

典型产品:

  • Codex
  • Claude Code
  • 通义灵码
  • 豆包 MarsCode

2. 图片 Agent(Image Agent)

负责生成和编辑图片。

能力:

  • AI 绘画
  • 海报设计
  • 图片编辑
  • 商品图生成
  • Logo 设计

典型产品:

  • 即梦AI
  • 可灵AI
  • 通义万相
  • 文心一格

3. 视频 Agent(Video Agent)

负责视频生成和视频编辑。

能力:

  • 文生视频
  • 图生视频
  • 数字人视频
  • 自动剪辑
  • 自动配音

典型产品:

  • 可灵AI
  • 即梦AI
  • Vidu
  • 腾讯智影

4. 办公 Agent(Office Agent)

帮助完成日常办公工作。

能力:

  • 写文档
  • 写邮件
  • 会议纪要
  • PPT 制作
  • 数据整理

典型产品:

  • WPS AI
  • 钉钉AI助理
  • 飞书智能伙伴

四、Agent 的运行模式

大多数 Agent 都遵循一个循环:

plain 复制代码
用户任务
    ↓
思考
    ↓
选择工具
    ↓
执行工具
    ↓
获得结果
    ↓
继续思考
    ↓
任务完成

不断循环,直到得到最终答案。这也是现代 Agent 的核心思想。

五、ReAct 的概念

ReAct 是目前最经典的 Agent 设计模式之一。

ReAct 全称:Reasoning And Acting

即:边思考(Reasoning),边行动(Acting)。

在 ReAct 出现之前:

  • CoT(Chain of Thought)只负责推理
  • Tool Calling 只负责调用工具

两者是分离的。

而 ReAct 将二者结合起来。

Agent 在推理过程中可以随时调用工具。

ReAct 的四个阶段

1. Thought(思考)

分析当前问题。

plain 复制代码
用户提问:北京今天的天气。
大模型思考:我需要先调用工具查询天气信息。
2. Action(行动)

大模型决定调用哪个工具。

3. Observation(观察)

大模型获取工具返回结果。

例如:

plain 复制代码
晴天、25℃、东南风
4. Final Answer(最终回答)

根据观察结果生成最终答案。

例如:

plain 复制代码
北京今天晴天,25℃,
适合户外活动,建议做好防晒。

六、ReAct实现原理

实现 ReAct 本质上并不复杂。其核心思想:让大模型输出固定格式的推理过程。

例子

需求:将查询出来的天气写入到本地磁盘。这个需求需要用到两个工具

  1. 查询天气
  2. 将天气结果写入本地

React 提示词

plain 复制代码
# 职责描述

你是一个具备自主推理与工具调用能力的智能助手。

你的目标是分析用户需求,并通过多轮思考(Thought)和工具调用(Action)逐步获取完成任务所需的信息,最终给出准确的答案。

对于复杂任务,你可以将其拆分为多个步骤。

在每一个步骤中:

1. 首先分析当前已知信息和待解决问题
2. 使用 `<thought>` 输出你的思考过程
3. 使用 `<action>` 调用最合适的工具
4. 等待工具返回结果
5. 工具执行结果会通过 `<observation>` 返回
6. 根据 <observation> 继续思考下一步行动
7. 当已经拥有足够信息时,输出 `<final_answer>` 并结束任务

---

# 工作规则
- <task>标签必须用户提供
- 你每次回答需要包含两个标签:第一个是<thought>,第二个是<action>或者<final_answer>
- 输出<action>后立即停止生成,等待<observation>,擅自生成<observation>将导致错误

---

# 可用工具列表
1. get_weather(city_name): 根据城市名称查询城市添加
2. write_file(path,content): 写入本地磁盘,将content写入path
---
# 当前系统的环境
1. 系统:windows11 
2. 当前目录:D:/test
---
# 示例1:订单查询
```text
<task>
查询订单10086当前状态
</task>
<thought>
用户希望查询订单状态,需要调用订单查询工具。
</thought>
<action>
get_order_status('10086')
</action>
<observation>订单号为:10086的订单已经发货</observation>
<thought>
get_order_status返回结果为已发货
</thought>
<final_answer>
订单10086已经发货
</final_answer>

查询北京的今天天气,并且把查询结果写入到本地

``

使用ChatGPT测试

可以看出ReAct的本质其实还是提示词工程

七、总结

大模型拥有强大的推理能力,但无法直接感知和操作外部世界。Agent 通过为大模型提供工具能力,使其能够获取信息、执行操作并完成复杂任务。而 ReAct 则是 Agent 领域最经典的设计模式,它通过「Thought → Action → Observation → Final Answer」的循环,让大模型实现边思考边行动。理解 ReAct 后,你会发现大部分 Agent 框架虽然实现方式不同,但核心思想几乎都源于这一模式。

相关推荐
程序员也有头发1 小时前
如何使用AI工具开发Unity
unity·游戏引擎·ai编程
子昕2 小时前
Claude Fable 5 新模型杀疯了:跑分5倍于GPT-5.5,真能用吗?
ai编程
ZzT2 小时前
6 月 15 日起,claude -p 和 Agent SDK 不再走订阅额度
ai编程·claude
wuhen_n2 小时前
RAG 实战:语义检索 + 大模型生成精准问答
前端·langchain·ai编程
Java.熵减码农2 小时前
Hermes Agent 安装踩坑记录:DNS 解析失败 & Node.js 幽灵文件冲突
node.js·ai编程·hermes
阿提说说3 小时前
我的 NVIDIA 考试攻略
python·大模型·agent
xyz_CDragon3 小时前
OpenClaw 局域网调用 Ollama 本地大模型:完整配置与踩坑指南
python·ai编程·集成学习·ollama·deepseek·openclaw
Xd聊架构3 小时前
为什么 OpenClaw 和 Claude Code 都使用 Node.js
node.js·agent·智能体·claudecode·openclaw