【Agent】ReAct:最经典的Agent设计框架

在早期的大语言模型(LLM)应用中,提示工程(Prompt Engineering)是连接用户意图与模型输出的核心手段。然而,纯提示驱动的方案在多步推理、工具调用和动态环境交互中常显不足。ReAct框架(Reasoning+Acting)应运而生,通过将链式推理(Reasoning) 与环境行动(Acting) 结合,构建出能主动思考、决策并执行复杂任务的智能体(Agent)。

一、ReAct论文

ReAct来自于ICLR 2023年发表的论文:REACT: SYNERGIZING REASONING AND ACTING INLANGUAGE MODELS。

论文解读参考博客: 《REACT: SYNERGIZING REASONING AND ACTING INLANGUAGE MODELS》论文阅读

该文献提出了一个名为ReAct的新方法,旨在将推理和行动在LLMs中结合起来,以解决复杂的语言理解和决策任务。传统的语言模型在处理推理任务时(如CoT)通常是静态的,依赖于模型内部的知识,容易产生幻觉和错误传播。而现有的行动生成模型(如WebGPT)则缺乏推理能力,无法动态调整计划或处理异常情况。ReAct通过交替生成推理轨迹和任务相关行动,使得模型能够在推理过程中动态调整计划,并通过与外部环境(如Wikipedia)交互获取额外信息,从而提升任务的解决能力和可解释性。
在这里插入图片描述
图1:(1)四种提示方法的比较,(a)标准提示,(b)链式思维(CoT,仅推理),(c)仅行动,(d)ReAct(推理+行动),用于解决HotpotQA问题。(2)(a)仅行动和(b)ReAct提示用于解决ALFWorld游戏的比较。在这两个领域中,我们在提示中省略了上下文示例,仅展示了模型生成的任务解决轨迹(行动、思维)和环境反馈(观察)。

在这项工作中,我们提出了ReAct,一种将推理和行动与语言模型结合以解决多样化语言推理和决策任务的通用范式(图1)。ReAct提示LLMs以交替的方式生成与任务相关的语言推理轨迹和行动,这使得模型能够进行动态推理,以创建、维护和调整高层次行动计划(推理以行动),同时与外部环境(如Wikipedia)交互,将额外信息纳入推理(行动以推理)。

二、ReAct工作原理

ReAct 智能体在一个思考→行动→观察的循环中运行,直到它找到解决方案或最终答案为止。

在这里插入图片描述

这类似于人类解决问题的方式:我们思考要做什么,执行一个行动(比如:查找某件事或进行计算), 观察结果,然后将其纳入我们的下一个思考中。
ReAct 框架使用提示词工程来强制执行这种结构化的方法,交替大模型的思考和行动/观察。

2.1 核心模块

(1)推理(Reasoning)模块

  • 动态思考链(Chain-of-Thought):Agent在每一步生成自然语言推理逻辑,解释当前决策原因(如:“用户需要查天气,需先获取位置信息”)。
  • 错误回溯机制:当行动失败时,Agent能分析原因并调整策略(如:“API返回错误,可能是参数格式问题,重试前需校验输入”)。

(2)行动(Acting)模块

  • 工具集成(Tool Calling):调用外部AP
### ReAct Framework中的Agent功能与使用方法 ReAct框架是一种结合了语言模型和外部工具的框架,旨在通过推理(Reasoning)和行动(Action)来增强AI代理(Agent)的能力。在ReAct框架中,Agent的功能被设计为能够根据环境感知进行推理,并采取适当的行动以实现目标[^1]。 #### 1. Agent的核心功能 ReAct框架中的Agent主要具备以下核心功能: - **感知能力**:Agent通过传感器感知环境信息。这些信息可以来自自然语言输入、视觉数据或其他形式的数据[^1]。 - **推理能力**:Agent利用语言模型生成推理步骤,帮助其理解当前状态并制定行动计划。这种推理过程通常以逐步的方式呈现,确保每一步都清晰且可验证。 - **行动能力**:基于推理结果,Agent会执行具体的操作或调用外部工具以改变环境状态。例如,Agent可以查询数据库、搜索网络或与其他系统交互[^2]。 #### 2. 使用方法 ReAct框架中的Agent使用方法主要包括以下几个方面: ##### (1) 初始化与配置 在开始使用Agent之前,需要对其进行初始化和配置。这包括定义Agent的目标、指定可用的外部工具以及设置运行环境。例如,可以通过以下代码初始化一个简单的Agent: ```python from react.agent import ReactAgent # 定义目标 goal = "Find the population of Tokyo" # 初始化Agent agent = ReactAgent(goal=goal, tools=["search", "database_query"]) ``` ##### (2) 感知与推理 Agent通过感知环境信息并生成推理步骤来解决问题。感知阶段通常涉及从外部源获取数据,而推理阶段则依赖于语言模型生成逻辑链条。例如: ```python # 获取环境信息 observation = agent.observe() # 生成推理步骤 reasoning_steps = agent.reason(observation) ``` ##### (3) 行动与反馈 根据推理结果,Agent会采取行动并与环境交互。行动的结果会被反馈回Agent,以便其调整后续策略。例如: ```python # 执行行动 action_result = agent.act(reasoning_steps) # 更新状态 agent.update_state(action_result) ``` #### 3. 示例应用 以下是一个完整的示例,展示如何使用ReAct框架中的Agent来解决实际问题: ```python from react.agent import ReactAgent # 定义目标 goal = "What is the capital of Japan and its population?" # 初始化Agent agent = ReactAgent(goal=goal, tools=["search", "database_query"]) # 获取环境信息 observation = agent.observe() # 生成推理步骤 reasoning_steps = agent.reason(observation) # 执行行动 action_result = agent.act(reasoning_steps) # 更新状态 agent.update_state(action_result) # 输出终结果 print(agent.get_result()) ``` #### 4. 注意事项 在使用ReAct框架中的Agent时,需要注意以下几点: - 确保Agent的目标明确且具体,以便其能够有效执行任务。 - 根据任务需求选择合适的外部工具,避免不必要的复杂性。 - 监控Agent的行为,确保其推理和行动符合预期。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值