03-Agent 智能体开发实战指南(三):ReAct 框架深度解析

03-Agent 智能体开发实战指南(三):ReAct 框架深度解析

系列导读:这是《Agent 智能体开发实战指南》系列的第三篇,将深入讲解 ReAct 框架——Agent 智能体的核心思考与行动模式,通过实战案例理解「思考→行动→观察」的完整循环。


1.1 核心概念

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

ReAct 是让 Agent 像人类一样解决问题的关键框架:


ReAct 让 Agent 不再”直接回答”,而是”一步步解决”

1.2 ReAct vs 直接回答

方式 示例 适用场景
直接回答 用户:“123×456 等于多少?” → LLM:“56088” 简单问题、LLM 已知知识
ReAct 模式 用户:“计算我的 BMI” → Agent:思考→获取体重→获取身高→计算→回答 复杂问题、需要外部数据

2.1 完整循环流程


2.2 每个阶段的任务

阶段 LLM 的任务 输出内容
思考 分析需求,评估已有信息,决定下一步 自然语言推理过程
行动 选择合适的工具,传入正确参数 工具调用请求
观察 解析工具返回,提取关键信息 内部状态更新

3.1 场景设定

用户问:“计算我的 BMI”

问题拆解

  • BMI 公式:
  • 需要数据:体重、身高
  • 数据来源:需要调用工具获取

3.2 工具定义


3.3 执行过程全记录


3.4 完整输出


3.5 关键观察点

  1. 思考过程透明化:每一步都有明确的思考说明
  2. 单工具调用:每次只调用一个工具,便于观察
  3. 状态累积:每次观察后,信息逐步完整
  4. 自然终止:信息足够后,直接生成答案

4.1 基础版 vs 进阶版

基础版(不推荐)


问题

  • 没有指定思考方式
  • 没有约束工具调用行为
  • LLM 可能直接回答,不调用工具

进阶版(推荐)


4.2 system_prompt 核心要素

要素 作用 示例
角色定义 设定 Agent 身份 “你是严格遵循 ReAct 框架的智能体”
流程约束 规范思考方式 “必须按思考→行动→观察的流程”
工具说明 帮助 LLM 理解可用工具 列出工具名和用途
输出格式 统一响应结构 “按思考、行动、观察三个结构告知”
特殊约束 针对场景的限制 “每轮仅能调用 1 个工具”

5.1 场景:旅行规划助手

用户问题:“我想去深圳玩 3 天,帮我规划一下”

需要的工具

  • – 查询天气
  • – 查询酒店
  • – 查询景点
  • – 查询交通

ReAct 流程


5.2 代码实现



6.1 条件分支处理

场景:根据工具返回结果决定下一步行动


实现方式

  • 在 system_prompt 中说明条件逻辑
  • 训练 LLM 理解”如果…那么…”的推理

6.2 错误恢复

场景:工具调用失败时的处理


system_prompt 建议


6.3 提前终止

场景:信息已足够,无需继续调用工具



7.1 打印完整执行轨迹


7.2 常见问题与解决

问题 现象 解决方案 Agent 智能体
跳过思考 Agent 直接调用工具 在 prompt 中强调思考步骤
无限循环 反复调用同一工具 添加”避免重复调用”约束
工具选择错误 调用不相关的工具 优化工具 description
参数错误 传入错误参数类型 在 description 中明确参数格式

7.3 性能优化

问题:ReAct 循环次数过多,响应慢

优化策略

  1. 限制最大循环次数

  1. 并行调用独立工具

  1. 缓存工具结果


核心要点

  1. ReAct 循环:思考→行动→观察→再思考
  2. 透明化思考:让 Agent 输出推理过程,便于调试和信任
  3. system_prompt 设计:明确角色、流程、约束、格式
  4. 错误处理:工具失败时的恢复策略
  5. 提前终止:信息足够时直接回答

下章预告

下一篇我们将讲解 流式输出与状态管理,学习:

  • stream_mode 的各种模式详解
  • 如何实时展示 Agent 思考过程
  • 状态快照与调试技巧
  • 生产环境的流式处理

  1. Agent 智能体开发实战指南(一):从 LLM 到 Agent 的认知升级
  2. Agent 智能体开发实战指南(二):工具调用系统深度解析
  3. Agent 智能体开发实战指南(三):ReAct 框架深度解析(本文)
  4. Agent 智能体开发实战指南(四):流式输出与状态管理
  5. Agent 智能体开发实战指南(五):中间件系统与动态提示词
  6. Agent 智能体开发实战指南(六):RAG 与向量存储实战
  7. Agent 智能体开发实战指南(七):项目架构设计与工程化实践
  8. Agent 智能体开发实战指南(八):UI 集成与生产部署

本文是《Agent 智能体开发实战指南》系列的第三篇,下一篇将深入讲解流式输出与状态管理。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/285627.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 上午7:12
下一篇 2026年3月16日 上午7:13


相关推荐

关注全栈程序员社区公众号