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

ReAct范式实战:让Agent学会边想边做

说实话我第一次看到ReAct这个论文标题的时候内心是拒绝的。又是个学术界造的概念吧我当时想。直到我真的在一个实际项目里试了一下才发现——这玩意儿真的不是花架子。它是Agent从傻傻地问一句答一句到能思考、能行动、能纠错的关键一步。这篇文章不讲虚的直接聊ReAct怎么落地。问题单纯的Prompt Tool Call为什么不够你可能会说“给LLM配几个工具的Function Calling不就行了吗”行但不完全行。举个我踩过的坑。我让一个Agent帮忙分析用户反馈数据。它需要先查数据库拿到最近一周的反馈然后做个情感分析最后输出一个报表。如果只用Function CallingLLM会尝试一步到位——“好的我来查数据、分析情感、生成报表”。但问题是它不知道自己的查询结果质量如何也不知道情感分析结果出来后有没有异常需要二次验证。这就好比一个程序员写完代码不测试就直接上线。能跑是运气崩了是常态。核心思想思考 → 行动 → 观察 → 再思考ReAct的全称是 Reasoning Acting。核心就四个字边想边做。传统的LLM调用流程是输入 → LLM → 输出ReAct的流程是输入 → LLM思考我要做什么→ 行动调用工具→ 观察工具返回的结果→ 再思考结果是否合理下一步做什么→ 再行动 → ... → 最终输出这个循环让Agent有了反馈回路。每一步的结果都会影响下一步的决策。一个完整的ReAct循环长什么样我看过最清晰的解释是论文里的一个例子。问Agent“在加州哪里可以买到Xbox”思考: 用户想知道Xbox的购买地点。我需要查一下加州的零售信息。行动: search(“加州 Xbox 购买地点”)观察: 搜索结果返回了GameStop、Best Buy、Target和微软官网的链接思考: 搜索结果包含了实体店和线上渠道。用户问的是买可能包括两者。让我进一步搜一下有没有具体的优惠信息。行动: search(“Xbox Series X 加州的库存情况”)观察: 有些店有现货有些显示缺货思考: 我可以整理一下哪些店有现货以及购买渠道。最终回答: 在加州你可以去GameStop、Best Buy等实体店购买或者上微软官网下单。目前GameStop和Best Buy部分店面有现货…看到了吗每一步都是我想一下 → 我做一下 → 我看结果 → 我再想一下。工程实现怎么落地ReAct理论说完了聊点干的。我试过两种实现方式各有千秋。方式一手动管理循环这是最直接的方式。你手动维护一个思考-行动-观察的循环队列。核心代码框架大概是这样defreact_loop(user_input,max_steps10):messages[{role:system,content:REACT_SYSTEM_PROMPT},{role:user,content:user_input}]forstepinrange(max_steps):responsellm.call(messages)ifresponse.has_final_answer:returnresponse.final_answer actionparse_action(response.text)observationexecute_tool(action.name,action.args)messages.append({role:assistant,content:response.text})messages.append({role:tool,content:observation})returnMax steps reached关键点在于system prompt要写得够好。论文里推荐在System Prompt中给出明确的格式要求让LLM知道每一步应该输出什么。我用的System Prompt模板是这样的你是一个智能Agent。你需要通过思考→行动→观察的循环来完成任务。 每轮你需要输出 1. 思考(Thought)分析当前状态决定下一步做什么 2. 行动(Action)调用一个工具函数 3. 观察(Observation)工具返回的结果由系统填充 当你认为任务已经完成时输出最终答案(Final Answer)。 可用工具列表 - search(query): 搜索网络信息 - calculate(expression): 执行数学计算 - ...说实话这种方式简单直接但有一个问题——Token消耗大。每一步的思考和行动都会产生大量的Token输出。如果你的task需要5-6步光是ReAct循环本身的Token消耗就够你心疼的。方式二用Agent框架偷懒的方式是直接用现成的Agent框架。LangChain、LangGraph、CrewAI、AutoGen这些框架都内置了ReAct支持。以LangGraph为例它把ReAct封装成了一个Node Edge的图结构fromlanggraph.graphimportStateGraph,ENDfromlanggraph.prebuiltimportToolExecutor# 定义Agent节点defagent_node(state):messagesstate[messages]responsellm_with_tools.invoke(messages)return{messages:[response]}# 定义工具节点deftool_node(state):messagesstate[messages]last_messagemessages[-1]tool_callslast_message.tool_calls resultstool_executor.batch(tool_calls)return{messages:results}# 构建图graphStateGraph(AgentState)graph.add_node(agent,agent_node)graph.add_node(tools,tool_node)graph.add_conditional_edges(agent,should_continue,{continue:tools,end:END})graph.add_edge(tools,agent)框架的好处是帮你处理了循环逻辑、上下文管理、错误重试这些脏活。但代价是——你失去了对每一步的精细控制。如果你的场景需要非常定制化的ReAct逻辑手撸可能更灵活。踩坑记录这东西看着简单但真正用起来有几个坑。坑1LLM喜欢跳过思考我遇到过一个奇怪的问题LLM在某个轮次突然不输出了Thinking直接给出了Final Answer。排查后发现是模型觉得结果已经够好了。但这往往是因为它忽略了某些细节。解决办法在System Prompt里加上除非任务明确完成否则每一步都必须包含思考步骤的约束。坑2循环不终止有些问题没有明确的完成条件Agent会在工具调用和观察之间来回跳跃永远不停。解决方案设置最大步数限制我一般设5-8步超时后返回当前最好的结果。坑3观察结果太长工具返回的数据可能非常长比如一次搜索返回10条结果这些内容全部塞进上下文Token爆炸。方案对观察结果进行摘要。只保留关键信息丢掉冗余内容。这招能省至少30%的Token。什么时候用ReAct什么时候不用我个人觉得ReAct最适合的场景是多步骤推理任务需要多次查询/计算才能得出结论的需要纠错的任务第一次行动的结果可能不准确需要二次验证决策路径不确定的任务Agent需要根据中间结果动态调整策略不适合的场景简单的QA用户问今天天气怎么样直接查天气API返回结果就行不需要思考循环高实时性场景ReAct的每一次循环都需要一次LLM调用延迟不可控Token敏感场景ReAct的Token消耗比普通问答高一个数量级写在最后ReAct不是什么黑魔法。它的核心思想很简单让LLM的推理过程和实际行动交替进行互相验证。这个思路不仅在Agent领域有用在日常编码中也有启发——别写一段超长的代码再debug而是一小段一小段地写每写完一段就跑一下看看结果。高效多了。如果你也想在项目中引入Agent能力建议从ReAct开始。它是最基础、最可控的Agent范式也是理解和实现更复杂Agent架构比如Tree-of-Thought、Multi-Agent的基石。下一篇我打算聊聊Tree-of-Thought让Agent做更深层次的规划。感兴趣的可以关注一波。

