ReAct 模式详解:推理与行动如何让 AI 更智能


关键词

ReAct模式 | 大语言模型(LLM) | 具身智能 | 思维链(Chain of Thought, CoT) | 推理-行动协同 | 工具使用(Agent Tooling) | 强化学习(RL)


摘要

当你向一个传统大语言模型(LLM)提问:“现在(假设提问时间为202X年X月X日X时X分)北京故宫博物院今天的开馆时间和门票预约剩余量分别是多少?”时,你大概率会得到一句礼貌但无用的道歉——“抱歉,我的知识截止到202X年Y月Y日,无法获取实时信息”;或者更糟糕,得到一段基于训练数据中过时规则(比如“旺季8:30开馆,淡季9:00开馆”)但完全不符合当前调休政策的胡编乱造信息。

那如果给这个大语言模型装上“眼睛”(能访问网页API、知识库的接口)、“手”(能操作浏览器、数据库、计算器的能力),再教它一套“先想再做、做完再想”的方法论呢?这就是今天我们要深度剖析的ReAct模式(Reasoning + Acting,推理与行动协同模式)

ReAct模式是由普林斯顿大学、Google DeepMind和Google Research在2022年10月联合发表的论文《ReAct: Synergizing Reasoning and Acting in Language Models》中提出的革命性范式。它打破了传统LLM“纯静态推理生成”和纯强化学习(RL)智能体“纯无理由试错行动”的二元对立局面,让LLM既能像哲学家一样“内省式思考”(生成清晰的推理步骤、反思中间结果),又能像探险家一样“外向式探索”(调用外部工具获取实时/动态/专业信息、执行环境交互动作),最终实现“可解释、可校正、信息准确、能力泛化”的智能决策与任务执行。

本文将以 “用户购买故宫门票遇到问题的ReAct智能助手全流程案例” 为主线,贯穿所有核心章节,通过生活化类比+一步步思考推理+数学模型推导+完整Python代码实现+Mermaid架构图/流程图/ER图+行业发展对比+最佳实践建议的方式,彻底搞懂ReAct模式的“前世今生”“核心原理”“落地细节”“未来方向”。


正文部分


1. 背景介绍:纯推理vs纯行动的“天花板困境”,催生ReAct的协同革命

核心概念

纯静态推理LLM | 纯无理由试错RL智能体 | 天花板困境 | 推理-行动协同 | 自然语言控制的具身智能

问题背景

让我们先穿越到ReAct论文发表前的2021-2022年初,看看当时AI领域最火的两个方向——大语言模型的推理能力强化学习的环境交互能力——各自走到了什么“天花板”。

1.1 纯静态推理LLM的“静态知识诅咒”与“幻觉梦魇”

从2020年GPT-3问世,到2022年GPT-3.5(论文发表时尚未正式命名,但内部已存在类似模型)、PaLM、LaMDA等模型的涌现,大语言模型在自然语言理解(NLU)自然语言生成(NLG)知识问答(KQA)代码生成(Codex)文本摘要/翻译等“静态知识+纯文本推理”任务上取得了前无古人的成绩——甚至能通过律师资格考试、MBA入学考试、编程竞赛的入门/中级题目。

但就在大家欢呼“通用人工智能(AGI)的曙光就在眼前”时,两个无法回避的致命缺陷暴露了出来:

1.1.1 静态知识诅咒:无法获取实时/动态/外部知识

大语言模型的所有知识都来自预训练阶段(一般截止到某一固定时间点,比如GPT-3截止2021年9月,GPT-4截止2023年4月,PaLM截止2022年4月),预训练结束后它就像一本封死在玻璃柜里的百科全书——你只能看柜里有的内容,柜外的(比如今天的天气、股票价格、新闻、某个电商平台的最新商品价格、故宫博物院今天的调休开馆时间、某个科研论文数据库里202X年刚发表的论文)它根本看不见、摸不着。

