ReAct:synergizing reasoning and acting in language models 语言模型中合成推理和行动

Abstract

语言模型中的reasoning(例如CoT等)和acting(action plan等)作为了单独的研究课题。本文探索LLM以交错的方式生成推理轨迹(reasoning trace)和特定于任务的动作(task-specific actions),从而让两者更大的协同作用。推理有助于更新动作计划和异常处理,动作允许模型与知识库或环境等外部资源交互收集附加信息。

在language 和decision making task上取得了sota结果,并在question answering和fact verification上克服了CoT推理的幻觉和错误传播问题。

ReAct出现之前,LLMs的研究主要沿着两个相对独立的方向发展。

  1. Reasoning

核心代表:思维链(Chain-of-Thought,CoT)

特点:研究如何让模型在回答复杂问题时,先生成一段“解题思路”,再给出答案。

局限:模型完全依赖于自身的内部知识,无法获取外界实时信息,易造成幻觉。

  1. Acting

核心代表:交互式决策(Interactive Decision Making)

特点:模型根据观察Observation直接生成动作Action。

局限:模型缺乏复杂的逻辑规划能力,易迷失在局部的状态中,难以应对多步推导任务。

Introduction

  1. 核心矛盾:人类思维的启发(Human-like Intelligence)

人类在执行任务导向的行动时会结合思维推理,这非常重要。将逻辑推理(Reasoning Trace)与特定任务的行动(Task-specific Actions)结合的能力,是人类处理复杂任务的核心。

  1. 提出ReAct架构

Reasoning与Action的结合,可以让模型在执行任务时,交替生成“推理轨迹”与“行动”:

  • 推理轨迹(Reasoning Trace):模型用自然语言写下的思考过程。它可以帮助模型诱导、跟踪和更新行动计划,甚至处理异常情况。

  • 行动(Acting):模型向外部环境(WikiPedia API、数据库)发出指令,用以收集新信息或改变状态。

  1. 协同效应(Synergy)的优势

    1. 更强的可靠性(Reliability/Grounding):通过行动,模型可以从外部获取实时信息,纠正内部错误,极大地减少幻觉。这也被称为知识对齐(Grounding)。

    2. 更强的可解释性(Interpret ability):由于模型必须写出“推理轨迹”,人类可以清晰看到它是怎么想的,以及为什么执行某个动作。

    3. 双向促进:推理能指引该做什么动作,而动作后的反馈(Observation)也可以启发模型下一步的思考。

  2. 验证

    1. 知识密集型推理(Knowledge-intensive reasoning):HotpotQA(多跳问答,需要多步搜索才能找到答案)和FEVER

    2. 决策任务(Decision making tasks):ALFWorld和WebShop

ReAct:Synergizing Reasoning + Acting

传统Agent的工作方式定义

  • 在时间步tt,Agent会从环境中接收到一个观察结果(Observation,oto_t
  • Agent 会基于当前的上下文(Context,ctc_t)采取一个行动(Action,atAa_t \in \mathcal{A})。这里的上下文包含了过去所有的观察和行动轨迹:ct=(o1,a1,...,ot1,at1,ot)c_t = (o_1, a_1, ..., o_{t-1}, a_{t-1}, o_t)

痛点

传统策略是学习一个映射π:ctat\pi : c_{\mathrm{t}} \mapsto a_{\mathrm{t}},其中atAa_t \in \mathcal{A}是外部动作空间(例如search[query]、click[button])。这种映射通常是高度隐式且复杂的计算。

解决

将思考看作是一种语言动作。

A^=AL\hat{A} = \mathcal{A} \cup \mathcal{L}

  • Action Space(atAa_t \in \mathcal{A}):会改变外部环境,并获得环境给出的观察反馈(Observation)。

  • Language Space(a^tL\hat{a}_t \in \mathcal{L}):文章称为想法(Thought)或推理轨迹(Reasoning Trace)

  • Thought

    • 不改变外部环境:不会获取外部的Observation feedback。

    • 更新内部上下文:ct+1=(ct,a^t)c_{t+1} = (c_t, \hat{a}_t),对当前上下文,对当前上下文ctc_t进行推理来compose有用的信息,帮助Agent整理思路、分解目标或提取关键信息。

具体实现 ???

In-context Learning(Few-shot Prompting)

Unlimited L增加了动作空间的复杂度,需要有强语言先验来约束。论文使用了Frozen LLM——PaLM-540B + few-show上下文提示,通过提供人类示范轨迹(包含行动、思维和环境观察的交替序列)引导LLM生成领域相关的行动和自由形式的思维。

thought与actionde交替方式

  • 推理密集型任务(QA):交替生成Thought-Action-Observation-Thought…

  • 决策密集型任务:Thought只在关键位置稀疏出现,语言模型自主决定出现时机。

ReAct四大特性

  1. 直观且易于涉及:构建ReAct的提示词极其简单,只需将自己做任务时的内心想法和具体动作记录下来写进promp

  2. 通用且灵活:想法-动作交替的模式普遍,不管是多跳问答、事实核查、还是文字游戏、网页导航,都适用

  3. 高性能且鲁棒:只需要提供1-6个少样本提示(Few-shot examples),ReAct就可以泛化到新任务中

  4. 符合人类直觉且绝对可控

Knowledge-Intensive Reasoning Tasks

数据集

  1. HotpotQA:这是一个多跳问答任务,回答一个问题通常需要跨越多个维基百科页面进行逻辑链接。

  2. FEVER:这是一个事实核查任务,要求模型判断一个陈述是“支持(SUPPORTS)”、“反驳(REFUTES)”还是“信息不足(NOT ENOUGH INFO)”。

难度:模型只接受问题或陈述作为输入,没有预设参考文档,只依靠内部知识或者外部环境交互获取知识。

交互设计

作者设计了一个wiki百科交互环境:

search[entity]:搜索特定的实体,存在返回前几句话(作为observation),不存在返回相似实体。

lookup[string, sentence_id]:当前页面查找包含特定字符的句子,模拟人类ctrl+f的行为。

finish[answer]:完成任务给出最终答案

Baseline Compare

  • Standard:标准prompt

  • CoT:只内部推理,不外部交互

  • Act-only:只允许模型执行动作(搜索/查找),无思考过程

  • ReAct:允许模型在执行每个动作前,先写下一段Thought

实验结果与发现

  • 幻觉:CoT主要是事实幻觉,无法访问外部环境获取实时数据

  • ReAct主要失败模式是推理错误,因为ReAct被强制要求与外部环境交互,有时会打断模型的推理流畅性。

Decision-Making Task

ALFWord:基于文本的家庭环境模拟游戏

WebShop:模拟电商购物网站

发现:

ReAct和CoT各有优劣,将它们结合(ReAct+CoT)能达到最优效果。ReAct可以通过实时获取外部真实信息,极大地减少了幻觉(Hallucination)。CoT在某些逻辑及其复杂的步骤上,内部推理比频繁的外部搜索更具全局观。

  • ReAct →→ CoT-SC:先尝试 ReAct,如果失败或不确定,再切换到带自一致性(Self-consistency)的 CoT。

  • ReAct & CoT 集成:通过启发式方法根据推理路径的特征决定采用哪个答案。