相关文章:

ReAct范式实战:让Agent学会边想边做

说实话,我第一次看到ReAct这个论文标题的时候,内心是拒绝的。 "又是个学术界造的概念吧?"我当时想。 直到我真的在一个实际项目里试了一下,才发现——这玩意儿真的不是花架子。它是Agent从"傻傻地问一句答一句&quo…...

如何快速掌握TMD Matlab Toolbox v2.5:终极潮汐模型驱动指南 [特殊字符]

如何快速掌握TMD Matlab Toolbox v2.5:终极潮汐模型驱动指南 🌊 【免费下载链接】TMD_Matlab_Toolbox_v2.5 项目地址: https://gitcode.com/gh_mirrors/tm/TMD_Matlab_Toolbox_v2.5 TMD Matlab Toolbox v2.5(潮汐模型驱动工具箱&…...

应对Turnitin检测升级:我是如何用5款工具+3个指令把英文论文AI率清零的

随着ai的发展,初稿的aigc率检测也是提上日程,对于非母语者来说,写出英文文章已经很不容易了,再进行英文降ai更是难上加难,所以英语降aigc一定要了解清楚各种工具的优势,我们才能更好地对症下药。 所以我特…...

VMware Workstation Pro 17 免费激活终极指南:5000+许可证密钥完整教程

VMware Workstation Pro 17 免费激活终极指南:5000许可证密钥完整教程 【免费下载链接】VMware-Workstation-Pro-17-Licence-Keys Free VMware Workstation Pro 17 full license keys. Weve meticulously organized thousands of keys, catering to all major versi…...

改进残差收缩网络轴承声发射信号识别【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,查看文章底部二维码(1)辛几何模态分解动态阈值优化:针对声发射…...

CefFlashBrowser:Flash内容重获新生的终极解决方案

CefFlashBrowser:Flash内容重获新生的终极解决方案 【免费下载链接】CefFlashBrowser Flash浏览器 / Flash Browser 项目地址: https://gitcode.com/gh_mirrors/ce/CefFlashBrowser 在Flash技术已被现代浏览器淘汰的今天,你是否还在为无法访问那些…...

为什么我的Nginx配置了gzip,但响应头里没有?