举个生活化的例子:假设你是一个只会背2020年北京旅游手册的导游机器人,游客问你:“明天(202X年10月1日,假设手册上没写国庆黄金周故宫的预约规则调整)我想去故宫参观,应该几点预约门票?今天(假设提问时间是202X年9月30日23:00)还能约明天的票吗?”——你要么直接说“抱歉,我的手册截止2020年,无法回答”,要么凭着手册上过时的信息(比如“提前10天0点放票,当天不可预约”)胡编乱造——这就是静态知识诅咒

1.1.2 幻觉梦魇:推理过程不透明,容易生成虚假/无意义/自相矛盾的信息

纯静态推理LLM的另一个致命缺陷是**“黑箱式推理”:它生成的最终答案看起来逻辑自洽,但中间的推理步骤要么完全不存在(直接给出答案),要么虽然通过思维链(Chain of Thought, CoT)提示词技术生成了,但这些推理步骤可能是“假思考”**——它是为了迎合最终答案而编造的,而不是真正“一步一步推导出来的”,甚至推理步骤本身就充满了虚假信息。

思维链(CoT)提示词技术是2022年1月Google Research发表的论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》中提出的,它的核心思想是:给LLM一个包含“问题-推理步骤-最终答案”的示例,然后让LLM在回答新问题时,也先生成推理步骤,再给出最终答案——这确实能大幅提升LLM在复杂数学题、逻辑题、常识题上的准确率(比如在GSM8K小学数学题数据集上,准确率从17.9%提升到58.1%)。

但CoT并没有解决幻觉问题,反而在某些情况下加剧了它:因为LLM要先生成推理步骤,再给出答案,它可能会为了让推理步骤看起来“顺理成章”,编造一些不存在的事实或规则。

继续用导游机器人的例子:假设你给这个只会背2020年旅游手册的CoT版导游机器人,加上了一个示例——“问题:2020年10月1日故宫开放吗?推理步骤:1. 查2020年旅游手册,故宫全年开放,除了每周一(法定节假日除外);2. 2020年10月1日是星期四,不是周一;3. 2020年10月1日是法定节假日(国庆节),即使是周一也会开放。最终答案:开放。”——然后游客问:“202X年9月30日23:00能约明天(202X年10月1日)的故宫门票吗?”——这个CoT版导游机器人可能会生成这样的假推理步骤:“1. 查2020年旅游手册,故宫门票提前10天0点放票,当天可预约至12:00;2. 202X年9月30日23:00距离10月1日12:00还有13小时,所以可以预约;3. 手册上没写国庆黄金周预约规则调整,所以默认适用日常规则。最终答案:可以预约。”——但实际上,202X年国庆黄金周故宫的预约规则是“提前7天20:00放票,当天不可预约”,而且9月30日20:00放10月7日的票,10月1日的票早就抢光了——这就是CoT版的幻觉梦魇

更可怕的是,这种幻觉是**“有说服力的”:因为推理步骤看起来逻辑清晰,游客很可能会相信它,然后白白熬夜等票,或者第二天兴冲冲地跑到故宫却进不去——这在医疗、法律、金融等高风险领域**是绝对不能容忍的。

1.2 纯无理由试错RL智能体的“样本效率诅咒”与“可解释性缺失”

看完了纯静态推理LLM的天花板,我们再看看另一边的纯无理由试错RL智能体。

强化学习(RL)的核心思想是:让一个智能体(Agent)环境(Environment) 中不断试错(Action),根据环境返回的奖励(Reward) 更新自己的策略(Policy)(也就是“在什么状态下采取什么行动”的规则),最终学会最大化长期累计奖励的策略——这就像教一只小狗学握手:你喊“握手”,小狗如果抬起爪子,你就给它一块肉(正奖励);如果它不抬爪子,你就不给它肉,或者轻轻拍它一下(负奖励);经过无数次试错,小狗就学会了“听到‘握手’就抬爪子”的策略。

纯无理由试错RL智能体在游戏(比如AlphaGo下围棋、AlphaStar打星际争霸2、OpenAI Five打Dota2)机器人控制(比如波士顿动力的Atlas机器人跳舞、Spot机器人开门) 等**“规则明确、可大量模拟、奖励信号清晰”** 的任务上取得了惊人的成绩——AlphaGo甚至打败了世界围棋冠军李世石和柯洁。

