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

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.xdnf.cn/news/15471.html

相关文章:

  • AI大模型计数能力的深度剖析:从理论缺陷到技术改进
  • Java行为型模式---观察者模式
  • macOS - Chrome 关闭自动更新
  • c语言初阶 结构体
  • 基于Flink的实时开发平台-Dinky
  • v-show和v-if的区别
  • 【C++】auto关键字 C++入门(5)
  • 数据结构(8)——二叉树(2)
  • HarmonyOS 获取设备位置信息开发指导
  • 每天一个前端小知识 Day 30 - 前端文件处理与浏览器存储机制实践
  • Rust 模块系统:控制作用域与私有性
  • 《[系统底层攻坚] 张冬〈大话存储终极版〉精读计划启动——存储架构原理深度拆解之旅》-系统性学习笔记(适合小白与IT工作人员)
  • 从零开始跑通3DGS教程:(五)3DGS训练
  • React强大且灵活hooks库——ahooks入门实践之常用场景hook
  • 实现“micro 关键字搜索全覆盖商品”并通过 API 接口提供实时数据(一个方法)
  • 【LeetCode数据结构】单链表的应用——反转链表问题、链表的中间节点问题详解
  • DVWA靶场通关笔记-XSS DOM(High级别)
  • Dubbo跨越分布式事务的最终一致性陷阱
  • 一文讲懂填充与步幅
  • AI进化论12:大语言模型的爆发——GPT系列“出圈”,AI飞入寻常百姓家
  • jenkins使用Jenkinsfile部署springboot+docker项目
  • 黑马点评系列问题之p63unlock.lua不知道怎么整
  • 线性代数学习笔记
  • Origin自带的悬浮尺子,Screen Ruler的最佳平替
  • 012_PDF处理与文档分析
  • 【unitrix】 5.0 第二套类型级二进制数基本结构体(types2.rs)
  • sqli-labs靶场通关笔记:第9关 时间盲注
  • NO.5数据结构串和KMP算法|字符串匹配|主串与模式串|KMP|失配分析|next表
  • 前端构建工具 Webpack 5 的优化策略与高级配置
  • 代码随想录算法训练营第十八天