2.3 ReAct:推理与行动的统一

ReAct(Reasoning + Acting)是将推理和行动交织在一起的智能体架构范式。它让模型在"思考"和"行动"之间交替进行,是现代智能体系统的核心设计模式之一。

2.3.1 什么是 ReAct

ReAct 的核心是将语言模型的 推理能力(思维链)与 行动能力(工具调用)结合起来:

思考: 我需要查找今天的天气预报
行动: search_weather(location="北京")
观察: 北京今天晴,气温 15-25°C,空气质量良好
思考: 用户问的是是否需要带伞,根据天气信息...
行动: respond(message="今天北京是晴天,不需要带伞")

2.3.2 三要素

要素
说明
示例

思考

思考过程,分析当前状态和下一步计划

"我需要先了解用户的具体需求..."

行动

执行的具体操作,通常是工具调用

search(query="...")

观察

行动的结果,来自环境的反馈

"搜索返回了 5 条相关结果..."

2.3.3 与纯思维链的区别

维度
纯 CoT
ReAct

信息来源

仅模型内部知识

可获取外部信息

执行能力

只能推理

可以执行操作

反馈机制

通过观察 (Observation) 获得反馈

适用场景

封闭域推理

开放域任务

2.3.4 基本循环

具体示例如下:

2.3.5 提示词模板

具体示例如下:

2.3.6 实际应用与最佳实践

实际应用案例

案例一:信息查询

展示重点:如何通过 ReAct 循环将一个复合问题(查股价 + 计算)拆解为线性的"工具调用链"。

案例二:代码调试

具体示例如下:

ReAct 的优势

可追溯性

每一步的推理过程都被记录,便于:

  • 调试问题

  • 理解决策逻辑

  • 审计和合规

错误恢复

当行动 (Action) 失败时,可以通过观察 (Observation) 获得错误信息,然后调整策略:

灵活性

不同于固定流程,ReAct 可以动态调整策略:

最佳实践

工具设计

具体示例如下:

观察处理

具体示例如下:

错误处理

具体示例如下:

2.3.7 常见问题

无限循环

问题:智能体在相同的状态间循环 解决

  • 设置最大步数限制

  • 检测重复 Action

  • 添加循环检测逻辑

过度使用工具

问题:简单问题也调用多次工具 解决

  • 在提示词中强调效率

  • 提供"可以直接回答"的选项

忽略观察

当工具返回了关键线索(错误码、返回字段、权限提示)时,智能体必须把这些信号纳入下一步推理,否则就会出现“盲走”。

问题:模型不根据观察调整策略

解决

  • 在提示词中强调观察的重要性

  • 提供根据观察调整的示例


下一节: 2.4 反思与自我修正

Last updated