当前位置: 首页 > 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.lryc.cn/news/586763.html

相关文章:

  • 基于YOLOv11的无人机目标检测实战(Windows环境)
  • Spring Cloud Gateway 实战指南
  • 力扣经典算法篇-21- 两数之和 II - 输入有序数组(固定一端 + 二分查找法,双指针法)
  • MongoDB性能优化实战指南:原理、实践与案例
  • git实际工作流程
  • 【零基础入门unity游戏开发——unity3D篇】3D光源之——unity反射和反射探针技术
  • SPSSPRO:数据分析市场SaaS挑战者的战略分析
  • 深入解析Hadoop架构设计:原理、组件与应用
  • (2)从零开发 Chrome 插件:实现 API 登录与本地存储功能
  • 代码随想录|图论|14有向图的完全可达性
  • 基于Prompt结构的语校解析:3H日本语学校信息建模实录(4/500)
  • Java求职面试:从Spring到微服务的全面挑战
  • AI进化论12:大语言模型的爆发——GPT系列“出圈”,AI飞入寻常百姓家
  • 碳水循环(增肌、减脂)
  • VISUALBERT:一个简单且高效的视觉与语言基线模型
  • 【读书笔记】《Effective Modern C++》第3章 Moving to Modern C++
  • 14.ResourceMangaer启动解析
  • .NET + WPF框架开发聊天、网盘、信息发布、视频播放功能
  • 股指期货的三种风险类型是什么?
  • 15.手动实现BatchNorm(BN)
  • Linux中的数据库操作基础
  • pycharm+SSH 深度学习项目 远程后台运行命令
  • python爬取新浪财经网站上行业板块股票信息的代码
  • 【读书笔记】《C++ Software Design》第七章:Bridge、Prototype 与 External Polymorphism
  • cuda编程笔记(7)--多GPU上的CUDA
  • UniHttp生命周期钩子与公共参数实战:打造智能天气接口客户端
  • jenkins部署前端vue项目使用Docker+Jenkinsfile方式
  • 财务管理体系——解读大型企业集团财务管理体系解决方案【附全文阅读】
  • 算法入门--动态规划(C++)
  • 傅里叶变换中相位作用