要解决的问题
语言模型可以被提示先写出中间推理步骤,再给出答案。这种一步步的推理完全发生在模型内部:它没法去查任何东西,而且链条前面出的错往往会一路带下去,模型可能说得很肯定却是错的。另一方面,模型也可以被提示去执行动作,但只会行动而没有规划,同样做不成复杂任务。2022 年 10 月 6 日,Shunyu Yao、Jeffrey Zhao、Dian Yu 等 7 位作者把 ReAct 论文提交到 arXiv,问的正是这两种能力能否在同一个模型里合起来用。[1]
怎么做的
ReAct 的名字来自推理(reasoning)与行动(acting)的组合。它让模型交替地生成推理轨迹(reasoning trace)和针对具体任务的动作(action)。[1] 推理轨迹是模型写下的文字,用来说明自己要弄清什么、打算怎么做;它帮助模型形成行动计划、跟踪并更新这个计划,在遇到意外情况时做出处理。动作则是对模型之外某个东西的调用,比如知识库或某个环境,调用会返回结果,模型再基于这个结果继续推理。[1]
于是整个过程是一个循环:思考、行动、观察、再思考。具体的样子大致是:模型先写下自己需要某个事实,发出一次检索动作,读到返回的段落,发现这段只回答了一部分问题,于是再发出一次更聚焦的动作。推理决定下一步做什么,行动带回模型原本没有的信息,下一步推理就用上这些信息。
因为推理是写出来的,每个动作和它的返回结果也都看得见,整条轨迹事后可以完整阅读。这与只给出最终答案、或只在内部做一长串推理的模型很不一样。
结果
实验覆盖了两类任务。在问答数据集 HotpotQA 和事实核查数据集 Fever 上,ReAct 与一个简单的 Wikipedia API 交互。把推理和检索交替起来,克服了链式推理中常见的幻觉(hallucination)和错误传播问题,产生的解题轨迹也更具可解释性、更像人的做法。[1]
在两个交互式决策基准 ALFWorld 和 WebShop 上,ReAct 相比模仿学习和强化学习方法,绝对成功率分别高出 34% 和 10%,而提示里只给了一两个上下文示例。[1]
实验使用的是一个冻结的 PaLM-540B,靠少样本的上下文示例来提示,GPT-3 上的结果放在附录里报告。[1] 模型权重没有为任务做任何改动,行为来自提示和这个循环本身。
为什么重要
论文的理由有两点。第一,推理和行动各干各的事:推理轨迹帮助模型形成、跟踪和更新行动计划并处理异常,动作则让它与知识库、环境这类外部来源对接。[1] 只推理,模型始终待在自己内部;只行动,则没有计划可循。
第二是可读性。论文认为,相比没有推理或行动成分的方法,这一做法在人类可解释性和可信度上更好。[1] 读者能看到模型打算做什么、实际做了什么、拿回了什么,出了问题时可以定位到具体是哪一步,而不是只能对着最终答案猜。
还有一点需要说清楚:这是一种提示已有模型的范式,不是新架构,也不是训练方法。报告的结果来自用一个冻结的模型,在提示中给出少量示例。[1] 这类方法能走多远,取决于给模型开放了哪些动作、循环允许跑多长;而一条轨迹的质量,也受限于每个动作返回内容的质量。
注释与来源
- ReAct: Synergizing Reasoning and Acting in Language Modelshttps://arxiv.org/abs/2210.03629
引用本页: 《ReAct:语言模型中推理与行动的协同》. TellWorld, https://www.tellworld.net/zh/papers/react-2022. 更新于 2026-11-08