为什么我的Nginx配置了gzip,但响应头里没有? 在网站性能优化中,启用gzip压缩是减少传输数据量、提升加载速度的常见手段。许多用户在Nginx中配置了gzip后,却发现响应头中并未出现预期的Content-Encoding: gzip字段。这种情况可能…...

如何实现SQL表结构变更后的数据修正_利用INSERT SELECT

INSERT SELECT 能修正老数据,但仅适用于结构兼容场景,需显式列名映射、处理NULL、分批执行、规避约束冲突,并统一字符集与排序规则。INSERT SELECT 能不能直接修老数据能,但只适用于「结构兼容」的变更场景。比如加了可空字段、改…...

Ansys | 传统烤箱 vs 对流烤箱:饼干加热过程的热分析对比

概述 传统烤箱主要通过加热元件的辐射来加热食物。对流烤箱除了辐射外,还使用强制对流来加热食物。在本问题中,我们不模拟辐射,而是重点比较传统烤箱(自然对流)和对流烤箱(强制对流)中发生的传…...

字节一面:省市区多级缓存怎么做?别上来就吹 Hash 和 ZSet 了!

写在开头一位 3 年经验的粉丝在群里复盘他的字节跳动一面。面试官抛出了一个经典的日常需求:“像电商 App 里的‘省-市-区’三级地理位置接口,读请求极高。如果要加缓存,你会怎么设计这套多级树状数据模型?”这位兄弟心想这题网上…...

测试环境搭建

测试环境搭建:软件质量的基石 在软件开发过程中,测试环境搭建是确保产品质量的关键环节。一个稳定、高效的测试环境能够帮助开发团队快速发现并修复问题,减少线上故障的风险。无论是功能测试、性能测试还是安全测试,都需要依赖合…...

伯克利、哈佛、宾夕法尼亚、斯坦福重磅综述:“学习力学”将成为深度学习的科学理论

来源:清熙来自Berkeley,Pennsylvania,Harvard,New York,Stanford大学等多位顶尖学者联合发表综述【文献1】,为深度学习的科学理论做奠基。观点论文开篇提出,一个能刻画神经网络训练过程、隐藏表…...

艾倍生推三返一模式系统源码分析

艾倍生推三返一模式通常指的是一种营销或分销模式,用户通过推荐他人购买产品或服务,根据推荐人数获得返利或奖励。这种模式在电商、社交电商、直销等领域较为常见。实现推三返一模式的核心功能用户层级管理设计数据库表结构存储用户关系,通常…...

Google Apps Script 实现无缝用户重定向

在构建基于 Google Apps Script 的 Web 应用时,用户登录后的重定向是一个常见的需求。本文将详细介绍如何通过 Google Apps Script 实现用户登录成功后无缝跳转到仪表板页面,并解决常见的问题。 背景 假设我们正在开发一个简单的 Web 应用,该应用包含登录功能。登录成功后…...

安捷伦E4402B频谱分析仪E4404B

安捷伦E4402B频谱分析仪E4404B主要技术指标性 能:0.4 dB的总体幅度精度16 dBm TOI-166 dBm DANL,带有内置前置放大器1 Hz窄分辨率带宽(可选)测量应用软件相噪、噪声系数、GSM/EDGE、cdmaOne等 测量应用软件包括功率套件,可进行一键…...

状态空间模型与长序列建模:MemMamba的创新与实践

1. 状态空间模型与长序列建模的挑战在自然语言处理、生物信息学和时间序列分析等领域,处理超长序列数据已成为一项基础性挑战。传统序列建模方法在面对数千甚至数百万时间步的连续数据时,往往陷入效率与性能的两难境地。1.1 现有方法的局限性循环神经网络…...

MacOS上使用CoreBluetooth框架的BLE适配器选择指南

引言 在物联网(IoT)应用开发中,蓝牙低功耗(BLE)技术是非常常见的一种无线通信方式。开发者常常需要使用BLE中央设备(如Mac)来扫描、连接并与BLE外设进行数据交换。然而,如何在MacOS上选择特定的BLE适配器(例如外部USB BLE适配器)并不是一件显而易见的事。本文将探讨如何在Ma…...

全屏图像与动态元素的完美结合

在现代网页设计中,如何在全屏背景图上叠加动态元素是一个常见而有趣的挑战。我们希望背景图像能够覆盖整个屏幕,同时能够在其上放置一些小图片,进行动画效果的展示。今天,我们将探讨如何实现这个效果,并且确保在不同屏幕尺寸下都能保持一致的视觉体验。 问题背景 传统上…...

PaddleOCR-VL双模态文档解析技术详解

