深度解析 ReAct 框架:AI Agent Harness Engineering 推理与行动的底层逻辑
深度解析 ReAct 框架:AI Agent Harness Engineering 推理与行动的底层逻辑
1. 引入与连接:当AI从"猜答案"走向"解决问题的探险家"
1.1 引人入胜的开场:被困在推理实验室里的大模型
想象一下,你给最顶尖的大模型(比如GPT-4或Claude 3)出了一道简单但需要「查资料+动手」的小学生数学题:
小明的爷爷是1948年2月29日出生的,请问到2025年他过了几个真正的生日?提示:真正的生日是2月29日。
没有任何外部工具的大模型会怎么做?它可能会先回忆:「闰年是能被4整除,整百年能被400整除」——这个知识点记对了。然后算从1948到2025的年份差:77岁。接下来数闰年:「1948本身是,2024是最后一个在他77岁前的?不对不对,2025年小明爷爷才过2024年生日后的第几天?题目说的是到2025年,那应该算到2025年之前的2月29日?哦等2024是闰年,有2月29日,那1948-2024之间有多少个?」
如果你看过这类评测的结果(比如GPT-4在没有工具时做常识验证/工具类数学/事实检索的准确率,我们后面会引用具体数据),会发现它大概率会算错:可能漏了1900整百年不是闰年的判断逻辑(虽然这里不涉及但如果换年份可能就错了),也可能数错区间(比如从1948+4=1952算,到2024是(2024-1952)/4 +1= 72/4+1=18+1=19,对吗?但如果大模型直接数77/4≈19.25,取整19,结果可能对了,但过程是猜的!)
再换一道更复杂的「日常任务型」问题:
我住在上海静安区的南京西路附近,明天下午3点要去参加淮海中路的淮海公园咖啡节。请帮我:1. 查明天上海静安区和黄浦区淮海中路一带的天气;2. 查咖啡节明天下午3点左右有没有特别需要预约的活动;3. 推荐一条最快的公共交通路线(不要转线太多,避开下班高峰前的拥挤预警);4. 顺便查一下咖啡节的官方小程序预约明天入园的入口。
现在的大模型,即使你不限制它「不许用外部工具」,它也很难自然、连贯、正确、透明地完成这四件事——可能会编造天气数据(比如「明天上海多云,22-28度」但实际查下来是雷阵雨转暴雨),编造咖啡节活动(比如「有Blue Bottle的专属拉花体验」但明天下午只有星巴克臻选的手冲大师课且早约满了),编造公共交通路线(比如「从南京西路坐地铁2号线直接到淮海中路站,全程10分钟」但实际早高峰前2号线南京西路到人民广场段已经开始限流了,应该推荐12号线换13号线转一次且避开换乘限流),甚至编造不存在的小程序入口链接。
为什么会这样?因为传统的大语言模型(LLM)本质上是一个「基于统计概率的文本生成器」——它的所有「知识」都来自于训练数据,训练数据截止后的信息它不知道;它的「解决问题的能力」本质上是「模仿训练数据中解决类似问题的文本模式」,而不是真正的「规划-推理-行动-反思-调整」的人类式认知循环。
这个时候,ReAct框架(Reasoning + Acting,推理+行动)就像给这个「被困在文本训练实验室里的大模型探险家」打开了一扇门,给了它一张「地图(知识图谱/搜索引擎API)」、一个「指南针(推理链)」、一个「背包(工具调用库)」、甚至一个「笔记本(反思日志/记忆模块)」——让它从「只能凭记忆和直觉写答案」的「书呆子学者」,变成了「会查资料、会动手、会思考哪里错了、会调整策略」的「全能问题解决专家」。
1.2 与读者已有知识建立连接:从Chain-of-Thought到Agent的认知进化
如果你之前关注过AI大模型的推理能力,那你一定听说过Chain-of-Thought(CoT,思维链)技术——简单来说,CoT就是让大模型在输出最终答案之前,先把「思考过程」一步步写出来。比如刚才那道小明爷爷的生日题,用CoT提示词(Prompt)的话,就是:
请一步步思考下面的问题,然后给出最终答案:
小明的爷爷是1948年2月29日出生的,请问到2025年他过了几个真正的生日?提示:真正的生日是2月29日。
大模型的CoT输出可能会是:
- 首先回忆闰年的定义:公历年份是4的倍数,且不是100的倍数,或者是400的倍数的,是闰年,只有闰年才有2月29日。
- 确定问题的时间范围:小明爷爷1948年出生,到2025年,也就是说他过的生日必须是1948年之后、2025年之前的2月29日?或者包括1948年?不对,人出生当天算不算过生日?题目说的是「真正的生日」,通常指出生后每过一次对应的日期才算,所以1948年不算。
- 计算第一个有效闰年:1948+4=1952。
- 计算最后一个有效闰年:2025年之前的最后一个闰年是2024年(因为2024能被4整除,且不是整百年)。
- 计算闰年的个数:等差数列求和公式,项数=(末项-首项)/公差 +1,这里首项=1952,末项=2024,公差=4,所以项数=(2024-1952)/4 +1=72/4+1=18+1=19。
- 所以最终答案是19。
CoT技术确实极大地提升了大模型的推理能力(比如在算术推理、常识推理、代码生成等任务上,CoT的准确率比直接输出答案高30%-50%——后面会引用OpenAI和Google DeepMind的具体实验数据),但它有一个致命的局限性:
CoT所有的推理都依赖于大模型的「内部知识」——如果内部知识有错误、有缺失、有过时,那么推理的结果再漂亮,也是「基于错误前提的正确推理」,最终答案还是错的。
比如刚才那道如果把小明爷爷的出生年份改成1896年,到2000年,CoT提示词下的大模型可能会算错:
- 首先回忆闰年的定义…(对的)
- 时间范围:1896+4=1900(第一个有效),2000(最后一个有效)
- 项数=(2000-1900)/4 +1=100/4+1=25+1=26
- 最终答案是26
但实际上,1900是整百年,不能被400整除,不是闰年,所以第一个有效闰年是1904,最后一个是2000,项数=(2000-1904)/4 +1=96/4+1=24+1=25。这就是CoT的「内部幻觉」(Internal Hallucination)问题——即使推理过程逻辑严谨,只要内部知识有误,结果就错。
那怎么解决这个问题呢?
- 第一种思路:扩大大模型的训练数据规模、提高训练数据质量、延长训练数据的截止时间——但这成本极高(GPT-4的训练成本据估计超过1亿美元),而且永远有「训练数据截止后的新信息」(比如2025年的咖啡节信息,如果GPT-4的训练数据截止到2024年10月,它就不知道),也永远有「大模型记不住的细节」(比如某个地区某天某个时段的地铁限流情况)。
- 第二种思路:给大模型「外部工具调用能力」——比如让它能调用搜索引擎、知识图谱、计算器、天气API、地图API、代码解释器等。但早期的「纯工具调用」(Toolformer是早期的代表,后面会详细讲)也有问题:它要么是「调用工具之后直接生成答案」(没有推理过程,不透明,也容易错用工具),要么是「推理和行动完全分离」(比如先写一段推理,然后调用一个工具,然后再写一段推理,然后再调用一个工具,但推理和行动之间没有逻辑上的因果衔接,比如推理说「我需要查明天上海的天气」,但行动调用的是「北京明天的天气」)。
那有没有一种方法,能把CoT的「透明、连贯的内部推理」和工具调用的「实时、准确的外部信息获取」完美结合起来?
有的!这就是Google DeepMind的研究团队在2022年10月提出的ReAct框架——ReAct的核心思想非常简单,但非常深刻:
让大模型像人类解决问题一样,「推理」(Reason)和「行动」(Act)交替进行、循环往复:推理是为了「决定下一步该做什么」(比如「我需要先查明天上海静安区的天气」),行动是为了「获取新的外部信息」(比如调用天气API查明天的天气),获取的新信息又会成为下一轮推理的「输入」(比如「哦明天上海静安区和黄浦区下午3点有雷阵雨转暴雨,那我需要提醒用户带伞,而且公共交通要避开地面拥堵的路段」)——这样就形成了一个**「规划→推理→行动→观察→反思→调整→再规划→…」的完整的人类式认知循环**。
1.3 学习价值与应用场景预览
1.3.1 学习价值
学习ReAct框架,你能获得什么?
- 对AI Agent(智能体)的本质理解:什么是真正的AI Agent?不是能调用工具的大模型,而是能自主形成认知循环的大模型——ReAct框架就是AI Agent认知循环的「最小可行实现」(MVP)。
- Prompt Engineering(提示词工程)的进阶技能:ReAct的提示词设计有什么技巧?怎么让大模型自然地交替进行推理和行动?怎么设计「思考→行动→观察」的模板?怎么处理工具调用失败的情况?
- Tool Integration(工具集成)的底层逻辑:怎么把大模型和各种外部工具(比如搜索引擎、知识图谱、计算器、代码解释器、数据库、API)无缝集成?怎么设计工具的描述(Tool Description)让大模型知道「什么时候用这个工具」「怎么用这个工具」「这个工具能返回什么」?
- Harness Engineering( harness在这里可以翻译成「驾驭」或「编排」,指的是把大模型的推理能力、工具调用能力、记忆能力、反思能力等各种能力「编排」成一个完整的、可控制的系统)的核心方法论:ReAct框架怎么和记忆模块(比如短期记忆、长期记忆、向量数据库)结合?怎么和反思模块(比如Self-Refine、Reflexion)结合?怎么和规划模块(比如Tree-of-Thought、Graph-of-Thought)结合?
- 解决AI Agent实际问题的能力:怎么用ReAct框架解决「事实检索增强的问答」「工具增强的数学推理」「多步骤的日常任务规划」「代码生成与调试」「科研文献检索与综述」等实际问题?
1.3.2 应用场景预览
ReAct框架已经被广泛应用于各种AI Agent产品和研究中,以下是几个典型的应用场景:
- 智能客服/智能助手:比如OpenAI的GPT-4o、Anthropic的Claude 3.5 Sonnet、Google的Gemini Advanced、字节跳动的豆包Pro、阿里巴巴的通义千问Max等,都内置了ReAct或类似的框架——可以帮你查天气、订机票、订酒店、叫外卖、预约医院、预约快递、解答法律/医疗/金融等专业问题(当然需要专业的知识图谱和API支持)。
- 智能编程助手:比如GitHub Copilot X、Cursor、CodeLlama + ReAct等——可以帮你生成代码、调试代码、重构代码、解释代码、搜索Stack Overflow的解决方案(比如你写一段有bug的Python代码,它会先推理「这个bug可能是什么原因造成的」,然后调用代码解释器运行代码看报错信息,然后搜索Stack Overflow的类似报错,然后根据搜索结果调整代码,然后再运行代码验证,循环往复直到bug解决)。
- 智能科研助手:比如Semantic Scholar的Semantic Reader + ReAct、Elsevier的Scopus AI + ReAct、以及各种学术Agent(比如ResearchGPT、SciPhi Agent等)——可以帮你检索科研文献、总结科研文献、对比不同文献的观点、生成科研综述、提出科研假设、设计科研实验、甚至生成科研论文的初稿(当然需要你自己验证和修改)。
- 智能教育助手:比如 Khanmigo、Duolingo Max、Coursera的AI Coach + ReAct等——可以帮你解答学习问题、制定学习计划、批改作业、提供个性化的学习反馈、模拟考试、甚至一对一辅导(比如你做一道几何题不会,它会先推理「你可能卡在哪个知识点上」,然后调用几何画板API画一张图给你看,然后一步步引导你思考,而不是直接告诉你答案)。
- 智能决策助手:比如各种投资决策Agent、医疗诊断Agent、法律决策Agent等——可以帮你收集和分析相关的外部信息(比如投资决策Agent会收集股票的历史数据、实时新闻、公司财报、宏观经济数据等),然后进行推理和决策,然后根据新的信息不断调整决策(当然这类Agent需要严格的合规性和安全性验证,不能直接用于实际决策)。
1.4 学习路径概览
为了让你系统、深入地理解ReAct框架,我们将按照知识金字塔的结构,从「基础层」到「整合层」,层层递进地展开:
- 引入与连接(当前章节):唤起你的兴趣,和你已有的CoT、工具调用等知识建立连接,预览学习价值和应用场景,介绍学习路径。
- 概念地图:建立ReAct框架的整体认知框架,介绍核心概念和关键术语,画出概念间的层次与关系,确定ReAct的学科定位与边界。
- 基础理解:用生活化的比喻和类比解释ReAct的核心思想,用简化的模型和直观的示例展示ReAct的工作流程,澄清常见的误解。
- 层层深入:从「基本原理与运作机制」(第一层),到「细节、例外与特殊情况」(第二层),到「底层逻辑与理论基础」(第三层),到「高级应用与拓展思考」(第四层),逐步增加复杂度。
- 多维透视:从「历史视角」(ReAct的发展脉络与演变)、「实践视角」(ReAct的应用场景与案例)、「批判视角」(ReAct的局限性与争议)、「未来视角」(ReAct的发展趋势与可能性)四个角度理解ReAct。
- 实践转化:教你怎么用ReAct框架解决实际问题——包括应用原则与方法论、实际操作步骤与技巧、常见问题与解决方案、以及一个完整的实战演练项目(比如用Python + LangChain + OpenAI GPT-3.5-turbo + SerpAPI(搜索引擎API)+ OpenWeatherMap API(天气API)+ Google Maps Platform API(地图API)实现一个「上海咖啡节智能助手」)。
- 整合提升:回顾和强化核心观点,重构和完善知识体系,给你留一些思考问题和拓展任务,推荐一些学习资源和进阶路径。
2. 概念地图:建立ReAct框架的整体认知框架
2.1 核心概念与关键术语
在深入学习ReAct框架之前,我们需要先明确一些核心概念和关键术语——这些概念和术语是我们后续讨论的基础,必须准确理解。
2.1.1 核心概念
- ReAct框架:Reasoning + Acting的缩写,是Google DeepMind在2022年10月提出的一种AI Agent认知框架,核心思想是让大模型交替进行推理和行动,形成「规划→推理→行动→观察→反思→调整→再规划→…」的完整认知循环,从而提升大模型的推理准确性、事实正确性、可解释性和任务完成能力。
- AI Agent(智能体):在人工智能领域,Agent是指能够感知环境(Perceive Environment)、根据感知到的信息进行推理和决策(Reason and Decide)、然后采取行动(Act)影响环境、并根据行动的结果(观察,Observe)不断调整自己的行为的实体。一个完整的AI Agent通常包含以下几个模块:
- 感知模块(Perception Module):负责感知外部环境(比如通过摄像头、麦克风、传感器、API、文本输入等)。
- 推理/决策模块(Reasoning/Decision Module):负责根据感知到的信息和内部知识进行推理和决策(比如决定下一步该做什么)。
- 行动模块(Action Module):负责执行决策(比如调用工具、生成文本、控制机器人等)。
- 记忆模块(Memory Module):负责存储感知到的信息、推理的过程、行动的结果等(比如短期记忆、长期记忆、向量数据库)。
- 反思模块(Reflection Module):负责反思自己的推理和行动是否正确,是否需要调整(比如Self-Refine、Reflexion)。
- Chain-of-Thought(CoT,思维链):让大模型在输出最终答案之前,先把「思考过程」一步步写出来的技术,能够极大地提升大模型的推理准确性和可解释性,但存在「内部幻觉」的问题。
- Toolformer:Meta AI在2023年2月提出的一种让大模型自主学习调用外部工具的技术(在ReAct之后提出,但早期的纯工具调用思路其实在ReAct之前就有了),通过在训练数据中加入「工具调用的示例」,让大模型学会「什么时候用工具」「怎么用工具」,但Toolformer的推理和行动是相对分离的。
- 认知循环(Cognitive Cycle):人类或AI Agent解决问题时的基本循环过程,通常包括「感知→推理→决策→行动→观察→反思→调整→再感知→…」——ReAct框架就是AI Agent认知循环的「最小可行实现」(只包含「推理→决策→行动→观察→再推理→…」,记忆和反思是可选的扩展)。
- 内部幻觉(Internal Hallucination):大模型基于自己的「内部知识」生成的看似合理但实际上是错误的或不存在的信息——比如编造天气数据、编造咖啡节活动、编造不存在的小程序入口链接等。
- 外部工具(External Tool):大模型可以调用的、能够提供实时、准确、外部信息或执行特定任务的程序或服务——比如搜索引擎(SerpAPI、Google Search API)、知识图谱(Wikidata、DBpedia)、计算器(Wolfram Alpha API、Python代码解释器)、天气API(OpenWeatherMap API)、地图API(Google Maps Platform API、高德地图API)、代码解释器(OpenAI Code Interpreter、LangChain Python REPL Tool)、数据库(SQLite、PostgreSQL、MySQL)、企业内部API等。
- 观察(Observation):大模型调用外部工具后得到的返回结果——这个结果会成为下一轮推理的「输入」。
- 提示词模板(Prompt Template):为了让大模型自然地交替进行推理和行动,我们设计的一种固定格式的提示词——通常包括「角色设定」「任务描述」「工具描述」「ReAct工作流程示例」「要求」等部分。
- 思考→行动→观察循环(Thought→Action→Observation Cycle,简称TAO循环):ReAct框架的核心循环——「思考(Thought)」是推理,决定下一步该做什么;「行动(Action)」是调用外部工具;「观察(Observation)」是工具的返回结果;然后「观察」又会成为下一轮「思考」的输入,循环往复直到任务完成。
2.1.2 关键术语
- Harness Engineering(驾驭/编排工程):指的是把大模型的推理能力、工具调用能力、记忆能力、反思能力等各种能力「编排」成一个完整的、可控制的、可扩展的系统的过程——ReAct框架是Harness Engineering的核心方法论之一。
- Prompt Engineering(提示词工程):指的是设计和优化提示词,让大模型更好地完成特定任务的过程——ReAct的提示词设计是Prompt Engineering的进阶内容。
- Tool Integration(工具集成):指的是把大模型和各种外部工具无缝集成的过程——ReAct框架的Tool Integration有特定的要求(比如工具的描述要清晰、工具的返回结果要结构化等)。
- Memory Augmented LLM(记忆增强大语言模型):指的是加入了记忆模块的大语言模型——ReAct框架可以和记忆增强大语言模型结合,提升长任务的完成能力。
- Self-Refine(自我优化):一种让大模型对自己的输出进行反思和优化的技术——ReAct框架可以和Self-Refine结合,提升输出的质量。
- Reflexion(反思):一种比Self-Refine更深入的让大模型对自己的整个认知循环(思考→行动→观察→…)进行反思和调整策略的技术——ReAct框架可以和Reflexion结合,提升复杂任务的完成能力。
- Tree-of-Thought(ToT,思维树):一种让大模型生成多个推理路径,然后对每个路径进行评估,选择最好的路径继续推理的技术——ReAct框架可以和ToT结合,提升复杂推理任务的完成能力。
- Graph-of-Thought(GoT,思维图):一种比ToT更灵活的让大模型**生成推理图(节点是思考/行动/观察,边是逻辑关系)**的技术——ReAct框架可以和GoT结合,提升更复杂的、非线性的任务的完成能力。
- Agent Framework(智能体框架):用于开发AI Agent的开源或商业框架——比如LangChain、AutoGPT、BabyAGI、CrewAI、LangGraph(LangChain的最新框架,专门用于构建有状态的、循环的AI Agent,非常适合ReAct)等。
- Evaluation Metric(评估指标):用于评估ReAct框架或AI Agent性能的指标——比如准确率(Accuracy)、任务完成率(Task Completion Rate)、幻觉率(Hallucination Rate)、可解释性(Interpretability)、效率(Efficiency,比如调用工具的次数、推理的时间)等。
2.2 概念间的层次与关系
为了更直观地理解ReAct框架的核心概念和关键术语之间的层次与关系,我们可以画一个概念层次结构图(Hierarchical Concept Structure Diagram):
从这个概念层次结构图中,我们可以清楚地看到:
- ReAct框架是AI Agent推理/决策模块的核心框架之一——它和CoT、ToT、GoT等框架并列,但ReAct的独特之处在于它把推理和行动(工具调用)完美结合起来,而CoT、ToT、GoT等框架主要是「纯推理框架」(虽然也可以和工具调用结合,但不是核心)。
- ReAct框架的核心是TAO循环(思考→行动→观察→…)——这个循环是AI Agent认知循环的「最小可行实现」。
- ReAct框架需要多种支撑技术——比如Harness Engineering(编排整个系统)、Prompt Engineering(设计ReAct的提示词)、Tool Integration(集成外部工具)、Memory Augmented LLM(提升长任务能力)、Self-Refine/Reflexion(提升输出质量)、Agent Framework(简化开发)等。
- ReAct框架的工具调用是「推理驱动」的——这和Toolformer的「自主学习驱动」的工具调用不同(当然Toolformer也可以和ReAct结合):ReAct的大模型是先通过推理「决定下一步该做什么,该调用哪个工具,该给工具传什么参数」,然后再调用工具;而Toolformer的大模型是通过在训练数据中学习到的「工具调用模式」来调用工具。
2.3 概念核心属性维度对比
为了更清楚地理解ReAct框架和其他相关框架(比如CoT、Toolformer、AutoGPT)之间的核心差异,我们可以画一个概念核心属性维度对比表:
| 框架/技术 | 核心思想 | 核心能力 | 是否需要外部工具 | 推理与行动的关系 | 可解释性 | 内部幻觉率 | 任务完成能力(短任务) | 任务完成能力(长任务) | 开发难度 | 代表应用场景 |
|---|---|---|---|---|---|---|---|---|---|---|
| Chain-of-Thought(CoT,思维链) | 让大模型在输出最终答案之前,先把思考过程一步步写出来 | 纯内部推理 | ❌ 不需要 | 无行动,只有推理 | ⭐⭐⭐⭐ 高(有推理过程) | ⭐⭐⭐ 中等(依赖内部知识) | ⭐⭐⭐⭐ 高(纯推理短任务) | ⭐⭐ 低(没有记忆,内部知识有限) | ⭐ 极低(只需加几句提示词) | 算术推理、常识推理、代码生成(无外部信息需求) |
| Toolformer | 让大模型自主学习调用外部工具 | 纯工具调用(附带简单推理) | ✅ 需要 | 相对分离(先可能有简单推理,然后调用工具,然后直接生成答案) | ⭐⭐ 中等(有工具调用记录,但推理过程不透明) | ⭐⭐ 低(有外部工具验证) | ⭐⭐⭐ 中等(纯工具调用短任务) | ⭐⭐ 低(没有记忆,推理过程简单) | ⭐⭐⭐⭐ 高(需要在训练数据中加入工具调用示例,或进行微调) | 事实检索增强的问答(短问题) |
| ReAct框架 | 让大模型交替进行推理和行动,形成TAO循环 | 推理驱动的工具调用 + 内部推理 | ✅ 需要 | 紧密结合(推理→行动→观察→再推理→…,每一步行动都有推理支撑,每一步推理都有观察输入) | ⭐⭐⭐⭐⭐ 极高(有完整的TAO循环记录,推理和行动都透明) | ⭐ 极低(有外部工具验证,推理过程也能发现内部知识的错误) | ⭐⭐⭐⭐⭐ 极高(短任务也能通过推理+行动提升准确率) | ⭐⭐⭐ 中等(如果有记忆模块的话可以提升到⭐⭐⭐⭐⭐) | ⭐⭐ 低(只需设计ReAct提示词,不需要微调) | 事实检索增强的问答、工具增强的数学推理、多步骤的日常任务规划、代码生成与调试 |
| AutoGPT | 让大模型自主设定目标、自主规划、自主行动、自主反思,形成完整的认知循环 | 自主目标设定 + 自主规划 + 推理驱动的工具调用 + 记忆 + 反思 | ✅ 需要 | 紧密结合(规划→推理→行动→观察→反思→调整→再规划→…) | ⭐⭐⭐⭐ 高(有完整的认知循环记录) | ⭐ 极低(有外部工具验证,有反思模块) | ⭐⭐⭐⭐ 高(和ReAct类似) | ⭐⭐⭐⭐⭐ 极高(有短期记忆、长期记忆、规划模块、反思模块) | ⭐⭐⭐ 中等(需要配置Agent框架,设计提示词,集成工具) | 自主内容创作、自主市场调研、自主项目管理、自主代码开发(长任务) |
从这个对比表中,我们可以清楚地看到ReAct框架的独特优势:
- 可解释性极高:有完整的TAO循环记录,每一步推理和行动都透明——用户可以清楚地看到大模型「为什么这么做」「这么做得到了什么」「下一步准备怎么做」,这对于需要高可解释性的场景(比如医疗诊断、法律决策、金融投资)非常重要。
- 内部幻觉率极低:有外部工具验证,推理过程也能发现内部知识的错误——比如大模型如果错误地认为1900是闰年,在调用Wikidata API查1900年是不是闰年之后,就能发现自己的错误,然后调整推理。
- 任务完成能力(短任务)极高:即使是短任务,ReAct框架也能通过「推理+行动」提升准确率——比如刚才那道小明爷爷的生日题,如果把出生年份改成1896年,到2000年,用ReAct框架的话,大模型会先推理「我需要查1900年是不是闰年」,然后调用Wikidata API,然后根据返回结果调整推理,最终得到正确的答案25。
- 开发难度极低:不需要微调大模型,只需设计ReAct提示词——这对于没有大模型微调能力的普通开发者或用户来说非常友好。
当然,ReAct框架也有局限性(我们后面在「批判视角」章节会详细讲):
- 任务完成能力(长任务)中等:如果没有记忆模块的话,ReAct框架在处理长任务时会「忘记」之前的推理和行动——比如处理「上海咖啡节智能助手」的任务,如果有四件事要做,大模型可能会做完第一件事之后就忘记第二件事是什么。
- 效率中等:因为需要交替进行推理和行动,调用工具的次数可能会比纯工具调用多——比如有些任务可以一次调用多个工具,但ReAct框架的大模型可能会一次调用一个工具,然后推理,然后再调用另一个工具。
- 依赖外部工具的质量:如果外部工具的返回结果有误或不完整,ReAct框架的大模型的推理和行动也会受到影响——比如天气API返回的明天上海的天气是错误的,那么大模型推荐的出行方案也会是错误的。
2.4 概念联系的ER实体关系图与交互关系图
为了更深入地理解ReAct框架的核心实体之间的联系和交互,我们可以画两个图:一个是ER实体关系图(Entity-Relationship Diagram),展示核心实体之间的静态关系;另一个是交互关系图(Interaction Diagram),展示核心实体之间的动态交互。
2.4.1 ER实体关系图
从这个ER实体关系图中,我们可以清楚地看到ReAct框架的核心实体和静态关系:
- 核心实体:USER(用户)、REACT_AGENT(ReAct智能体)、LLM(大语言模型)、PROMPT_TEMPLATE(提示词模板)、EXTERNAL_TOOL(外部工具)、TAO_RECORD(TAO循环记录)、FINAL_OUTPUT(最终输出)。
- 静态关系:
- USER「使用」REACT_AGENT,「生成」FINAL_OUTPUT。
- REACT_AGENT「依赖」LLM,「使用」PROMPT_TEMPLATE,「调用」EXTERNAL_TOOL,「产生」TAO_RECORD和FINAL_OUTPUT。
2.4.2 交互关系图(序列图)
从这个交互关系图(序列图)中,我们可以清楚地看到ReAct框架的核心动态交互过程:
- 初始化阶段(步骤1-2):用户输入任务,ReAct智能体初始化提示词(包括角色设定、任务描述、工具描述、ReAct示例、要求、用户任务)。
- TAO循环阶段(步骤3-10):这是ReAct框架的核心阶段,循环往复直到任务完成:
- 思考阶段(步骤3-4):ReAct智能体把当前的完整提示词(包括之前的TAO循环记录)发给LLM,LLM生成思考(Thought,推理内容,决定下一步该做什么)和行动(Action,包括工具名称和参数)。
- 记录阶段(步骤5):ReAct智能体把思考和行动存入TAO循环记录。
- 判断阶段:检查行动是否是「Finish」(任务完成),如果是,跳出循环,提取最终答案;如果不是,进入行动阶段。
- 行动阶段(步骤6-7):ReAct智能体调用外部工具,外部工具返回观察(Observation,工具的返回结果)。
- 更新记录阶段(步骤8):ReAct智能体把观察存入TAO循环记录。
- 更新提示词阶段(步骤9):ReAct智能体更新提示词(把当前步骤的TAO循环记录加进去)。
- 输出阶段(步骤10-11):ReAct智能体把最终答案存入FINAL_OUTPUT,然后返回给用户。
2.5 学科定位与边界
最后,我们需要明确ReAct框架的学科定位和边界——也就是说,ReAct框架属于哪个学科领域?它能解决什么问题?不能解决什么问题?
2.5.1 学科定位
ReAct框架属于人工智能(AI)领域下的大语言模型(LLM)应用子领域,更具体地说,属于**AI Agent(智能体)子领域,是Harness Engineering(驾驭/编排工程)**的核心方法论之一。
ReAct框架的理论基础来自于多个学科:
- 认知科学(Cognitive Science):人类解决问题时的「感知→推理→决策→行动→观察→反思→调整」的认知循环——ReAct框架的TAO循环就是对这个认知循环的简化模拟。
- 自然语言处理(NLP):大语言模型的文本生成能力、推理能力、理解能力——ReAct框架的核心就是利用大语言模型的这些能力来驱动TAO循环。
- 软件工程(Software Engineering):模块化设计、API集成、提示词工程——ReAct框架的开发需要用到这些软件工程的知识。
- 逻辑学(Logic):演绎推理、归纳推理、溯因推理——ReAct框架的大模型在推理阶段会用到这些逻辑方法。
2.5.2 边界
ReAct框架的边界——也就是说,它能解决什么问题?不能解决什么问题?
- 能解决的问题:
- 需要外部信息的问题:比如事实检索增强的问答、天气查询、股票查询、新闻查询等。
- 需要多步骤推理+行动的问题:比如工具增强的数学推理、多步骤的日常任务规划、代码生成与调试、科研文献检索与综述等。
- 需要高可解释性的问题:比如医疗诊断辅助、法律决策辅助、金融投资辅助等——用户可以清楚地看到大模型的推理和行动过程。
- 不能解决的问题:
- 完全依赖内部知识的纯推理问题:比如数学公理的证明、纯逻辑推理题等——ReAct框架和CoT框架的效果差不多,甚至可能因为调用工具而降低效率。
- 需要创造性思维的问题:比如原创诗歌的创作、原创音乐的创作、原创艺术作品的创作等——ReAct框架的大模型主要是「推理+行动」,创造性思维能力有限(当然可以和其他创造性框架结合)。
- 需要情感理解和情感交流的问题:比如心理咨询、情感陪伴等——ReAct框架的大模型主要是「理性的推理+行动」,情感理解和情感交流能力有限(当然可以和情感大模型结合)。
- 需要物理交互的问题:比如控制机器人做家务、控制无人机飞行等——ReAct框架的行动模块目前主要是「调用API或程序」,物理交互能力有限(当然可以和
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)