news 2026/10/27 8:32:58

BeeAI 框架—ReActAgent 学习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
BeeAI 框架—ReActAgent 学习

文章目录

    • 1. 写在最前面
    • 2. ReActAgent 浅析
      • 2.1 什么是 ReAct
      • 2.2 为什么无需设置 prompt
    • 3. ReActAgent 的核心机制
      • 3.1 ReAct 循环:推理与行动的交替
      • 3.2 为什么需要多轮推理?
      • 3.3 错误处理与自我修正
    • 4. ReActAgent 的使用场景
      • 4.1 适合场景
      • 4.2 不适合的场景
    • 5. 碎碎念
    • 6. 参考资料:

1. 写在最前面

趁着假期前,继续学习一下之前没有深入理解的 ReActAgent 的工作原理。果然假期马上就可以出去玩的想法会让人心猿意马。(ps : 但是今天晚上还是要继续去锻炼的……

2. ReActAgent 浅析

2.1 什么是 ReAct

ReAct 这个名字很有意思,它其实是Reasoning(推理)和Acting(行动)两个词的组合。这个命名本身就揭示了 ReActAgent 的核心思想:通过推理来决定行动,通过行动的结果来指导下一步推理。

具体代码示例:

frombeeai_framework.agents.reactimportReActAgentfrombeeai_framework.backendimportChatModelfrombeeai_framework.memoryimportUnconstrainedMemoryfrombeeai_framework.tools.codeimportPythonTool,SandboxTool# ReActAgent 的创建非常简单agent=ReActAgent(llm=ChatModel.from_name("ollama:granite3.3:8b"),tools=[python_tool,sandbox_tool],memory=UnconstrainedMemory())

从代码来看,ReActAgent 的 API 非常简洁,只需要提供 LLM、工具列表和内存管理即可。但简洁的背后,隐藏着强大的自主决策能力。

注:思考一下理论上 LLM 都需要提供特定的 prompt 才能够让 LLM 按照预期返回,但是上面的 ReActAgent 木有要求设置

2.2 为什么无需设置 prompt

答案是因为,ReActAgent 需要 LLM 严格按照 ReAct 格式输出:

  • Thought: → 思考过程

  • Action: → 选择的工具

  • Action Input: → 工具输入

  • Observation: → 工具执行结果

  • Final Answer: → 最终答案

这个格式是固定的,必须由框架内置的 Prompt 模板来保证。

3. ReActAgent 的核心机制

3.1 ReAct 循环:推理与行动的交替

ReActAgent 的核心是一个循环过程,每次循环都包含以下几个步骤:

  1. Thought(思考):Agent 分析当前情况,思考下一步应该做什么
  2. Action(行动):根据思考结果,选择并调用合适的工具
  3. Action Input(行动输入):为选定的工具提供输入参数
  4. Observation(观察):观察工具执行的结果
  5. Final Answer(最终答案):如果任务完成,提供最终答案;否则继续下一轮循环

这个循环过程可以用下面的流程图表示:

用户问题 ↓ [Thought] → 分析问题,决定需要什么工具 ↓ [Action] → 选择工具(如 PythonTool) ↓ [Action Input] → 提供工具输入(如 Python 代码) ↓ [Observation] → 观察执行结果 ↓ [Thought] → 分析结果,决定下一步 ↓ ├─→ 如果任务完成 → [Final Answer] └─→ 如果未完成 → 继续循环

举例本地的调用如下:

3.2 为什么需要多轮推理?

很多复杂任务无法一次性完成,需要多轮推理。举个例子:

用户问题:“计算 1 到 100 的平方和,然后找出所有大于 1000 的平方数”

这个任务需要:

  1. 第一轮:计算 1 到 100 的平方和
  2. 第二轮:根据第一轮的结果,找出所有大于 1000 的平方数

如果使用RequirementAgent,开发者需要预先定义这两步的执行顺序。但如果使用ReActAgent,Agent 可以自主决定:

  • 先执行第一步
  • 观察结果
  • 根据结果决定是否需要执行第二步
  • 如果第一步的结果已经足够,可能直接给出答案

这种灵活性在处理复杂、动态的任务时特别有用。

3.3 错误处理与自我修正

ReActAgent 的另一个强大之处在于它的错误处理能力。当工具执行失败时,Agent 可以:

  1. 分析错误原因:通过 Observation 观察错误信息
  2. 推理修复方案:在下一轮 Thought 中分析如何修复
  3. 尝试修复:调用工具进行修复或重试
# 示例:Agent 执行代码时遇到错误# Round 1:# Thought: 需要计算 10/0# Action: PythonTool# Action Input: result = 10 / 0# Observation: ZeroDivisionError: division by zero# Round 2:# Thought: 出现了除零错误,需要添加错误处理# Action: PythonTool# Action Input:# try:# result = 10 / 0# except ZeroDivisionError:# result = "Cannot divide by zero"# Observation: 代码执行成功,result = "Cannot divide by zero"

这种自我修正的能力,让 ReActAgent 能够处理一些不可预见的错误情况。

4. ReActAgent 的使用场景

4.1 适合场景

  • 代码执行和计算

    • 动态生成和执行代码

    • 代码解释器(Code Interpreter)

    • 数学计算和数据分析

  • 复杂问题求解

    • 需要多步推理的任务

    • 步骤间有依赖关系的任务

    • 例如:分析 CSV → 找出最高销售额类别 → 计算平均利润率

  • 交互式任务

    • 需要根据结果调整策略

    • 需要多轮迭代和修正

    • 例如:写代码 → 测试 → 修复错误 → 再测试

  • 错误恢复

    • 需要处理不确定性和错误

    • 能够自我修正和重试

    • 动态错误处理

4.2 不适合的场景

  • 严格流程控制:需要精确控制每一步执行

  • 简单工具调用:只需一次或少量工具调用

  • LLM 不支持:LLM 输出格式不符合 ReAct 要求

5. 碎碎念

发现关于 AI 的很多不理解,其实是因为同一个意思有多种的表达方式,比如下面这几个,其实是类似同义词来着。

人类大模型
大脑:思考、推理、决策LLM 推理能力:理解、分析、决策
小脑:协调动作、执行操作工具调用能力:调用工具、执行操作
记忆:存储知识、经验RAG:检索知识库、增强回答

所以说,再讨论问题之前还是得先统一概念。

你有没有想过,从公元前 221 年秦朝建立到如今,这看似漫长的 2245 年,其实也不过是麦子熟了 2245 回。

其实 1978 年宣布改革开放时,距离清朝灭亡也才过去66年。

如果一个人的生命有 70 年,那么 2245 年,也只是 32 个人生死相接的一生。

我们总是被一些大词裹挟,沉迷于一些宏大叙事、空洞概念,其实不如实在一点,想想这短暂的一生,到底要为什么而活。

注:参考 普通人的一生应该是怎样的?

6. 参考资料:

  • 万字长文!从零开始构建你的第一个 ReAct Agent

  • 别让米其林主厨削土豆,英伟达用“小脑指挥大脑”,重构AGI生产力

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/26 21:39:56

AI如何用SQLAlchemy简化数据库开发?

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个Python项目,使用SQLAlchemy ORM连接MySQL数据库,包含以下功能:1. 自动生成User模型(含id、name、email字段)&am…

作者头像 李华
网站建设 2026/10/26 4:48:29

创建复选框控件

复选框控件(QCheckBox)一、控件介绍QCheckBox 是 Qt 框架提供的标准复选框控件,用于在用户界面中提供一个可选择的方框。用户可以通过点击来切换其状态,状态通常分为“选中”和“未选中”。 此外,QCheckBox 还支持“三…

作者头像 李华
网站建设 2026/10/26 21:39:55

Git commit规范检查新思路:结合GLM-4.6V-Flash-WEB图像日志分析

Git commit规范检查新思路:结合GLM-4.6V-Flash-WEB图像日志分析 在现代软件开发中,一次看似普通的 git push 操作背后,可能隐藏着远超代码变更本身的丰富上下文——调试截图、错误弹窗、监控图表……这些视觉信息本应是理解修改意图的关键线索…

作者头像 李华
网站建设 2026/10/26 4:48:55

MLP开发效率革命:传统编码vsAI生成对比

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 生成两个对比项目:1. 传统方式手写的MLP数字识别代码 2. AI生成的优化版本。要求:1. 相同MNIST数据集 2. 相同网络结构(2个隐藏层) 3. 包含性能对比报告 4.…

作者头像 李华
网站建设 2026/10/26 4:48:31

IDEA官网新手指南:如何用AI插件提升开发效率

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 创建一个基于IntelliJ IDEA的AI辅助开发插件,支持代码自动补全、错误检测和智能重构。插件应集成GitHub Copilot和Tabnine的功能,提供实时建议,…

作者头像 李华
网站建设 2026/10/26 5:53:46

使用Docker容器部署GLM-4.6V-Flash-WEB时的资源限制策略

使用Docker容器部署GLM-4.6V-Flash-WEB时的资源限制策略 在当前多模态AI应用快速落地的背景下,如何将视觉语言模型(VLM)稳定、高效地部署到生产环境,已经成为开发者面临的核心挑战之一。尤其是像图像问答、内容审核、智能客服这类…

作者头像 李华