1. PaddleOCR-VL技术架构解析PaddleOCR-VL作为当前文档解析领域的前沿解决方案,其核心技术架构采用了双模态融合设计。视觉侧采用NaViT(Non-isometric Vision Transformer)风格的编码器,这种结构能够灵活处理不同长宽比和分辨率的…...

雷士照明护眼灯怎么样?书客、雷士、米家三大护眼大路灯实测比拼

作为一名长期关注家居护眼灯的测评博主,实测过市面上不少护眼大路灯发现,很多所谓护眼灯看起来参数出众,但在实际使用中光线直射、蓝光偏高或亮度不均匀的情况下,长期使用可能导致眼睛疲劳、干涩,甚至加速视力下降&…...

Movelt2 规划场景 ROS API

文章目录前言一、使用rviz可视化二、ROS API1.发布所需话题2.定义附着碰撞物体的消息3.将一个对象添加到环境中4.同步更新和异步更新的区别5.将一个物体连接到机器人上6.从机器人上分离一个物体7.将物体从碰撞世界移除总结前言 本文整理的是 MoveIt2 官方示例 主要学习 添加和…...

FreeModbus释放底层的 TCP 监听端口

背景 有Modbus和scpi两种协议,在使用过程中要切换,每次切换要给给对应协议绑定端口 问题 在每次切换协议之前都这样操作,把所有连接都关闭仔进行重新绑定// 尝试禁用ModbuseMBDisable();// 尝试关闭SCPI服务器的监听和客户端连接if (server_s…...

NI实时机(PXI)从裸机到联调:RT Linux系统安装与上电自启配置全流程

NI实时机(PXI)从裸机到联调:RT Linux系统安装与上电自启配置全流程 当一台崭新的NI PXI实时机从包装箱中取出时,它就像一块未经雕琢的璞玉——硬件性能强劲却缺乏灵魂。作为硬件在环(HIL)测试系统的核心&am…...

手把手教你用PE工具绕过Deep Freeze 8.63密码(附完整脚本和注册表清理)

深度解析:如何安全绕过Deep Freeze 8.63密码保护机制 当公共计算机环境的管理密码意外丢失时,整个系统的维护更新就会陷入僵局。这种情况在学校机房、网吧和企业公用电脑中尤为常见,而Deep Freeze作为广泛使用的系统保护工具,其密…...

如何用DyberPet桌面宠物框架重构你的数字生活体验?

如何用DyberPet桌面宠物框架重构你的数字生活体验? 【免费下载链接】DyberPet Desktop Cyber Pet Framework based on PySide6 项目地址: https://gitcode.com/GitHub_Trending/dy/DyberPet 在数字生活日益普及的今天,桌面环境已不再仅仅是工作空…...

NVIDIA Jetson AGX Thor:边缘AI性能优化与量化技术实战

1. NVIDIA Jetson AGX Thor:边缘生成式AI性能的7倍跃升NVIDIA Jetson AGX Thor的发布标志着边缘计算领域的一次重大突破。作为长期从事边缘AI部署的工程师,我亲历了从Jetson Xavier到Orin再到Thor的迭代过程。Thor平台最令人振奋的不仅是其硬件规格的提升…...

Day06-06.实现点赞功能-实现点赞或取消点赞接口24:07

之前那个账号,要钱,不想给换了一个...

文件怎么防泄密?推荐六个好用的文件防泄密软件,建议收藏

悬在企业头顶的达摩克利斯之剑张总最近彻夜难眠。他经营着一家专注于精密零件设计的公司,半年前刚拿下一项核心技术专利。可就在上周,竞标现场竟然出现了与自家设计图相似度高达百分之九十的产品,而对方的报价刚好比张总低了五个百分点。经过…...

Laravel 12新特性×AI工程化落地:从Native JSON Schema Validation到AI生成Migration的全自动闭环(含可复用Composer包)

更多请点击: https://intelliparadigm.com 第一章:Laravel 12新特性AI工程化落地:从Native JSON Schema Validation到AI生成Migration的全自动闭环(含可复用Composer包) Laravel 12 引入了原生 JSON Schema 验证支持&…...

本地部署 Qwen2.5-1.5B-Instruct 全流程教程|Ollama + 魔搭双方案

在人工智能技术飞速发展的今天,大语言模型已经从云端服务走向本地部署,轻量化大模型凭借体积小、速度快、无需联网、隐私安全等优势,成为 AI 开发者、编程爱好者入门学习的最佳选择。Qwen2.5-1.5B-Instruct 作为通义千问系列的轻量级开源模型…...