找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2862

积分

0

好友

388

主题
发表于 3 天前 | 查看: 27| 回复: 0

人类解决问题时,通常是“思考→行动→观察→再思考”的循环过程。现在,有一种名为ReAct的框架让AI也学会了这种思维方式,它将推理与行动无缝结合。这使得AI不再是单纯的“问答机器”,而是能够主动探索和解决问题的智能体。

ReAct框架的推理与行动循环示意图

为什么需要ReAct框架?

想象一下这个常见的场景:

你:北京今天的天气怎么样?
ChatGPT:抱歉,我无法获取实时信息,建议您查看天气预报应用。

问题 在于,像ChatGPT这样的传统大语言模型只能“思考”,无法“行动”。

如果AI能像人类一样,通过以下步骤解决问题呢?

  1. 思考:用户想知道北京天气。
  2. 行动:调用天气API查询。
  3. 观察:获取到天气数据。
  4. 再思考:将数据整理成易读的答案。

这正是 ReAct框架 的核心思想。

一、什么是ReAct框架?

名称由来

ReAct = Reasoning(推理)+ Acting(行动)

这个由普林斯顿大学研究人员提出的框架,旨在让AI具备以下能力:

  • 推理:分析问题,制定计划。
  • 行动:执行具体操作。
  • 观察:获取执行结果。
  • 循环:基于结果继续推理和行动。

核心思想

传统AI:仅有推理,缺乏行动能力。

用户提问 → AI理解 → AI回答
                     ↑
              只能基于已有知识

ReAct AI:推理与行动相结合。

用户提问 → AI推理 → AI行动 → 观察结果 → 再次推理 → 继续行动 → 得到答案
                                     ↑
                                 可以获取新信息

二、ReAct的完整循环

ReAct循环流程示意图:思考、行动、观察的闭环

Thought(思考)

用户:帮我查一下GitHub上OpenAI仓库的星标数

AI思考:
- 用户想要获取GitHub仓库信息
- 需要调用GitHub API
- 仓库是 openai/openai
- 应该查询 stargazers_count 字段

Action(行动)

AI行动:
调用 github_api.get_repo(“openai/openai”)

Observation(观察)

观察结果:
{
  “name”: “openai”,
  “stargazers_count”: 185000,
  “language”: “Python”
}

下一个循环

AI思考:
- 获取到了星标数:185000
- 用户可能还想了解其他信息
- 提供完整回答

AI回答:
OpenAI的GitHub仓库有18.5万颗星,使用Python开发。

三、ReAct vs 传统方法

对比图示

ReAct与Chain-of-Thought对比图

传统 Chain-of-Thought ReAct
只能推理 推理+行动
无法获取外部信息 可以调用工具
知识截止到训练时间 可以获取实时数据
静态思考 动态交互

实际例子

任务:分析一个网站的SEO。

传统方法

AI:我无法直接访问网站,您可以提供网站URL,然后我教您如何分析…

ReAct方法