但纯无理由试错RL智能体也有两个无法回避的致命缺陷:

1.2.1 样本效率诅咒:需要海量的试错样本才能学会一个简单的任务

纯无理由试错RL智能体的学习过程是**“盲目的”:它没有任何“先验知识”或“推理能力”,只能靠随机尝试不同的行动,然后根据奖励信号慢慢调整策略——这就像教一只没有见过任何门、不知道门是用来干什么的、甚至不知道爪子可以用来抓东西的小狗学开门:它可能会先在门旁边乱转、乱叫、啃门、撞门,经过成千上万次甚至上亿次的试错,才偶然发现“用爪子抓门把手然后往下拉”可以开门——这个过程需要消耗海量的计算资源和时间**,样本效率极低。

举个更贴近LLM的例子:假设你想教一个纯无理由试错的RL智能体(这个智能体的“眼睛”是浏览器API,“手”是浏览器操作工具,比如点击、输入、滚动)“帮用户查故宫博物院今天的开馆时间”——它可能会先随机打开百度,输入“今天吃什么”,然后点击第一个结果(一个美食博主的视频),看了5分钟(这在模拟环境中可能只需要几毫秒,但在真实环境中需要很长时间),发现没有奖励(因为我们的奖励函数是“找到并输出故宫博物院今天的开馆时间得+100分,每执行一个无关操作得-1分,超时30分钟得-1000分”),然后关掉视频,输入“今天的天气”,点击第一个结果(中央气象台的网站),又浪费了时间……经过几十万次甚至上百万次的试错,它才可能偶然输入“故宫博物院今天的开馆时间”,点击故宫博物院的官方网站,找到开馆时间——这个样本效率,在真实环境中是完全不可行的。

1.2.2 可解释性缺失:不知道智能体为什么要采取某个行动

纯无理由试错RL智能体的另一个致命缺陷是**“完全黑箱”:即使它学会了一个任务,你也不知道它“为什么要在某个状态下采取某个行动”**——它的策略是通过无数次试错“进化”出来的,没有任何“自然语言的推理过程”或“可解释的规则”。

继续用小狗学开门的例子:假设这只小狗终于学会了开门,你想知道它为什么要“用左爪子抓门把手的中间位置然后往下拉10厘米”——你只能问小狗,但小狗不会说话;你只能通过观察它的行为来猜测,但你永远无法确定它的“真实想法”——这就是可解释性缺失

同样在高风险领域,比如医疗机器人给病人做手术:如果医疗机器人的手术刀突然偏了1厘米,你不知道它为什么要偏——是传感器坏了?还是策略有问题?还是故意的?这是绝对不能容忍的。

1.3 二元对立的困境:纯推理和纯行动,都不是AGI的正确道路

看到这里,你可能会发现:纯静态推理LLM和纯无理由试错RL智能体,就像**“盲人摸象”故事里的两个盲人**——一个摸到了大象的耳朵(纯推理),说“大象像一把扇子”;一个摸到了大象的腿(纯行动),说“大象像一根柱子”——他们都只看到了AGI的一部分,没有看到全貌。

纯静态推理LLM有“先验知识”和“推理能力”,但没有“环境交互能力”和“实时/动态/外部知识获取能力”;纯无理由试错RL智能体有“环境交互能力”和“实时/动态/外部知识获取能力”,但没有“先验知识”和“推理能力”——两者各有所长,也各有所短,单独使用任何一个,都无法实现“可解释、可校正、信息准确、能力泛化”的通用人工智能

那有没有一种方法,能把纯静态推理LLM的“先验知识”和“推理能力”,和纯无理由试错RL智能体的“环境交互能力”和“实时/动态/外部知识获取能力” 结合起来,实现1+1>2的协同效应呢?

答案是肯定的——这就是我们今天要讲的ReAct模式(Reasoning + Acting,推理与行动协同模式)


问题描述

