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

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

文章指出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%免费】

相关文章:

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

文章指出,ReAct常被误解为高级Prompt工程,但核心是闭环执行架构。真正的ReAct强调“决策-执行-反馈”循环,而非固定的Thought/Action/Observation格式。工程代码定义流程,模型生成内容,实现真实工具调用与反馈闭环。文…...

Cookie AutoDelete技术架构解析:深入理解Redux驱动的浏览器扩展实现

Cookie AutoDelete技术架构解析:深入理解Redux驱动的浏览器扩展实现 【免费下载链接】Cookie-AutoDelete Firefox and Chrome WebExtension that deletes cookies and other browsing site data as soon as the tab closes, domain changes, browser restarts, or a…...

深入解析:parseInt 到底有几个参数?

🔢 深入解析:parseInt 到底有几个参数? 🤔 parseInt 的签名 parseInt 函数接收 两个 参数: parseInt(string, radix)string (必填):要被解析的值。如果参数不是字符串,会先转换为字符串。rad…...

别再手动算字模了!用Python+STM32CubeMX快速生成8*8点阵动画,效率提升10倍

用PythonSTM32CubeMX自动化生成8*8点阵动画:从手动编码到智能设计的跨越 每次看到那些闪烁的8*8点阵动画,你是否想过背后的开发者要花多少时间手动计算每个像素的十六进制值?传统开发流程中,工程师需要先在纸上绘制图案&#xff0…...

JS 侦探社:如何精准判断一个对象是不是数组?

🕵️‍♂️ JS 侦探社:如何精准判断一个对象是不是数组? 🤔 为什么判断数组这么难? 在 JavaScript 中,数组本质上也是一种对象。 console.log(typeof []); // "object" console.log(typeof {}…...

reverse-shell在企业安全测试中的最佳实践:风险评估与合规使用

reverse-shell在企业安全测试中的最佳实践:风险评估与合规使用 【免费下载链接】reverse-shell Reverse Shell as a Service 项目地址: https://gitcode.com/gh_mirrors/re/reverse-shell reverse-shell作为一款开源的"Reverse Shell as a Service"…...

探究MicroBlaze软核在DDR3中运行sleep函数异常延迟的根源与规避策略

