一、序言: 先从一个生活场景说起

想象一下,你在厨房做一道从没做过的菜。你会怎么做?

大概率不是先把整道菜的步骤在脑子里想完再动手,而是边做边想

  • “菜谱说需要三勺盐…糟糕,盐用完了,用酱油代替吧”(遇到问题,调整计划)
  • “这个步骤不太懂,让我看看手机上的视频教程”(主动获取外部信息)
  • “肉已经腌了20分钟,该下锅了”(跟踪进度,执行下一步)

这就是人类解决问题的典型方式:思考→行动→观察结果→再思考→再行动,循环往复。

但传统的大语言模型(比如ChatGPT)是怎么工作的呢?你问它一个问题,它就在脑子里(其实是模型参数里)想一遍,然后直接给你答案。这种"闭门造车"的方式,我们叫它**“只思考,不行动”**。

还有一种AI,比如早期的机器人,你给它一个指令,它就机械地执行,不会思考为什么要这么做,遇到问题也不会变通。这叫**“只行动,不思考”**。

ReAct框架,就是要把这两种能力结合起来,让AI像人类一样,既能思考,又能行动,还能根据行动结果调整思考

二、ReAct到底是什么?一句话讲清楚

ReAct = Reasoning(推理)+ Acting(行动)

它是2022年由普林斯顿大学和Google的研究团队提出的一个框架,核心思想很简单:

让AI在解决问题的过程中,交替进行"思考"和"行动",形成一个闭环。

这里的"思考"不是真的在思考,而是让AI用文字写下它的推理过程,比如:

  • “我需要先查一下A的信息”
  • “根据查到的结果,我推断B应该是…”
  • “刚才的行动没得到预期结果,我换一种方式试试”

"行动"则是让AI调用外部工具,比如:

  • 搜索网页
  • 查询数据库
  • 调用计算器
  • 执行代码

关键点是:AI的每一步行动,都是基于上一步的思考;而每一次思考,又会参考之前行动得到的结果。

三、ReAct是怎么工作的?看一个具体例子

假设你问AI一个问题:

“除了Apple Remote(苹果遥控器),还有什么设备可以控制Apple Remote最初设计用来控制的那个程序?”

这个问题有点绕,我们看看不同AI会怎么处理。

方式一:普通AI(直接回答)

AI直接在脑子里想一遍,然后给出答案:

“答案是iPhone、iPad和iPod Touch。”

问题:它可能记错了,或者根本没搞清楚"Apple Remote最初控制的是哪个程序",就开始瞎猜。这就是**“幻觉”**——AI一本正经地胡说八道。

方式二:思维链AI(Chain-of-Thought,CoT)

AI会展示推理过程:

“让我一步步想:Apple Remote最初设计用于控制Apple TV。Apple TV可以被iPhone、iPad和iPod Touch控制。所以答案是iPhone、iPad和iPod Touch。”

看起来有模有样,但问题依然存在:它说的"Apple Remote最初控制Apple TV"这个前提可能就是错的!因为它没有查资料,全靠记忆,而记忆不一定准确。

方式三:ReAct(思考+行动)

ReAct会这样一步步来:

第1轮:

  • 思考:我需要先搞清楚Apple Remote最初是控制什么程序的。让我搜索一下。
  • 行动:搜索"Apple Remote"
  • 观察:返回结果说"Apple Remote最初设计用于控制Front Row媒体中心程序"

第2轮:

  • 思考:好的,原来控制的是Front Row。现在我需要查一下,除了Apple Remote,还有什么设备能控制Front Row。
  • 行动:搜索"Front Row"
  • 观察:没找到直接结果,但提示有"Front Row (software)"这个条目

第3轮:

  • 思考:刚才搜的不对,应该搜"Front Row (software)"才对。
  • 行动:搜索"Front Row (software)"
  • 观察:Front Row是一款已停产的媒体中心软件,可以用Apple Remote或键盘功能键控制

第4轮:

  • 思考:找到了!除了Apple Remote,键盘功能键也可以控制Front Row。
  • 行动:给出最终答案"键盘功能键"

看出区别了吗?

ReAct不是一次性想完所有事情,而是想一步、做一步、看一步结果、再想下一步。每一步都有据可查,错了也能及时发现并纠正。

四、ReAct的核心格式:三步循环

ReAct的执行过程可以总结为一个固定的 “三步循环”
ReAct三步循环

1. 思考(Thought)

AI用文字写下它当前的状态和下一步计划。比如:

  • “我需要搜索X来找到Y”
  • “上一步的结果告诉我A不等于B,所以C应该是…”
  • “刚才搜索失败了,我换个关键词试试”

作用:相当于AI的"内心独白",帮助它理清思路、跟踪进度、处理意外情况。

2. 行动(Action)

AI执行一个具体的操作,通常是调用某个工具。常见的行动包括:

  • Search[关键词]:搜索信息
  • Lookup[字符串]:在当前页面查找特定内容
  • Calculate[公式]:调用计算器
  • Finish[答案]:结束任务,给出最终答案

