ReAct不是格式游戏!揭秘让LLM从“文本生成器”变身“决策引擎”的底层逻辑

news2026/5/14 21:16:16
文章指出ReAct常被误解为高级Prompt工程但核心是闭环执行架构。真正的ReAct强调“决策-执行-反馈”循环而非固定的Thought/Action/Observation格式。工程代码定义流程模型生成内容实现真实工具调用与反馈闭环。文章建议从系统设计角度理解ReAct用代码控制流程将LLM转变为可控的决策系统这才是Agent落地的关键而非单纯优化Prompt。最近很多人在聊 Agent尤其是 ReAct。打开各类技术文章、教程全是“ReAct 三段式”“Prompt 模板直接抄”但我发现一个特别普遍的误区——大部分人理解的 ReAct本质上只是“高级一点的 Prompt 工程”。不信你看很多人做 ReAct都是这样在提示词里硬生生写死 Thought / Action / Observation 三个标签让模型“先思考再调用工具”模拟一个看似完整的推理过程觉得只要格式对了就是在做 Agent 开发看起来逻辑通顺、步骤完整但如果你真的拿这套思路去做产品、落地项目很快就会被现实毒打模型输出忽稳忽乱有时候符合格式有时候直接跳步省略工具调用混乱不该调用的时候乱调用该调用的时候不触发只要任务稍微复杂一点比如多工具联动、多步骤推理直接崩掉整个流程完全不可控调试起来无从下手其实问题根本不在模型也不在 Prompt 写得不够好而在你从一开始就理解错了 ReAct 的核心。一、ReAct 不是 Prompt 技巧是“执行架构”先把结论打在最前面避免你再走弯路ReAct 不是一种 Prompt 写法而是一种“闭环的执行架构”。很多人把它理解成“固定的三段式格式”比如这样Thought: 我现在需要做什么 Action: 调用什么工具、传入什么参数 Observation: 工具返回的结果是什么但这只是 ReAct 的“表象”是用来让模型理解任务的辅助格式不是它的核心。真正的 ReAct核心是一个循环逻辑无关格式、无关 Prompt 模板决策 → 执行 → 反馈 → 再决策 → 循环直到完成任务划重点重点不是 Thought/Action/Observation 这三个标签而是“循环”和“闭环”。没有循环再标准的格式也只是普通的 Prompt 调用不是 ReAct。二、关键问题Thought/Action/Observation谁来决定聊到这里很多人会有一个疑问ReAct 里的 Thought思考、Action行动、Observation反馈到底是让模型自己决定还是我们通过工程代码控制答案很明确也是区分“伪 ReAct”和“真 ReAct”的第一个关键点流程是工程控制的内容是模型生成的。简单说什么时候该思考、什么时候该执行、什么时候该接收反馈、什么时候停止循环这是工程代码提前定义好的固定流程而思考的具体内容、执行的具体工具和参数是模型根据当前状态生成的灵活内容。反过来如果让模型自己决定“要不要循环”“什么时候停止”就会出现输出失控、流程混乱的问题——模型本质是文本生成器不是流程控制器。三、为什么“只靠 Prompt”一定会失败很多入门教程会教你只要在 Prompt 里写清楚三段式格式让模型按照这个格式输出就是 ReAct。比如这样的 Prompt 模板你需要严格按照如下格式输出不得省略任何部分 Thought: 请分析当前任务思考下一步该做什么 Action: 请选择要调用的工具格式为工具名(参数) Observation: 请填写工具调用后的结果然后就让模型自己“演”一套流程但这里有个致命问题模型不会真的调用工具它只是在“表演”一个调用工具的过程。举个例子你让模型查询今天的天气它可能会输出Thought: 我需要知道今天的天气所以要调用搜索工具 Action: search(今天天气) Observation: 今天晴气温25℃-32℃看起来天衣无缝但这个 Observation天气结果大概率是模型编的——它没有真的去调用搜索工具只是根据常识生成了一个“合理”的结果。这就是“只靠 Prompt”的弊端没有工程层面的工具执行和反馈闭环所有流程都是模型的“模拟表演”根本无法落地到真实产品中。四、真正的 ReAct到底是怎么跑的脱离 Prompt 模板真实的 ReAct 系统核心是“工程代码模型决策”的协同用一段简单的 Python 伪代码就能看懂它的运行逻辑while True: # 1. 模型根据当前状态做决策输出下一步行动 output llm(prompt 历史状态) # 2. 判断是否完成任务完成则退出循环 if output 是最终答案: break # 3. 如果是工具调用工程代码执行工具 if output 是工具调用指令: result 执行工具(工具名, 参数) # 真实调用不是模拟 # 4. 把工具执行结果反馈塞回prompt进入下一轮循环 prompt prompt 工具执行结果 result这里的关键点一定要记牢模型只负责“说下一步做什么”决策不负责“做”工程代码负责“真的去做”执行工具并获取真实反馈反馈结果会重新喂给模型形成闭环直到任务完成这才是 ReAct 的核心逻辑——不是格式是“决策-执行-反馈”的循环闭环。五、一个很多人忽略的事实其实你完全不需要在 Prompt 里写死 Thought / Action / Observation 这三个标签也能实现 ReAct。很多人陷入了“格式陷阱”以为没有这三个标签就不是 ReAct。但实际上标签只是辅助模型理解任务的手段不是 ReAct 的必要条件。只要能实现“决策-执行-反馈”的循环哪怕你的 Prompt 很简单比如“请给出下一步要调用的工具及参数”也是真正的 ReAct。六、更接近真实生产的做法关键建议收藏在真实的 Agent 系统开发中我们很少用“三段式标签”更多是用“工程控制流程模型聚焦决策”的方式步骤更简洁、更可控具体分为3步Step 1让模型专注做“决策”Prompt 不用复杂直接明确任务“当前任务是XXX你需要选择下一步要调用的工具并以JSON格式给出工具名和参数无需多余解释。”目的让模型只聚焦“该调用什么工具”不被格式、思考过程干扰输出更稳定。Step 2工程代码执行工具获取真实反馈用代码解析模型的输出提取工具名和参数然后真实调用工具获取结果# 解析模型输出的JSON tool_name, params parse(output) # 真实调用工具获取反馈结果 result call_tool(tool_name, params)这里的关键是“真实执行”——不管是调用API、查询数据库还是调用其他工具必须拿到真实的结果而不是模型模拟的结果。Step 3反馈结果回喂让模型判断下一步把工具执行的真实结果重新喂给模型同时给出提示“这是工具执行的结果请判断是否已完成任务。如果没有请给出下一步行动JSON格式的工具调用。”然后重复 Step 1-3直到模型输出最终答案循环结束。你看整个过程没有 Thought / Action / Observation 标签但完全符合 ReAct 的核心逻辑——决策-执行-反馈-循环。七、这才是本质区别优化 Prompt vs 设计系统很多人卡在“伪 ReAct”里出不来核心原因是他们一直在优化 Prompt比如调整标签格式、增加 Few-shot 案例而不是在设计系统。我们用两张图清晰区分两者的区别Prompt 工程伪 ReAct一次输入 → 一次输出没有循环没有反馈模型只做一次决策ReAct / Agent真 ReAct多轮决策 → 状态驱动 → 工具闭环有循环有反馈模型根据状态动态调整决策简单说Prompt 工程解决的是“让模型输出符合预期格式”而 ReAct 解决的是“让模型能自主完成复杂任务”——前者是“单点优化”后者是“系统设计”。八、更深一层的理解把 LLM 从“文本生成器”变成“决策引擎”聊到这里我们可以再拔高一层ReAct 的本质从来不是三段式结构而是把 LLM 从“文本生成器”变成“决策引擎”。没有 ReAct 架构时LLM 只是一个“输入文本、输出文本”的工具有了 ReAct 之后LLM 变成了“根据当前状态决定下一步行动”的核心整个系统围绕它的决策形成闭环。我们可以把它抽象成一个简单的流程State当前状态任务历史反馈 ↓ LLM决策下一步该做什么 ↓ Action执行工程代码调用工具 ↓ Observation反馈工具返回的真实结果 ↓ Loop循环反馈回喂重复上述步骤这个流程里LLM 的核心作用是“决策”而不是“生成文本”——这才是 ReAct 能支撑 Agent 落地的关键。九、另一个容易忽略的点Observation 的两种实现方式很多人做 ReAct 时会忽略 Observation反馈这一步的实现细节但其实它直接影响系统的稳定性。Observation 主要有两种实现方式根据任务场景选择成熟系统通常是两者结合。方式1工程判断确定性反馈由工程代码直接判断工具执行结果的有效性无需模型参与适合确定性任务# 伪代码工程判断工具执行结果 if result is None: # 工具调用失败 retry() # 重试 elif result : # 无有效结果 prompt 工具未返回有效结果请更换工具重试 else: # 有有效结果回喂模型 prompt 工具执行结果 result适用场景API调用、数据查询、文件读取等——结果要么成功、要么失败要么有数据、要么无数据无需模型判断。方式2模型判断开放性反馈将工具执行结果喂给模型让模型判断结果是否有效、是否能完成任务适合开放性任务Prompt这是工具执行结果XXX请判断该结果是否能解决当前任务。如果能输出最终答案如果不能请给出下一步行动。适用场景分析类任务、问答类任务、创意类任务——结果是否有效没有固定标准需要模型根据任务目标判断。十、真正的分水岭从“调 Prompt”到“控流程”最后我们回到最开始的问题你什么时候才算从“Prompt 工程”进阶到“Agent 开发”答案不是你会不会写 Thought / Action / Observation 标签也不是你能不能写出一个能跑的 Demo而是你能不能做到用代码控制流程让模型只负责决策。这是一个非常关键的分水岭当你还在纠结“Prompt 怎么写才能让模型输出标准格式”“Few-shot 案例加多少合适”时你还停留在 Prompt 工程阶段当你开始思考“怎么拆分决策步骤”“怎么接入工具并处理异常”“怎么用代码控制循环”“怎么管理系统状态”时你才真正开始做 Agent 开发。最后唠两句为什么AI大模型成为越来越多程序员转行就业、升职加薪的首选很简单这些岗位缺人且高薪智联招聘的最新数据给出了最直观的印证2025年2月AI领域求职人数同比增幅突破200% 远超其他行业平均水平整个人工智能行业的求职增速达到33.4%位居各行业榜首其中人工智能工程师岗位的求职热度更是飙升69.6%。AI产业的快速扩张也让人才供需矛盾愈发突出。麦肯锡报告明确预测到2030年中国AI专业人才需求将达600万人人才缺口可能高达400万人这一缺口不仅存在于核心技术领域更蔓延至产业应用的各个环节。那0基础普通人如何学习大模型 深耕科技一线十二载亲历技术浪潮变迁。我见证那些率先拥抱AI的同行如何建立起效率与薪资的代际优势。如今我将积累的大模型面试真题、独家资料、技术报告与实战路线系统整理分享于此为你扫清学习困惑共赴AI时代新程。我整理出这套 AI 大模型突围资料包【允许白嫖】✅从入门到精通的全套视频教程✅AI大模型学习路线图0基础到项目实战仅需90天✅大模型书籍与技术文档PDF✅各大厂大模型面试题目详解✅640套AI大模型报告合集✅大模型入门实战训练这份完整版的大模型 AI 学习和面试资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】①从入门到精通的全套视频教程包含提示词工程、RAG、Agent等技术点② AI大模型学习路线图0基础到项目实战仅需90天全过程AI大模型学习路线③学习电子书籍和技术文档市面上的大模型书籍确实太多了这些是我精选出来的④各大厂大模型面试题目详解⑤640套AI大模型报告合集⑥大模型入门实战训练如果说你是以下人群中的其中一类都可以来智泊AI学习人工智能找到高薪工作一次小小的“投资”换来的是终身受益应届毕业生‌无工作经验但想要系统学习AI大模型技术期待通过实战项目掌握核心技术。零基础转型‌非技术背景但关注AI应用场景计划通过低代码工具实现“AI行业”跨界‌。业务赋能 ‌突破瓶颈传统开发者Java/前端等学习Transformer架构与LangChain框架向AI全栈工程师转型‌。获取方式有需要的小伙伴可以保存图片到wx扫描二v码免费领取【保证100%免费】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2604199.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…