在ReAct模式诞生之前,AI领域面临的核心问题可以总结为以下三个维度:

1.3.1 知识维度:如何让LLM突破“静态知识诅咒”,获取实时/动态/外部知识?
1.3.2 能力维度:如何让RL智能体突破“样本效率诅咒”,利用LLM的先验知识和推理能力快速学习?
1.3.3 可解释性维度:如何让AI的决策和行动过程“可解释、可校正”,避免“黑箱式操作”?

问题解决:ReAct模式的核心思路——“先想再做、做完再想、循环迭代”

ReAct模式的核心思路非常简单,也非常符合人类的思考和行动习惯——“先想再做、做完再想、循环迭代”

当人类遇到一个复杂问题时,不会直接给出答案,也不会盲目试错——而是会:

  1. 先想(Reasoning):生成一个清晰的推理步骤,比如“我现在需要解决什么问题?我需要哪些信息才能解决这个问题?我可以通过什么方式获取这些信息?”;
  2. 再做(Acting):根据推理步骤,采取一个具体的行动,比如“打开故宫博物院的官方网站”、“在搜索框输入‘今天的开馆时间’”、“调用百度地图API查询故宫博物院的实时人流量”;
  3. 做完再想(Observing + Re-reasoning):观察行动带来的结果(比如“故宫博物院官方网站显示今天的开馆时间是8:30-17:00(16:00停止入场)”),然后根据观察结果重新推理——比如“好的,我已经获取了开馆时间,接下来我需要获取门票预约剩余量,我可以通过调用故宫博物院门票预约API获取”;
  4. 循环迭代:重复“想-做-观察-再想”的过程,直到问题解决为止。

把人类的这个思考和行动习惯,用自然语言控制的方式,移植到大语言模型上,就得到了ReAct模式的Agent(智能体)

ReAct Agent的工作流程可以用一个简单的公式表示:
ReAct Agent=LLM+工具接口+记忆模块+推理-行动-观察循环\text{ReAct Agent} = \text{LLM} + \text{工具接口} + \text{记忆模块} + \text{推理-行动-观察循环}ReAct Agent=LLM+工具接口+记忆模块+推理-行动-观察循环

继续用故宫门票的例子,看看ReAct Agent是怎么工作的:

用户输入(Question, Q):现在(假设提问时间为202X年10月1日08:25)我在北京,突然想去故宫博物院参观,请问今天的开馆时间是多少?现在还能预约今天的门票吗?如果能,怎么预约?

ReAct Agent的记忆模块初始状态(Memory, M0)

  • 系统提示词(System Prompt):你是一个专业的北京旅游ReAct智能助手,你可以使用以下工具:

    1. search_web(query):通过百度搜索Web信息,返回前3个相关结果的标题和摘要;
    2. call_api(api_name, params):调用指定的API获取信息,当前可用的API有:
      • palace_museum_opening_hours(date):查询故宫博物院指定日期的开馆时间和停止入场时间,date格式为YYYY-MM-DD
      • palace_museum_ticket_availability(date, time):查询故宫博物院指定日期指定时间的门票预约剩余量,date格式为YYYY-MM-DDtime格式为HH:MM
      • palace_museum_ticket_booking_url(date):获取故宫博物院指定日期的门票预约官方URL;
    3. calculate(expression):计算数学表达式,返回结果;
    4. get_current_datetime():获取当前的日期和时间,返回格式为YYYY-MM-DD HH:MM:SS

    你的工作流程是:

    1. 先生成一个清晰的推理步骤(标记为[Thought]);
    2. 再根据推理步骤,选择一个合适的工具,生成工具调用指令(标记为[Action]),工具调用指令的格式必须是工具名(参数1=值1, 参数2=值2, ...)
    3. 然后观察工具返回的结果(标记为[Observation]);
    4. 重复步骤1-3,直到你有足够的信息回答用户的问题;
    5. 最后生成最终答案(标记为[Answer])。

    注意:

    • 不要编造任何信息,所有信息必须来自工具返回的结果或你的先验知识(如果你的先验知识足够准确,不需要调用工具也可以直接回答,但如果涉及实时/动态/外部知识,必须调用工具);
    • 推理步骤要清晰、简洁、符合逻辑;
    • 工具调用指令的格式必须正确,否则工具无法执行;
    • 最终答案要全面、准确、易懂。

