ReAct Prompting — ReAct 提示法

From Systems analysis wiki
Jump to navigation Jump to search

ReActReason + Act 的缩写,意为“推理与行动”)是一种为大型语言模型(LLM)设计的提示(prompting)范式,它使模型能够通过交替进行言语推理(思考)和与外部环境互动的行动来解决复杂任务[1]。该方法由谷歌研究院(Google Research)和普林斯顿大学的研究人员于 2022 年提出,并已成为开发智能体(intelligent agents)的基础方法。

ReAct 的核心创新在于,将思维链(Chain-of-Thought, CoT)等技术中常见的逻辑推理与执行外部行动(如信息搜索或与应用程序接口 API 交互)相结合。这使得模型能够动态调整其计划、核查事实,并克服自身知识(通常是过时或不完整的)的局限性[2]

背景与创建历史

在 ReAct 出现之前,利用 LLM 解决复杂任务主要存在两种独立的方法:

  • 思维链(Chain-of-Thought, CoT):模型生成逐步的逻辑推理来解决问题,但这一过程在“信息真空”中进行,完全依赖其内部知识。这常常导致事实错误和“幻觉”[1]
  • 仅行动规划(Act-Only):模型生成一系列行动与外部环境互动(例如,在文本游戏中),但缺乏明确的高层规划。这类系统在处理错误时表现不佳,也无法在遇到意外情况时调整策略。

ReAct 的创建旨在协同结合这两种方法的优点。它不仅让模型能够推理,还能将其推理“植根于”(ground)外部世界的事实,并根据收到的反馈调整其行动。

工作机制:“思考—行动—观察”循环

ReAct 在一个包含三个关键组件的迭代循环中运行。模型会 последовательно生成一个由思考(Thought)行动(Action)观察(Observation)步骤组成的轨迹。

提示结构示例:

问题:以交流电闻名的发明家出生于哪个首都城市?

思考 1: 我需要查明交流电的发明者。然后,找到他的出生地,并核实该城市是否为首都。

行动 1: Search[交流电发明者]

观察 1: 交流电(AC)由尼古拉·特斯拉(Nikola Tesla)开发和推广。

思考 2: 现在我需要找出尼古拉·特斯拉的出生地。

行动 2: Search[尼古拉·特斯拉出生地]

观察 2: 尼古拉·特斯拉出生于奥地利帝国的斯米连村(现属克罗地亚)。

思考 3: 斯米连不是首都。因此,按此提问方式,问题没有明确答案。然而,特斯拉曾在美国长期生活和工作。也许问题指的是他取得重大发现的国家的首都。这是一个更复杂的问题。我应该陈述基于其出生地的事实。他的出生地不是首都。

最终答案: 与交流电相关的发明家尼古拉·特斯拉出生于斯米连(克罗地亚),该地不是首都。

思考 (Thought)

模型生成内部推理,在其中分析任务、将其分解为子任务、制定或调整行动计划,并评估当前状态。此步骤不影响外部环境,但用于内部规划。

行动 (Action)

基于其推理,模型执行一个外部行动,调用一个可用的工具。行动示例:

  • Search [查询] — 在知识库(如维基百科)中搜索信息。
  • Click [元素] — 在网页上进行导航。
  • API_call [参数] — 调用外部 API。

观察 (Observation)

系统或外部工具执行该行动并返回结果(观察)。这可能是一段文本、一个 API 响应或一条错误消息。模型利用此观察来形成下一个思考,从而完成反馈循环[2]

实验结果与有效性

ReAct 的作者们在广泛的任务上测试了该方法,证明了其相对于 CoT 和仅行动(Act-Only)方法的优越性。

ReAct 与基线方法在关键基准测试中的结果对比[1]
基准测试 任务 ReAct (成功率/准确率) 思维链 (成功率/准确率) 仅行动 (成功率/准确率)
FEVER 事实核查 87.6% 82.8% 70.1%
HotpotQA 多跳问答 31.8% 36.3% 17.0%
ALFWorld 文本游戏(规划) 71% 10% 13%
WebShop 网页导航 40% - 30.1%
  • 在需要事实核查的任务(FEVER)中,ReAct 明显优于 CoT,因为它能够验证信息。
  • 交互式规划任务(ALFWorld、WebShop)中,ReAct 显示出巨大优势,因为它能适应变化的环境。
  • 纯推理任务(HotpotQA)中,CoT 可能表现出相当甚至更好的结果。然而,一种混合方法ReAct+CoT表现最佳,在 HotpotQA 上达到了 35% 的成绩[1]

批评与局限性

尽管 ReAct 效果显著,但它也存在一些局限和弱点。

  • 脆弱性(Brittleness):后续研究表明,ReAct 的成功可能并非源于推理与行动的真正协同,而更多是由于提示中的示例与当前任务之间的语法相似性。模型可能只是在遵循 `Thought-Action-Observation` 的模板,而未完全理解推理的语义[3]
  • 计算成本:每个 ReAct 循环至少需要一次 LLM 调用和一次外部工具访问,这使其与标准提示相比速度更慢且成本更高。
  • 对工具的依赖性:智能体的效率直接取决于可用工具的质量和可靠性。来自 API 的不正确或充满噪声的响应可能会将模型的推理引向错误的方向。

意义与未来发展

ReAct 成为人工智能发展的一个重要里程碑,标志着从生成式系统智能体系统的转变。它为大多数现代智能体创建框架奠定了概念和实践基础,例如:

  • LangChain
  • LlamaIndex
  • AutoGen

ReAct 的思想为更复杂的推理架构提供了起点,例如Reflexion(在失败后增加自我反思循环)和思维树(Tree of Thoughts, ToT)(并行探索多条推理路径)。

链接

参考文献

  • Yao, S. et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv:2210.03629.
  • Yao, S. et al. (2023). Tree of Thoughts: Deliberate Problem Solving with Large Language Models. arXiv:2305.10601.
  • Shinn, N. et al. (2023). Reflexion: Language Agents with Verbal Reinforcement Learning. arXiv:2303.11366.
  • Verma, V. et al. (2024). On the Brittle Foundations of ReAct Prompting for Agentic Large Language Models. arXiv:2405.13966.
  • Yao, S. et al. (2022). WebShop: Towards Scalable Real-World Web Interaction with Grounded Language Agents. arXiv:2207.01206.
  • Shridhar, M. et al. (2020). ALFWorld: Aligning Text and Embodied Environments for Interactive Learning. arXiv:2010.03768.
  • Qin, L. et al. (2023). AutoGen: Enabling Next-Gen LLM Applications via Multi-Agent Collaboration. arXiv:2308.08155.
  • Thorne, J. et al. (2018). FEVER: A Large-Scale Dataset for Fact Extraction and Verification. arXiv:1803.05355.
  • Yang, Z. et al. (2018). HotpotQA: A Dataset for Diverse, Explainable Multi-hop Question Answering. arXiv:1809.09600.

注释

  1. 1.0 1.1 1.2 1.3 Yao, S., Zhao, J., Yu, D., et al. (2022). «ReAct: Synergizing Reasoning and Acting in Language Models». arXiv preprint arXiv:2210.03629. [1]
  2. 2.0 2.1 «ReAct: Synergizing Reasoning and Acting in Language Models». Google Research Blog. [2]
  3. Verma, V., et al. (2024). «On the Brittle Foundations of ReAct Prompting for Agentic Large Language Models». arXiv preprint arXiv:2405.13966. [3]