作用:让AI能够"动手"获取信息,而不是只靠记忆。

3. 观察(Observation)

行动执行后,外部环境返回的结果。比如:

  • 搜索引擎返回的网页摘要
  • 数据库查询的结果
  • 计算器返回的数值

作用:为AI提供事实依据,让推理 grounded(有根据)在真实数据上。

这个三步循环会不断重复,直到AI认为已经找到答案,执行Finish行动结束任务。

五、ReAct相比其他方法强在哪里?

1. 比普通AI强:不会瞎编

普通AI没有外部信息来源,全靠训练时的记忆。但知识会过时、会记错,所以经常"幻觉"。

ReAct每到一个关键节点,都会去查资料,确保说的是事实。就像写论文要引用参考文献一样,ReAct的每个结论都有据可查。

2. 比思维链(CoT)强:能查资料

CoT虽然也会一步步推理,但它整个过程都是"闭门造车",不接触外部世界。如果第一步的前提就错了,后面推理再严密也是错的。

ReAct在推理过程中可以随时"开门出去看看",查一下资料验证自己的假设。发现错了,马上调整。

3. 比纯行动AI强:有策略不蛮干

有些AI只会执行固定动作,不会思考。比如让它在虚拟房间里找东西,它可能到处乱翻,重复做无用功。

ReAct会先思考:“根据常识,胡椒瓶一般在橱柜或台面上,我先去这些地方找”。找到后还会跟踪进度:“已经找到胡椒瓶了,下一步是把它放到抽屉里”。有目标、有计划、会调整

六、ReAct在实际中怎么用?

场景一:智能客服

用户问:“我上周三买的那个红色手机壳,现在降价了,能退差价吗?”

普通AI可能直接回答"可以"或"不可以",但可能搞错订单信息。

基于ReAct框架驱动的客服会这样:

  • 思考:用户提到"上周三"、“红色手机壳”,我需要先查订单。
  • 行动:调用订单查询API,搜索用户上周三的订单
  • 观察:找到订单,确认是红色手机壳,购买价89元
  • 思考:现在需要查当前售价,看是否降价。
  • 行动:调用商品查询API,查该商品当前价格
  • 观察:当前售价69元,确实降价20元
  • 思考:根据退差价规则,购买7天内降价可退差价。上周三到今天在7天内。
  • 行动:告诉用户可以退20元差价,并引导操作

确保全程有据可查,不会张冠李戴。

场景二:数据分析助手

老板问:“分析一下我们Q3华东区的销售数据,为什么比Q2下滑了?”

ReAct可以:

  • 思考:需要先获取Q2和Q3华东区的销售数据。
  • 行动:调用数据库查询工具,分别查Q2、Q3数据
  • 观察:拿到两组数据,Q3确实比Q2下滑15%
  • 思考:需要进一步分析下滑原因,看看是哪个产品线、哪个城市的问题。
  • 行动:按产品线和城市维度查询详细数据
  • 观察:发现主要是上海和杭州的智能硬件产品线下滑严重
  • 思考:需要查一下市场竞争情况,看看是否有竞品上市。
  • 行动:调用外部市场数据API,查Q3华东区智能硬件市场竞争情况
  • 观察:发现竞品A在8月份推出了类似产品,价格更低
  • 思考:原因找到了,可以生成报告了。
  • 行动:调用报告生成工具,输出分析结论

整个过程透明可追溯,老板可以随时问"你为什么得出这个结论",AI能展示完整的推理链条。

场景三:个人助理

你说:“帮我规划一下下周去上海的行程,要拜访三个客户,还要参加周五的行业会议。”

ReAct可以:

  • 思考:需要知道三个客户的位置、会议地点,才能规划路线。
  • 行动:调用日历API,获取会议时间和地点;调用CRM系统,获取客户地址
  • 观察:会议在周五下午,浦东;客户A在徐汇,B在静安,C在浦东
  • 思考:为了效率,应该把浦东的客户C和会议安排在一天。需要查一下交通时间和酒店。
  • 行动:调用地图API查路线,调用酒店预订API查推荐
  • 观察:拿到交通时间和酒店信息
  • 思考:可以制定计划了:周一到周三分别拜访A、B,周四拜访C并住浦东,周五参加会议。
  • 行动:生成行程表,并询问用户是否满意

像真人助理一样,会主动收集信息、制定计划、处理约束条件。

七、ReAct的技术实现:程序员视角

如果你跟我一样也是个程序员,想知道ReAct怎么落地,核心就这三点:

1. 定义工具集(Tool Set)

你需要告诉AI它有哪些工具可以用。比如:

tools = [
    {
        "name": "search",
        "description": "搜索互联网信息",
        "parameters": {"query": "搜索关键词"}
    },
    {
        "name": "query_database", 
        "description": "查询内部数据库",
        "parameters": {"sql": "SQL语句"}
    },
    {
        "name": "calculate",
        "description": "执行数学计算", 
        "parameters": {"expression": "数学表达式"}
    }
]

