跳到正文

ReAct 框架怎么实现推理+行动?

Agent 中 ReAct 工作机制与实现流程,结合搜索工具举例

原题:请详细解释ReAct(Reasoning + Acting)框架的基本思想、工作机制及其在大模型代理(Agent)中的应用,包括它如何结合推理与外部操作来提升任务完成能力,并举例说明其实现流程。

Prompt工程 · 美团真题

30 秒回答

  1. ReAct的核心思想是将推理(Reasoning)和行动(Acting)交织进行,而非分离执行
  2. 能清晰说明Thought → Action → Observation的循环机制
  3. 理解ReAct相比纯推理或纯行动的优势(减少幻觉、增强可解释性)
  4. 能结合具体场景(如搜索、计算、数据库查询)描述完整执行流程

回答与解析

答案要点

  • ReAct的核心思想是将推理(Reasoning)和行动(Acting)交织进行,而非分离执行
  • 能清晰说明Thought → Action → Observation的循环机制
  • 理解ReAct相比纯推理或纯行动的优势(减少幻觉、增强可解释性)
  • 能结合具体场景(如搜索、计算、数据库查询)描述完整执行流程
  • 提及实际实现中的关键细节(如prompt设计、停止条件、工具描述)

核心思想

ReAct = Reasoning(推理)+ Acting(行动),关键突破是让模型交替进行"思考"和"行动",而非先想后做或只做不想。

传统方式的问题:

  • 纯CoT:只推理不行动,知识过时或不足时产生幻觉
  • 纯Action:盲目调用工具,缺乏规划导致效率低

ReAct让模型每步都显式输出思考过程,再决定下一步行动。


工作机制:循环三要素

Thought(思考)→ Action(行动)→ Observation(观察)→ 循环...
元素 作用 示例
Thought 分析当前状态、制定计划、反思错误 "我需要先查北京天气,再推荐穿搭"
Action 调用外部工具(搜索、计算、API) search("北京今日天气")
Observation 获取工具返回的客观结果 "晴,25°C,微风"

循环终止条件:得到最终答案,或达到最大步数。


应用示例:复杂问答

任务:"2024年诺贝尔物理学奖得主是谁?他因什么研究获奖?"

执行流程

  1. Thought:这个问题需要最新信息,我的知识可能不全,先搜索确认
  2. Actionsearch("2024诺贝尔物理学奖得主")
  3. Observation:返回"John J. Hopfield和Geoffrey E. Hinton,因机器学习与神经网络的基础性发现和发明"
  4. Thought:已确认得主,但需要更详细的研究背景,分别搜索两人的贡献
  5. Actionsearch("Hopfield Hinton 具体研究贡献")
  6. Observation:返回Hopfield网络和玻尔兹曼机器的详细说明
  7. Thought:信息已足够,可以综合回答
  8. Final Answer:...

关键实现细节

Prompt设计

你是智能助手,按以下格式思考并行动:
Thought: [你的分析]
Action: [工具名, 参数]
Observation: [工具返回,由系统自动填充]
...(重复直到解决问题)

优势

  • 可解释性:完整轨迹可追溯
  • 错误恢复:某步失败可从Thought调整策略
  • 动态规划:根据观察实时调整,非固定流程

典型应用:LangChain的AgentExecutor、AutoGPT、各类客服/数据分析Agent。

口语版讲法(约4分钟)

  • ReAct本质是让模型边想边做,不是先想再做
  • 循环三要素:Thought→Action→Observation
  • 对比纯推理和纯行动的边界
  • 业务场景:客服退款流程
  • 落地前提和风险
  • 工程师取舍:可解释性优先

这道题问的是ReAct框架,我觉得它本质上是问大模型怎么把思考和行动结合起来,不是单一地推理或者单一地调用工具。ReAct的核心就是让模型交替进行推理和行动,用Thought、Action、Observation这个循环来推进任务。你可以这么理解,它不像传统方法那样先想好再去做,而是想一步做一步,做完看结果再想下一步。

具体说一下工作机制。ReAct有三个要素循环:Thought、Action、Observation。Thought是模型显式输出思考,比如分析当前状态、制定下一步计划;Action是调用外部工具,比如搜索、计算、API;Observation是工具返回的客观结果。这个循环一直持续,直到模型给出最终答案,或者达到最大步数。

这里有个边界问题。纯推理比如 Chain-of-Thought,只靠模型内部知识,如果知识过时或者不足,容易产生幻觉。纯行动比如直接调工具,没有规划,效率低还容易走偏。ReAct把两者结合起来,用思考指导行动,用观察修正思考,所以比单独用哪个都好。但真正落地的时候,我一般不会只用ReAct,还会结合RAG或者微调。比如RAG适合知识密集型任务,ReAct适合需要多步推理和工具调用的场景,很多时候是两者一起上,先用RAG检索知识,再用ReAct做推理和行动。

举个例子,客服退款场景。用户说“我买了个商品,订单号是12345,但没收到货,我要退款”。模型先Thought:用户要退款,我需要查订单状态和物流信息。然后Action:查询订单系统,返回订单已发货、物流显示签收。Observation:物流签收了但用户说没收到,可能是异常。接着Thought:这可能是配送问题,需要进一步核实,或者走理赔流程。再Action:调用客服工单系统创建异常单。最后Observation:系统返回工单ID,模型综合信息给出最终答案。这样每一步都有思考轨迹,可解释性很强。

落地的时候有几个前提和风险。前提是工具接口要稳定,返回结果要结构化,不然Observation解析会出错。风险是步数太多会导致延迟高,而且如果模型思考不够准确,可能会在错误路径上绕圈。常见失败场景是工具调用失败后模型没有重试机制,或者Observation信息不足导致模型瞎猜。上线我会特别关注最大步数限制和超时处理,还有错误恢复逻辑,比如Action失败后重新思考其他方案。

另外,ReAct的Prompt设计也很关键,需要明确告诉模型输出格式,比如Thought、Action、Observation各占一行,不然模型容易混。这个Prompt设计其实和Function Calling有联系,我倾向于把工具描述写得足够清晰,让模型知道什么时候该用什么工具。

所以总结一下,我更倾向把ReAct看作一种让模型行为可解释、可干预的框架,而不是一个黑盒。它牺牲了一点效率,换来了更好的可控性和可追溯性,这在客服、金融、医疗这些对合规要求高的场景里特别重要。

关键一句:ReAct的Prompt设计和Function Calling的关系

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设你在做一个智能客服,用户问“今天的订单状态”,你查到了,但用户接着问“那昨天那笔退款呢?”。传统方法可能直接搜,但ReAct会先想“用户刚问了今天订单,现在问昨天退款,我需要先确认用户身份”,再查。你能讲讲这个“先想再做”的机制具体怎么运作吗?

  2. 问法 2 · 层层追问

    你平时怎么让模型调用工具?……是直接调吗?那如果模型工具调用错了怎么纠偏?……有没有一种方式让模型每一步都先分析再行动,比如先想“我需要查什么”再调用?这就是ReAct的核心,你能展开说说它的循环过程吗?

  3. 问法 3 · 直球架构

    请解释ReAct框架:它的基本思想是什么?工作机制里Thought、Action、Observation怎么循环?为什么比纯CoT或纯工具调用更好?举一个具体例子,比如搜索加计算的任务,描述完整流程。

同模块相关题目