ReAct Agent的推理-行动-观察循环(Step 1)

  • [Thought]:我现在需要解决用户的三个问题:1. 今天的开馆时间;2. 现在还能预约今天的门票吗;3. 如果能,怎么预约。首先,我需要知道“今天”的具体日期和“现在”的具体时间,因为用户说“突然想去”,而且涉及实时信息。我可以使用get_current_datetime()工具获取这些信息。
  • [Action]:get_current_datetime()
  • [Observation]:202X-10-01 08:25:30

ReAct Agent的记忆模块更新(M1 = M0 + Step 1的内容)

ReAct Agent的推理-行动-观察循环(Step 2)

  • [Thought]:好的,我已经获取了当前的日期和时间:202X-10-01 08:25:30。接下来,我需要解决第一个问题:今天的开馆时间。我可以使用palace_museum_opening_hours(date=202X-10-01)工具获取这些信息。
  • [Action]:call_api(api_name=palace_museum_opening_hours, params={“date”: “202X-10-01”})
  • [Observation]:故宫博物院202X-10-01的开馆时间为08:30-17:00,停止入场时间为16:00(注:国庆黄金周期间开放时间与旺季一致,无特殊调整)。

ReAct Agent的记忆模块更新(M2 = M1 + Step 2的内容)

ReAct Agent的推理-行动-观察循环(Step 3)

  • [Thought]:好的,我已经获取了第一个问题的答案:今天的开馆时间是08:30-17:00,停止入场时间是16:00。接下来,我需要解决第二个问题:现在(202X-10-01 08:25:30)还能预约今天的门票吗?我可以使用palace_museum_ticket_availability(date=202X-10-01, time=08:25)工具获取这些信息。
  • [Action]:call_api(api_name=palace_museum_ticket_availability, params={“date”: “202X-10-01”, “time”: “08:25”})
  • [Observation]:故宫博物院202X-10-01的门票预约剩余量为:成人票0张,学生票0张,老年票0张,儿童票0张(注:国庆黄金周期间故宫门票提前7天20:00放票,当天不可预约,所有门票已售罄)。

ReAct Agent的记忆模块更新(M3 = M2 + Step 3的内容)

ReAct Agent的推理-行动-观察循环(Step 4,循环结束)

  • [Thought]:好的,我已经获取了第二个问题的答案:现在(202X-10-01 08:25:30)不能预约今天的门票,因为所有门票已售罄,而且国庆黄金周期间当天不可预约。既然第二个问题的答案是“不能”,第三个问题“如果能,怎么预约”就不需要回答了。我现在有足够的信息回答用户的问题了。
  • [Answer]:您好!根据当前的实时信息:
    1. 今天的开馆时间:故宫博物院202X-10-01的开馆时间为08:30-17:00,停止入场时间为16:00(国庆黄金周期间无特殊调整);
    2. 门票预约情况:很遗憾,故宫博物院202X-10-01的所有门票(成人票、学生票、老年票、儿童票)已全部售罄,而且国庆黄金周期间门票提前7天20:00放票,当天不可预约;
    3. 建议:您可以提前预约明天(202X-10-02)或之后的门票,预约官方URL为:[调用palace_museum_ticket_booking_url(date=202X-10-02)获取的URL](不过这里我们因为已经知道今天的票售罄,就不再额外调用工具了,您如果需要明天的预约URL,可以再告诉我)。

ReAct Agent的记忆模块最终状态(M4 = M3 + Step 4的内容)

看到这里,你可能会觉得:“哇,这个ReAct Agent太厉害了!它既不会编造信息,也不会盲目试错,推理过程清晰透明,行动结果准确可靠!”——没错,这就是ReAct模式的魅力所在。


边界与外延