2. 写提示词(Prompt)

告诉AI它的角色、可用的工具、以及输出格式。关键是让AI学会输出结构化的行动指令,比如:

你需要按以下格式思考并行动:

思考:你的推理过程
行动:工具名称[参数]
观察:工具返回的结果
...(重复直到完成任务)

3. 搭建执行循环(Loop)

写一个简单的循环代码:

while not task_finished:
    # 1. 把历史记录(思考+行动+观察)拼成提示词
    prompt = build_prompt(history)
    
    # 2. 调用LLM生成下一步
    response = llm.generate(prompt)
    
    # 3. 解析LLM的输出,提取"思考"和"行动"
    thought, action = parse(response)
    
    # 4. 执行行动,获取观察结果
    observation = execute(action)
    
    # 5. 把这一轮的结果加入历史记录
    history.append((thought, action, observation))
    
    # 6. 检查是否完成任务
    if action.startswith("Finish"):
        task_finished = True

就这么简单! 核心逻辑就是一个while循环,不断让AI"想-做-看",直到问题解决。

4. 现成的AI应用框架

如果你不想从零写,可以直接用现成的框架:

  • LangChain:最流行的LLM应用框架,内置了ReAct Agent的实现,几行代码就能搭起来。
  • LangGraph:LangChain的进阶版,支持更复杂的流程控制(比如条件分支、循环、并行)。
  • AutoGen:微软开源的多智能体框架,多个ReAct Agent可以协作完成任务。

八、ReAct的优缺点:理性看待

优点

1. 透明可解释
每一步都有"思考"记录,出了问题容易排查。不像黑盒模型,不知道它为什么给出这个答案。

2. 抗幻觉能力强
关键信息都通过工具查询获取,不是靠记忆瞎编。适合对准确性要求高的场景(医疗、金融、法律)。

3. 灵活可扩展
需要新能力?加一个新工具就行。比如原来只能搜索网页,现在加个"查股票"工具,AI就能分析股市了。

4. 人机协作友好
人类可以随时查看AI的"思考过程",发现不对可以打断、纠正,甚至直接修改AI的思考内容让它按正确方向走。

缺点

1. 速度慢
每一步都要调用一次LLM,复杂任务可能要循环十几次,响应时间较长(几秒到几十秒)。

2. 成本高
多次调用LLM意味着更多的token消耗,费用会比单次调用高。

3. 对模型能力有要求
如果模型本身逻辑能力差,可能生成错误的工具调用格式,或者陷入"一直在想但就是不行动"的循环。

4. 工具质量决定上限
如果工具返回的结果不准确(比如搜索引擎给了垃圾信息),AI也会被带偏。

九、ReAct的未来:从"单打独斗"到"团队协作"

目前的ReAct主要是一个AI在循环思考-行动。未来的发展方向包括:

1. 多智能体协作(Multi-Agent)

不再是一个AI单打独斗,而是多个ReAct Agent分工合作:

  • 研究Agent:负责查资料
  • 计算Agent:负责数据分析
  • 写作Agent:负责生成报告
  • 审核Agent:负责检查错误

它们之间通过消息传递协作,像一个小团队。

2. 强化学习增强

现在的ReAct主要靠提示词引导,未来可以通过强化学习(RL)让AI从成功和失败的轨迹中学习,越用越聪明。

3. 长期记忆

给AI配上"笔记本"(向量数据库),让它能记住之前的对话、用户的偏好,实现跨会话的个性化服务。

4. 多模态扩展

现在的ReAct主要处理文本,未来可以处理图片、音频、视频。比如AI看到一张产品图片,能思考"这个零件看起来磨损了",然后行动"调用维修手册查询更换步骤"。

十、总结:ReAct的本质是什么?

回到开头的问题:ReAct到底是什么?

它不是某种神秘的算法,也不是某个具体的软件产品。它是一种让AI解决问题的"方法论"

核心就三句话:

  1. 不要一次性想完所有事情——想一步,做一步,看一步结果。
  2. 不要只动脑子不动手——该查资料就查资料,该算就算,该问就问。
  3. 不要只动手不动脑子——每做一步都要想想为什么做、下一步怎么做、做错了怎么改。

说白了,就是让AI学会**“边做边想,错了就改”**——这正是人类解决问题的方式。

对于技术人员来说,ReAct的价值在于:它提供了一套清晰的工程范式,让你能把LLM从"聊天机器人"升级为"能解决问题的智能体"。不需要复杂的算法,只需要定义好工具、写好提示词、搭好循环,就能让AI帮你完成很多以前做不到的事情。

如果你正在做AI应用开发,ReAct是一个值得深入掌握的框架。它不一定适合所有场景(简单问答用它反而大材小用),但在需要多步骤推理、外部信息获取、复杂任务拆解的场景下,它很可能是目前最实用、最可靠的方案。


PS:希望这篇文章能帮你真正理解ReAct框架。如果你正在实践ReAct,欢迎交流落地经验!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