当前位置: 首页 > news >正文

ReAct论文解读(1)—什么是ReAct?

什么是ReAct?

在大语言模型(LLM)领域中,ReAct 指的是一种结合了推理(Reasoning)行动(Acting) 的提示方法,全称是 “ReAct: Synergizing Reasoning and Acting in Language Models”,最早由 Google Research 在 2022 年提出。

简单理解

ReAct 提示(prompting)让语言模型不仅进行推理(思考下一步),还能主动调用工具或采取行动,并根据反馈结果继续推理和行动。

举个例子:
假设模型要回答一个关于当前天气的问题,而它本身并不知道当前天气。

传统方式(纯推理)

问:今天北京的天气如何?
答:对不起,我没有联网,无法查看当前天气。

ReAct方式(推理 reason+ 行动act)

  1. 模型先思考:要回答这个问题,我需要查找当前北京的天气。
  2. 行动:调用一个天气 API 或浏览器搜索。
  3. 接收结果:北京今天晴 32°C。
  4. 再次思考:得到了天气数据,现在可以回答了。
  5. 输出最终答案:北京今天晴,气温 32°C。

ReAct 的核心结构:

ReAct 提示通常包含多个交替的步骤,比如:

  • Thought: 我需要知道X才能解答。
  • Action: 查找X(比如调用工具或执行代码)
  • Observation: 得到X的结果。
  • Thought: 基于结果,我可以得出结论。
  • Answer: Y。

ReAct 的优点:

  • 更强的逻辑推理能力
  • 可以调用外部工具(如计算器、搜索引擎)
  • 可以进行多步思考和调整
  • 效果优于单纯的Chain-of-Thought(CoT)推理

应用场景

  • 多步骤问答
  • 工具增强型问答(Tool-augmented QA)
  • 任务规划
  • Web搜索、代码执行等

ReAct与CoT区别

什么是CoT?

Chain-of-Thought (CoT) 推理是指一种让大语言模型(LLM)在回答问题时,能够通过分步推理的方式展开思考,而不是直接给出最终答案。CoT 方法帮助模型通过逐步推理得出答案,从而避免“跳过”关键的推理过程,提升其推理和解答能力。

CoT 推理的核心概念:

CoT 推理的关键是将问题分解为多个中间步骤,让模型清楚地表达思考过程。这种方法模拟了人类在解决复杂问题时常常采用的思考方式:通过逐步分析、推导每一个小问题,最终得出结论。

举个例子:

假设我们有一个数学问题:

问题:如果有3个苹果,给了你2个苹果,现在你一共有多少个苹果?

没有CoT的回答

答:5个苹果。

使用CoT的回答

  1. 我有3个苹果。

  2. 给了我2个苹果。

  3. 所以我总共有3 + 2 = 5个苹果。

可以看到,CoT 会让模型逐步地列出每一步的推理过程,而不仅仅是直接给出答案。

CoT 在不同领域的应用:

  1. 数学推理:例如数学运算题,CoT 可以帮助模型一步步进行数值推导。
  2. 自然语言理解:处理含有多步骤的语言理解任务,如推理题、翻译、总结等。
  3. 决策过程:例如在游戏、机器人控制、医学诊断等场景中,CoT 可以帮助模型分步骤做出决策。

CoT 与 ReAct 的对比:

  • CoT 专注于推理的过程,即通过思考和推导一步步得到答案

  • ReAct 则结合了推理和行动,也就是说,它不仅进行推理,还会根据需要调用外部工具或执行某些行动(如API调用、搜索等)。

例子对比:

  1. CoT 例子
  • 问:一个果园里有 5 个树,每棵树上有 10 个苹果,一共有多少个苹果?

  • CoT 推理:

    1. 每棵树上有 10 个苹果。2. 共有 5 棵树。3. 所以总共有 5 * 10 = 50 个苹果。
    
  1. ReAct 例子(在需要查找信息的情况下):
  • 问:今天纽约的天气如何?

  • ReAct 推理:

     1. 我需要知道今天纽约的天气。2. 行动:调用天气查询 API 或搜索天气信息。3. 观察:得到今天纽约的天气是晴天,气温 30°C。4. 输出:今天纽约的天气是晴天,气温 30°C。
    
http://www.dtcms.com/a/277561.html

相关文章:

  • (懒人救星版)CNN_Kriging_NSGA2_Topsis(多模型融合典范)深度学习+SCI热点模型+多目标+熵权法 全网首例,完全原创,早用早发SCI
  • C语言关键字---枚举
  • LeetCode|Day8|1047. 删除字符串中的所有相邻重复项|Python刷题笔记
  • 基于YOLOv3-Tiny 的智能门铃的人体检测模型的实现(中)
  • PS2025最新稳定版下载安装详细图文教程(附安装包)
  • STM32 | HC-SR04 超声波传感器测距
  • 万丈高楼平地起:开发环境搭建与“Hello, World”
  • STM32中EXTI(外部中断)详解
  • Vue中的render()函数
  • word中多行合一功能实现
  • python基础知识pip配置pip.conf文件
  • Tableau破解安装
  • ROS2---NodeOptions
  • 数据预处理
  • 基于requests_html的爬虫实战
  • UE5多人MOBA+GAS 20、添加眩晕
  • 基于Flink的实时开发平台-Dinky
  • 基于Leaflet调用天地图在线API的多层级地名检索实战
  • LeetCode第 458 场周赛题解
  • 复习笔记 35
  • PHP语法高级篇(二):文件处理
  • c++ thread_local
  • Java求职面试:从Spring到微服务的全面挑战
  • 牛客周赛 Round 100
  • Android事件分发机制完整总结
  • CMSIS(Cortex Microcontroller Software Interface Standard)ARM公司为 Cortex-M 系列处理器
  • 互联网大厂Java面试:从Spring Boot到微服务的场景应用
  • 2024CVPR:Question Aware Vision Transformer for Multimodal Reasoning介绍
  • 考研复习-数据结构-第六章-图
  • RedisJSON 技术揭秘(五)`JSON.ARRPOP` 原子弹出 修改数组的终极手段