AI思考:需要分析网站SEO,首先获取网站内容
AI行动:调用 http_get(“https://example.com”)
AI观察:获取到HTML内容
AI思考:需要分析标题、描述、关键词
AI行动:调用 analyze_seo(html_content)
AI观察:得到SEO分析结果
AI思考:整理成用户易读的格式
AI回答:[提供完整的SEO分析报告]

四、ReAct的应用场景

1. 数据分析

数据处理流程:从数据库到AI模型再到可视化图表

用户:分析这个销售数据,找出Top 10产品

AI思考:
- 需要读取销售数据文件
- 可能需要数据清洗
- 按销售额排序
- 取前10名

AI行动:file_read(“sales_data.csv”)
AI观察:获取到10000行销售记录

AI思考:
- 数据量较大,需要用Python处理
- 按产品汇总销售额
- 排序并取Top 10

AI行动:python_exec(code=“…汇总和排序代码…”)
AI观察:得到Top 10产品列表

AI思考:
- 用户可能想要可视化
- 生成图表会更直观

AI行动:python_exec(code=“生成图表代码…”)
AI观察:图表生成成功

AI回答:
[提供Top 10产品列表和可视化图表]

2. 代码调试

用户:我的代码报错了,帮我看看

AI思考:
- 需要先读取代码文件
- 运行代码获取错误信息
- 分析错误原因
- 提供修复方案

AI行动:file_read(“app.py”)
AI观察:获取到代码内容

AI行动:run_command(“python app.py”)
AI观察:错误 “NameError: name ‘config’ is not defined”

AI思考:
- 缺少 config 模块导入
- 需要检查是否有 config.py
- 或需要创建配置文件

AI行动:file_search(“config”, directory=“.”)
AI观察:找到 config.py

AI思考:
- config.py 存在但没有导入
- 需要添加 import 语句

AI行动:file_write(“app.py”, content=“添加了 import config 的代码”)
AI观察:文件已更新

AI行动:run_command(“python app.py”)
AI观察:代码运行成功 ✓

AI回答:
问题已修复!原因是没有导入 config 模块。
已添加 `import config` 语句,现在可以正常运行了。

3. 信息检索

用户:最新的AI模型有哪些进展?

AI思考:
- 这是一个时效性问题
- 需要搜索最新信息
- 可以用搜索工具

AI行动:search_web(“AI模型最新进展 2026”)
AI观察:找到相关文章和新闻

AI思考:
- 获取到了多个信息源
- 需要整理和总结
- 提取关键进展

AI行动:read_article([文章URL1, 文章URL2])
AI观察:获取到详细内容

AI回答:
[整理出2026年AI模型的最新进展,包括GPT-5、Claude 4等]

五、ReAct的技术实现

核心循环逻辑

class ReActAgent:
    def solve(self, query):
        thoughts = []
        observations = []

        # 初始思考
        thought = self.think_about(query)
        thoughts.append(thought)

        while not self.is_solved(thought, observations):
            # 选择行动
            action = self.select_action(thought, observations)

            # 执行行动
            observation = self.execute(action)
            observations.append(observation)

            # 基于观察重新思考
            thought = self.think_about(thought, observation)
            thoughts.append(thought)

        return self.format_answer(thought, observations)

行动空间定义

# AI可以执行的行动
actions = {
    “search”: “搜索信息”,
    “read”: “读取文件”,
    “write”: “写入文件”,
    “run”: “运行命令”,
    “api_call”: “调用API”,
    “code”: “执行代码”,
    “finish”: “完成任务”
}

观察处理逻辑

def process_observation(observation):
    # 提取关键信息
    key_info = extract_keys(observation)

    # 判断是否需要继续行动
    if is_complete(key_info):
        return “complete”
    else:
        return “continue”

六、ReAct的最佳实践

1. 清晰的思考过程

# ✅ 好的思考:结构化、步骤清晰
thought = “”“
用户想要查询天气信息。
我需要:
1. 确定用户所在城市
2. 调用天气API
3. 解析返回数据
4. 格式化输出
”“”

# ❌ 不好的思考:过于简略,无法指导行动
thought = “查天气”

2. 原子化行动

# ✅ 好的行动:每个行动只做一件事
action1 = {“tool”: “search”, “query”: “北京天气”}
action2 = {“tool”: “parse”, “data”: result}

# ❌ 不好的行动:功能混杂,难以调试和复用
action = {“tool”: “search_and_parse_and_format”}

3. 验证观察结果

# ✅ 验证观察,处理异常
if observation[“status”] == “error”:
    # 错误处理
    thought = f“行动失败:{observation[‘error’]}”
    # 尝试其他方法

# ✅ 检查数据完整性
if required_fields not in observation:
    # 继续收集信息

七、ReAct的限制与改进

当前限制

ReAct框架的局限性(如循环限制、操作失败)与改进策略(自我反思、多路径探索)对比图

  1. 循环次数限制
    • 避免无限循环,通常需限制在10-20步内。
  2. 行动失败处理
    • API调用失败、文件不存在等情况需要备用方案。
  3. 思考质量
    • 思考过程可能偏离目标,需要引导和修正。

改进方向

1. 自我反思

思考 → 行动 → 观察 → 反思 → 调整 → 再行动

2. 多路径探索

同时尝试多个行动
选择最成功的结果

3. 记忆机制

记住之前的成功经验
避免重复失败

八、ReAct与其他技术结合

ReAct + 工具调用

现代AI开发框架,如 LangChain,已经将ReAct模式与丰富的工具调用能力深度整合,使得构建功能强大的AI Agent变得更加便捷。

思考:需要发送邮件
行动:调用邮件工具
观察:邮件发送成功

ReAct + 多Agent

Agent 1(思考者):制定计划
Agent 2(执行者):执行行动
Agent 3(观察者):收集结果
共同协作完成任务

ReAct + 记忆系统

思考:我之前解决过类似问题吗?
行动:查询长期记忆
观察:找到相关经验
基于历史经验优化当前行动

九、总结:ReAct让AI“活”起来

没有ReAct的AI

  • 只能被动回答已知问题。
  • 无法获取训练数据之外的新信息。
  • 知识受限于模型训练的时间点。

有ReAct的AI

  • 能够主动探索和解决复杂问题。
  • 可以调用工具获取实时信息。
  • 实现了推理和行动的结合。
  • 更接近人类“思考和做事”的方式。

这正是现代 AI Agent 的核心能力所在——它们不是简单的问答系统,而是能通过“思考-行动-观察”循环与环境交互的智能体。

对于想深入了解 AI Agent 开发实战、探索更多优秀项目实现(例如 GitHub 上的相关开源项目)的开发者,掌握ReAct框架的原理与实现是至关重要的第一步。





上一篇:纽约市率先行动:美国TikTok禁令政策转向,数据本地化成关键
下一篇:Riot Platforms抛售BTC套现2.9亿美元:矿企电力套利与AI算力转型实战
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-7 18:15 , Processed in 0.829680 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表