1. 现象描述:从BRAM到DDR3的诡异延迟 第一次把MicroBlaze程序从BRAM搬到DDR3运行时,我遇到了一个让人抓狂的问题:原本精准的sleep(1)延时竟然变成了长达数秒的卡顿。这个现象特别容易在Vitis环境下开发网络应用(比如LwIP协议栈&am…...

《QGIS空间数据处理与高级制图》005:第三方预处理插件推荐

作者:翰墨之道,毕业于国际知名大学空间信息与计算机专业,获硕士学位,现任国内时空智能领域资深专家、CSDN知名技术博主。多年来深耕地理信息与时空智能核心技术研发,精通 QGIS、GrassGIS、OSG、OsgEarth、UE、Cesium、OpenLayers、Leaflet、MapBox 等主流工具与框架,兼具…...

CANN/asc-devkit asc_copy_gm2l1 API

asc_copy_gm2l1 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…...

MarkdownReader:重构浏览器文档阅读体验的渐进式渲染引擎

MarkdownReader:重构浏览器文档阅读体验的渐进式渲染引擎 【免费下载链接】markdownReader markdownReader is a extention for chrome, used for reading markdown file. 项目地址: https://gitcode.com/gh_mirrors/ma/markdownReader 在当今技术文档创作与…...

浙大推出让AI会「导演」的角色扮演框架!四通道消息沉浸式交互|ACL 2026

AdaMARP团队 投稿量子位 | 公众号 QbitAIAI能实现真正的沉浸式扮演了。大语言模型在角色扮演任务上进展迅速,但现有系统往往缺乏沉浸感和适应性:环境信息未被充分建模,场景与角色也多为静态,难以支撑多角色调度、场景切换、动态引…...

保姆级教程:手把手教你下载、解压与解析ILSVRC2015 VID数据集(附Python脚本)

计算机视觉实战:ILSVRC2015 VID数据集处理全流程指南 当你第一次打开ILSVRC2015 VID数据集时,可能会被它的规模吓到——超过100万张图像、数千个视频序列和复杂的XML标注结构。这份指南将带你从零开始,像处理日常项目一样轻松驾驭这个庞然大…...

如何用Layerdivider在3步内将单张图片智能分层为PSD文件

如何用Layerdivider在3步内将单张图片智能分层为PSD文件 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 你是否曾面对一张精美的插画,想要修改…...

Intel Wi-Fi 6 AX201网卡间歇性断连?华硕飞行堡垒8用户必看的节能模式与驱动管理避坑指南

Intel Wi-Fi 6 AX201网卡间歇性断连?华硕飞行堡垒8用户必看的节能模式与驱动管理避坑指南 当你的华硕飞行堡垒8笔记本突然无法连接Wi-Fi,设备管理器里Intel Wi-Fi 6 AX201网卡显示黄色感叹号并提示"代码10"错误时,这往往不是简单的…...

别再乱用STOP模式了!STM32L4三种STOP模式深度对比与选型实战

STM32L4低功耗设计实战:STOP模式选型与能效优化全解析 在物联网终端设备与便携式仪器开发中,每微安电流的节省都直接关系到产品的市场竞争力。最近为一个农业传感器项目做方案评审时,发现团队在STOP模式选择上存在严重误区——工程师们习惯性…...

别再用Excel解方程了!手把手教你用C++实现高斯消元法(附洛谷P3389模板题实战)

从数学公式到AC代码:高斯消元法的竞赛级C实现 在算法竞赛和科学计算中,线性方程组求解是一个无法回避的经典问题。当你面对洛谷P3389这样的模板题时,是否曾困惑于如何将教科书上的数学步骤转化为高效的C代码?本文将彻底打破理论与…...

掌握智能游戏存档管理:实现高效跨平台游戏进度迁移

掌握智能游戏存档管理:实现高效跨平台游戏进度迁移 【免费下载链接】XGP-save-extractor Python script to extract savefiles out of Xbox Game Pass for PC games 项目地址: https://gitcode.com/gh_mirrors/xg/XGP-save-extractor 你是否曾在Xbox Game Pa…...

【信息科学与工程学】【通信工程】第四十三篇 骨干网方案设计-02跨境网络

一、方案 1.1 整体方案设计概要 设计的云网融合方案,综合考虑其全球互联需求、安全合规性、性能优化及跨国运营挑战: ​1.1.1、需求分析 ​网络互联需求:​​ ​国内互通:​​ 安全、稳定、低延迟连接中国大陆(严格合规要求)。 ​国际互通:​​ 高性能连接美国(东西海…...

如何用dnGrep进行代码搜索:程序员必备的10个搜索模式

如何用dnGrep进行代码搜索:程序员必备的10个搜索模式 【免费下载链接】dnGrep Graphical GREP tool for Windows 项目地址: https://gitcode.com/gh_mirrors/dn/dnGrep dnGrep是一款强大的Windows图形化GREP搜索工具,专为开发者和技术用户设计。这…...

Ciao故障排除终极指南:10个常见问题与解决方案大全

Ciao故障排除终极指南:10个常见问题与解决方案大全 【免费下载链接】ciao HTTP checks & tests (private & public) monitoring - check the status of your URL 项目地址: https://gitcode.com/gh_mirrors/ci/ciao Ciao是一款强大的HTTP(S) URL监控…...

基于 HarmonyOS 6.0 的空气质量监测页面实战:声明式 UI 构建与跨端开发深度解析

基于 HarmonyOS 6.0 的空气质量监测页面实战:声明式 UI 构建与跨端开发深度解析 前言 随着 HarmonyOS 生态不断完善,HarmonyOS 6.0 在分布式能力、ArkUI 声明式开发、跨端协同以及应用性能方面都有了明显提升。相比传统 Android 开发模式,Har…...

保姆级教程:用树莓派+罗技C310搭建简易监控(附fswebcam完整参数表)

树莓派罗技C310搭建智能监控系统的完整实践指南 在智能家居和远程办公日益普及的今天,搭建一个低成本、高灵活性的监控系统已经成为许多技术爱好者的需求。本文将带你从零开始,利用树莓派和罗技C310 USB摄像头构建一个功能完善的监控解决方案。不同于市面…...

CANN/asc-devkit SPM缓冲区写入API

WriteSpmBuffer 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…...

Springboot+Vue3|毕业设计美食分享平台(源码)

目录 一、项目背景 二、技术介绍 三、功能介绍 四、代码设计 五、系统实现 一、项目背景 在移动互联网与社交媒体深度融合的时代背景下,美食已不再仅仅满足人们的饱腹之需,更演变为一种重要的社交媒介与文化符号。打开小红书、抖音等热门应用&…...

CANN Ascend C SetStride API

SetStride 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode.com/…...

智能水表、血糖仪、工业HMI:STM32L152ZET6的超低功耗MCU应用版图

STM32L152ZET6:带LCD驱动的超低功耗Cortex-M3旗舰MCU 在电池供电的工业仪表、医疗设备和消费电子产品中,微控制器的功耗与集成度往往是决定产品可行性的关键因素。STM32L152ZET6是意法半导体STM32 L1系列中的高端型号,采用2020mm的LQFP-144封…...

别再死记公式了!用Python+LTspice快速搞定LC滤波器设计(附仿真文件)

用PythonLTspice实现LC滤波器设计的工程化实践 在传统电子工程教学中,LC滤波器设计往往陷入繁琐的公式推导和手工计算泥潭。当学生终于理解完所有理论公式,准备动手实践时,却发现自己被复杂的参数计算和反复的电路调试所困扰。这种理论与实践…...

电子设备散热风扇控制技术详解与应用

1. 电子设备散热风扇控制技术概述现代电子设备正朝着小型化、高性能方向发展,随之而来的散热问题日益突出。以笔记本电脑为例,其厚度从十年前的30mm缩减到如今的15mm以下,但CPU功耗却从15W提升到45W甚至更高。这种"体积缩小、功耗增加&q…...

CANN/asc-devkit单核形状API文档

SetSingleShape 【免费下载链接】asc-devkit 本项目是CANN 推出的昇腾AI处理器专用的算子程序开发语言,原生支持C和C标准规范,主要由类库和语言扩展层构成,提供多层级API,满足多维场景算子开发诉求。 项目地址: https://gitcode…...

别再只调API了!微信支付Native/JSAPI开发中,订单号生成与回调处理的5个实战避坑点

微信支付开发实战:订单与回调的五个关键陷阱与解决方案 在移动支付领域,微信支付作为主流平台之一,其开发文档看似详尽,但实际落地时仍存在诸多"暗坑"。许多开发者过度关注支付接口调用本身,却忽视了订单生成…...