在深入了解ReAct模式的核心原理之前,我们需要先明确它的边界与外延——也就是它能做什么不能做什么和其他类似模式的区别是什么

1.4.1 边界:ReAct模式的适用范围和局限性
1.4.1.1 适用范围

ReAct模式适用于所有需要“推理+环境交互+外部知识获取”的复杂任务,具体包括但不限于:

  • 信息检索与问答:比如查实时天气、股票价格、新闻、电商平台商品价格、科研论文信息;
  • 工具使用与任务自动化:比如帮用户订机票/酒店/火车票、帮用户写邮件/报告/代码、帮用户整理文件/数据、帮用户操作浏览器/数据库/软件;
  • 具身智能与机器人控制:比如让机器人帮用户开门、拿东西、做饭、打扫卫生;
  • 游戏与策略制定:比如让AI打文字冒险游戏、策略游戏、实时对战游戏;
  • 高风险领域的决策辅助:比如医疗诊断辅助、法律案件分析辅助、金融投资决策辅助(注意:只是辅助,不能代替人类做最终决策)。
1.4.1.2 局限性

ReAct模式虽然强大,但也不是万能的,它有以下几个局限性

  1. 依赖LLM的基础能力:ReAct模式的核心是LLM,如果LLM的自然语言理解能力、自然语言生成能力、推理能力、工具调用指令生成能力不强,ReAct Agent的表现也会很差——比如用一个小参数的LLM(比如GPT-2、LLaMA-7B)做ReAct Agent,它可能连工具调用指令的格式都生成不对;
  2. 依赖工具的质量和数量:ReAct Agent的能力边界取决于它能使用的工具的质量和数量——如果工具的API不稳定、返回结果不准确、工具数量太少,ReAct Agent的表现也会很差;
  3. 推理-行动-观察循环的效率问题:ReAct Agent的推理-行动-观察循环需要消耗一定的时间和计算资源——如果循环次数太多(比如几十次甚至上百次),ReAct Agent的响应速度会很慢,用户体验会很差;
  4. 奖励信号设计的问题(如果结合RL的话):虽然纯ReAct模式不需要RL(只需要Few-Shot提示词或Zero-Shot提示词),但如果要让ReAct Agent在更复杂的任务上表现更好,可能需要结合RL——这时候就会遇到RL的老问题:奖励信号设计的问题;
  5. 安全与隐私问题:ReAct Agent可以调用外部工具、操作环境、获取外部信息——这就带来了安全与隐私问题:比如ReAct Agent可能会调用恶意工具、窃取用户的隐私信息、破坏环境(比如删除用户的文件、格式化用户的硬盘)。
1.4.2 外延:ReAct模式的衍生模式和与其他技术的结合

ReAct模式诞生之后,AI领域的研究者和工程师们对它进行了大量的改进和扩展,衍生出了很多衍生模式,也和很多其他技术(比如思维链(CoT)、自洽性(Self-Consistency)、检索增强生成(RAG)、强化学习(RL)、多模态大语言模型(MLLM))结合起来,形成了更强大的范式。

1.4.2.1 衍生模式

ReAct模式的衍生模式主要包括以下几种:

  1. ReAct + CoT(RCOT):把ReAct模式和思维链(CoT)结合起来,让ReAct Agent在调用工具之前,生成更详细的思维链推理步骤——这能进一步提升ReAct Agent的准确率和可解释性;
  2. ReAct + Self-Consistency(RSC):把ReAct模式和自洽性(Self-Consistency)结合起来,让ReAct Agent生成多个不同的推理-行动-观察循环路径,然后选择最一致的最终答案——这能进一步提升ReAct Agent的准确率;
  3. ReAct + RAG(RRAG):把ReAct模式和检索增强生成(RAG)结合起来,让ReAct Agent在调用Web搜索工具或API工具之前,先从本地知识库中检索相关信息——这能减少工具调用的次数,提升响应速度,同时也能保护用户的隐私(因为本地知识库不需要调用外部工具);
  4. Tree of Thoughts + ReAct(ToT-ReAct):把Tree of Thoughts(思维树)模式和ReAct结合起来,让ReAct Agent生成一个“推理-行动树”,而不是单一的“推理-行动-观察循环路径”,然后通过剪枝和搜索,找到最优的路径——这能进一步提升ReAct Agent在复杂任务上的表现;
  5. Reflexion + ReAct(ReFlex):把Reflexion(反思)模式和ReAct结合起来,让ReAct Agent在完成一个任务之后,生成一个“反思报告”,分析自己的成功和失败之处,然后把反思报告存入记忆模块,在下次遇到类似任务时参考——这能进一步提升ReAct Agent的泛化能力和学习能力。
1.4.2.2 与其他技术的结合

ReAct模式还可以和很多其他技术结合起来,形成更强大的系统:

  1. 与多模态大语言模型(MLLM)结合:让ReAct Agent不仅能处理文本信息,还能处理图像、音频、视频等多模态信息——比如让ReAct Agent帮用户“拍一张照片,识别照片中的植物是什么,然后查一下这种植物的养护方法”;
  2. 与强化学习(RL)结合:让ReAct Agent通过RL不断优化自己的推理-行动策略——比如让ReAct Agent在文字冒险游戏中不断试错,根据游戏返回的奖励(比如“找到宝藏得+100分,遇到怪物得-50分,超时得-1000分”)优化自己的推理-行动策略;
  3. 与联邦学习(Federated Learning)结合:让多个ReAct Agent在不同的设备上(比如用户的手机、电脑、智能家居设备)共同学习,同时保护用户的隐私——因为联邦学习不需要把用户的数据上传到中央服务器;
  4. 与区块链(Blockchain)结合:让ReAct Agent的推理-行动-观察循环过程记录在区块链上,实现“不可篡改、可追溯”——这在高风险领域(比如医疗、法律、金融)非常有用;
  5. 与物联网(Internet of Things, IoT)结合:让ReAct Agent控制各种智能家居设备、工业设备、医疗设备——比如让ReAct Agent“根据当前的天气和室内温度,自动调整空调的温度和风速;根据用户的睡眠习惯,自动关闭灯光和电视;根据用户的健康数据,自动调整智能手表的监测频率”。

本章小结

在这一章中,我们首先穿越到ReAct论文发表前的2021-2022年初,了解了当时AI领域最火的两个方向——纯静态推理LLM纯无理由试错RL智能体——各自的“天花板困境”:

  • 纯静态推理LLM有“静态知识诅咒”(无法获取实时/动态/外部知识)和“幻觉梦魇”(推理过程不透明,容易生成虚假信息);
  • 纯无理由试错RL智能体有“样本效率诅咒”(需要海量的试错样本才能学会一个简单的任务)和“可解释性缺失”(不知道智能体为什么要采取某个行动)。

然后,我们提出了ReAct模式的核心思路——“先想再做、做完再想、循环迭代”,这完全符合人类的思考和行动习惯。

接着,我们用一个**“用户购买故宫门票遇到问题的ReAct智能助手全流程案例”**,直观地展示了ReAct Agent的工作流程。

最后,我们明确了ReAct模式的边界与外延

  • 边界:ReAct模式适用于所有需要“推理+环境交互+外部知识获取”的复杂任务,但也有依赖LLM的基础能力、依赖工具的质量和数量、推理-行动-观察循环的效率问题、奖励信号设计的问题(如果结合RL的话)、安全与隐私问题等局限性;
  • 外延:ReAct模式有很多衍生模式(比如RCOT、RSC、RRAG、ToT-ReAct、ReFlex),也可以和很多其他技术(比如MLLM、RL、联邦学习、区块链、物联网)结合起来,形成更强大的范式。

在下一章中,我们将深入剖析ReAct模式的核心概念解析,包括:

  • 什么是“推理(Reasoning)”?什么是“行动(Acting)”?什么是“观察(Observing)”?
  • 这些概念之间的关系是什么?
  • ReAct模式的概念结构与核心要素组成是什么?
  • 我们还会用Mermaid架构图/流程图/ER图markdown表格,直观地展示这些概念之间的关系。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