ReAct 原理深度拆解:12 行代码到生产部署的完整指南
场景LLM 能回答问题但无法完成多步任务——ReAct 给 LLM 装上了思考→行动→验证的试错循环路径一个答不出的问题 → 最简实现 → 每轮 Token 账单 → 决策框架 → 一句话锚点上篇我们提到 ReAct 是 Agent 最核心的执行模式——看一眼三元组图就懂了。但一张图能告诉你的事太少了它不告诉你每轮消耗多少 Token、不告诉你什么情况下会死循环、不告诉你生产实现和教程实现差了多远。这篇我们把工具箱掀开12 行核心代码背后的隐藏成本、逐轮的 Token 增长曲线、以及一个决策框架——什么场景该用 ReAct什么场景不该。如果你上篇理解了ReAct 是 Thought→Action→Observation这篇帮你理解ReAct 内部到底怎么运转以及什么时候该用它。一个 LLM 答不出的问题ReAct 不是 2025 年的新算法——它是人类解决问题最自然的方式想一下试一下看看结果再想。如果你观察过自己怎么解决一个复杂问题你已经理解了 ReAct 的核心。区别只在于你把想和试放在大脑里ReAct 把试的结果显式写进下一轮的输入。看一个具体问题帮我查明天上海天气如果下雨就定一个早上 8 点的闹钟。对普通 LLM 来说这是一个不可能完成的任务——不是因为它难而是因为它需要多步、需要外部信息、需要条件判断。传统 LLM 的调用模式是一次请求一次回答没有查完了再决定的机制。左半传统模式——LLM 根据训练数据猜测答案。如果训练数据截止于某天、或者天气 API 不在训练集里它只能编一个。右半ReAct 模式——LLM 先推理我需要查天气然后调用工具获取真实数据再基于真实数据做决策。问题的本质传统 LLM 调用是一次性的User Input → LLM → Response。所有推理都发生在一次前向传播中。对于需要外部信息、多步推理、条件分支的任务这种模式注定失败。ReAct 把一次调用拆成了多次每次只做三件事推理当前状态、决定下一步行动、观察行动结果。每次行动的结果都成为下一次推理的上下文——这才是 ReAct 的核心机制。ReAct 的驱动力为什么需要 ReAct因为 LLM 有一个根本局限它无法验证自己的输出。传统编程中你写a b编译器告诉你结果对不对。LLM 写一段文字没有编译器——它自己不知道是对是错。ReAct 引入了一个外部验证器工具调用的结果。LLM 说查一下天气API 返回的数据就是验证——如果返回了温度说明查成功了如果返回了错误说明参数不对。三元组Thought → Action → ObservationReAct 的每一轮输出包含三部分Thought当前状态分析、Action具体要执行的操作、Observation工具返回的结果。下一轮的 Thought 基于上一轮的 Observation 做修正——形成闭环。这三个词之间的关系不是串行的是互相驱动的Thought 决定 ActionAction 产生 ObservationObservation 修正下一轮的 Thought。上篇用一张图展示了这个循环这篇我们用代码和逐轮拆解来看它到底怎么转。最简 ReAct12 行代码抛开理论ReAct 的核心就是一个循环这 12 行背后表面上看是一个 while 循环但有三个隐藏成本Token 消耗逐轮增长。Token 是 LLM 处理文本的最小单位类似编程语言的字符——英文一个词约 1-2 个 Token中文一个字约 1-2 个 Token。每一轮的 Thought、Action、Observation 都追加到消息列表。第 1 轮可能 500 Token第 5 轮可能 3000 Token基于 GPT-4 典型对话场景估算具体消耗取决于模型上下文窗口和工具返回数据量。如果任务需要 10 轮Token 消耗不是线性增长是逐轮加速增长——因为每轮的输入包含前面全部输出。工具执行有延迟和失败率。tools.execute(reply.action)这行代码隐藏了整个外部调用的复杂度。API 可能超时、可能返回错误、可能返回了数据但格式不对。ReAct 需要处理这些——最简实现没有生产实现必须有重试和超时。最终答案的判断标准不明确。reply.type final是 LLM 自己决定的。LLM 可能过早宣布完成幻觉也可能永远不宣布完成死循环。生产系统中需要额外的判断逻辑是否达到了目标是否超过了预算教程 vs 生产3 个差距上面这个版本是每个 ReAct 教程都会展示的玩具实现。把它部署到生产环境你至少还要加 3 样东西差距 1容错。玩具实现假设tools.execute永远成功。生产中每个 API 都可能超时或报错。真实的 ReAct 实现需要重试策略、超时阈值、降级方案——比如工具返回 500 错误时LLM 应该重试还是换工具差距 2Token 预算。玩具实现假设无限上下文。生产中你必须给每轮对话设置 Token 预算上限。LLM 选了 128K 上下文窗口的模型不等于你应该用完 128K。合理的做法设定每轮最大 Token 数超限就截断或归档。差距 3可观测性。玩具实现无日志。生产系统必须记录每一步的 Thought、Action、Observation、Token 消耗和执行时间。否则当你发现 Agent 花了 1 万 Token 只做了两个 API 调用时你根本不知道哪里出了问题。传统方案的差异对比传统的 if-else 状态机维度传统状态机ReAct状态定义开发者手动编码LLM 动态推理转移逻辑硬编码条件分支LLM 生成下一步错误处理预定义异常路径观察结果后自适应扩展成本新增状态需改代码新增工具即可ReAct 不是用 LLM 替代代码——它是把决策逻辑从代码搬到模型里。传统状态机中开发者必须预判所有可能的状态和转移。ReAct 中LLM 根据当前上下文动态决定下一步开发者只需要提供工具。下次遇到 ReAct 这个概念先理解这个核心机制——ReAct 不是循环是 LLM 的调试器。每次行动都是断点每次观察都是 print()。传统编程中调试的流程是设断点 → 运行 → 检查变量 → 调整代码 → 重新运行。ReAct 中输出 Thought像设断点前的推理 → 执行 Action像运行到断点 → 拿到 Observation像打印变量 → 修正下一步像调整代码。循环只是形式调试才是本质。逐轮拆解当 LLM 学会边做边看回到开头的例子——“查明天上海天气如果下雨就定闹钟”。让我们逐轮跟踪 ReAct 的执行过程。第 1 轮LLM 根据已知知识推理输入上下文只有用户问题。LLM 需要先理解任务判断需要什么信息。LLM 的输出Thought: 用户想知道上海明天的天气还需要根据是否下雨决定是否设闹钟。我需要先查天气。天气 API 需要城市名称和日期。Action:get_weather(city: 上海, date: 2026-07-06)这里的关键是LLM 没有任何已知的天气信息。它只是推理出我需要先查然后发出工具调用请求。它知道自己不知道。第 2 轮Observation 修正推理工具返回了天气数据。现在 LLM 看到了真实信息进入下一轮推理。新的输入上下文 用户问题 第一轮的 Thought 工具返回的天气数据。LLM 的输出Thought: 工具返回上海明天多云25°C降雨概率 30%。30% 不算高但多云说明有降雨可能。用户说如果下雨就定闹钟。稳妥起见我应该设闹钟。Set Alarm 工具需要时间和标签。闹钟定在早上 8 点。Action:set_alarm(time: 08:00, label: 上海明天可能有雨起床注意)这一轮的 Thought 和第二轮的 Observation 紧密相关。如果没有上一轮的工具返回LLM 只能猜测天气——有了 Observation它的推理有了事实基础。第 3 轮验证完成工具返回闹钟设置成功。LLM 判断任务已完成。LLM 的输出Thought: 天气已查闹钟已设。所有子任务都完成了。给出最终回复。Final: “上海明天7月6日多云25°C降雨概率 30%。已帮你设置早上 8 点的闹钟以防下雨影响出行。”Token 账单三轮下来花了多少每一轮都在追加上下文。来看三轮下来的累计 Token 消耗基于 GPT-4 典型对话估算实际会有浮动轮次本轮输入本轮新增累计 Token第 1 轮用户问题~150~150第 2 轮第1轮全部输出 天气数据~650~800第 3 轮第2轮全部输出 闹钟结果~1200~2000三轮下来用掉了约 2000 Token。其中只有最后 ~100 Token 是输出给用户的 Final Answer前面 95% 都是中间步骤——这是 ReAct 的固有开销用大量 Token 换取准确性。这也是为什么 ReAct 不适合简单问答——你本来可以用 200 Token 换一个直接回答现在用了 2000 Token。换来了准确率从 70% 提升到 95% 左右代价是成本翻 10 倍。值不值取决于问题的重要性。什么时候 ReAct 会失败ReAct 不是银弹。三个常见失败场景死循环。LLM 不断重复相同的 Thought→Action→Observation每次 Observation 都一样但 LLM 认为再试一次可能不同。解决方法最大步数限制 重复检测。过早终止。LLM 在关键工具还没调用时就认为任务完成。比如只查了天气就给出任务完成而忘记了设闹钟。解决方法更详细的 System Prompt 任务完成判断标准。工具选择错误。LLM 选了参数不对的工具或者理解错了工具的功能。解决方法更好的工具描述 错误信息的重试机制。选型指南什么时候用 ReAct上篇提到了三种 Agent 模式ReAct、Plan-then-Execute、Reflection。它们不是互斥的各有适用场景。模式适用场景不适合典型成本ReAct多步推理 工具调用简单问答浪费 Token每轮 ~500 TokenPlan-then-Execute步骤明确、依赖清晰的流水线信息不确定的动态任务一次规划 ~1000 TokenReflection需要质量验证的输出场景对延迟敏感的场景翻倍 Token标准 LLM 调用单次问答、知识查询需要外部信息的任务最低一个简单判断如果任务需要查完后决定下一步用 ReAct如果任务步骤已知、每步做什么早就清楚用 Plan-then-Execute如果任务不确定答案质量是否够好加上 Reflection。ReAct 和 Plan-then-Execute 也不是二选一——成熟的 Agent 系统会把两者组合使用先规划再执行每步执行内嵌 ReAct 循环。记住一句话理解 ReAct 不需要记住论文公式。“ReAct 把调试思维装进 LLM——每次行动都是断点每次观察都是 print()”下次有人问你 ReAct 是什么先从这句话开始。然后问一个问题“一个 LLM 答不出的多步问题ReAct 怎么一步步解决”如果答案是先想需要什么信息去拿看到结果再决定下一步——你已经理解了 ReAct。

相关新闻

零基础Windows驱动清理教程:Driver Store Explorer高效给驱动仓库瘦身

零基础Windows驱动清理教程:Driver Store Explorer高效给驱动仓库瘦身

零基础Windows驱动清理教程:Driver Store Explorer高效给驱动仓库瘦身 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 想给Windows做一次彻底的驱动清理,却不敢动…

2026/9/26 0:51:48 阅读更多 →
Obsidian多设备同步方案:Git与坚果云混合实践

Obsidian多设备同步方案:Git与坚果云混合实践

1. 为什么需要多平台同步方案作为一款本地优先的Markdown笔记工具,Obsidian最大的优势在于数据完全存储在用户自己的设备上。但这也带来了一个现实问题:如何在多个设备间安全高效地同步笔记?我尝试过多种方案后,最终形成了这套结合…

2026/9/26 9:55:34 阅读更多 →
从零到一的免费法线贴图生成器:NormalMap-Online 三步把灰度图变 3D 质感

从零到一的免费法线贴图生成器:NormalMap-Online 三步把灰度图变 3D 质感

从零到一的免费法线贴图生成器:NormalMap-Online 三步把灰度图变 3D 质感 【免费下载链接】NormalMap-Online NormalMap Generator Online 项目地址: https://gitcode.com/gh_mirrors/no/NormalMap-Online 凌晨两点,我盯着场景里那面光秃秃的砖墙…

2026/9/26 0:03:41 阅读更多 →

最新新闻

群辉做网站服务器python到底多少钱?避坑指南

群辉做网站服务器python到底多少钱?避坑指南

群辉做网站服务器python到底多少钱?避坑指南 模板网站太丑不够用,想自己用Python搞个服务器部署,到底要花多少钱?这是很多刚入行的东北前端兄弟常问我的问题。别急,咱们今天不整那些虚头巴脑的理论,直接上干货,把成本算得明明白白,让你心…

2026/9/27 10:57:02 阅读更多 →
Agilent 53150A微波频率计原理与高精度测量实践

Agilent 53150A微波频率计原理与高精度测量实践

1. 这台“老将”到底能干啥?——Agilent 53150A不是万能表,但它是频率测量领域的“精密标尺”Agilent 53150A 频率计,这个名字在电子测试实验室里,尤其是做射频、微波、时钟源校准和通信系统验证的工程师嘴里,从来不是…

2026/9/27 10:57:02 阅读更多 →
5557连接器选型与供应商对比实战指南

5557连接器选型与供应商对比实战指南

干硬件和供应链这行,最烦的就是找料。芯片缺、电阻涨价这些还能忍,最容易被忽视的反而是连接器这种不起眼的玩意儿——画原理图的时候它就是一个小方块,等要打样、要量产了才发现,同样写着“5557-2P”,有的厂报价几分钱…

2026/9/27 10:57:02 阅读更多 →
Ubuntu 22.04 / 24.04 / 26.04 更换国内阿里源完整教程(区分 DEB822 新 / 旧源格式)

Ubuntu 22.04 / 24.04 / 26.04 更换国内阿里源完整教程(区分 DEB822 新 / 旧源格式)

前言随着 Ubuntu 版本迭代,APT 软件源配置分为两种格式:传统单行 sources.list 格式与全新 DEB822 标准格式,不同版本配置文件路径、写法完全不同,混用会直接报格式错误。Ubuntu22.04:仅使用 /etc/apt/sources.list 老…

2026/9/27 10:57:02 阅读更多 →
驱动能跑却会崩?量产级嵌入式驱动的稳定性攻坚指南

驱动能跑却会崩?量产级嵌入式驱动的稳定性攻坚指南

在实际的驱动开发项目里,"驱动能跑了"和"驱动没问题了"是两句经常被混为一谈的话。如果你做嵌入式开发的时间够长,一定遇到过我前面描述的那一幕:代码在开发板上调通了,串口输出正常,功能测试全过…

2026/9/27 10:57:02 阅读更多 →
pixi 全局清单(Global Manifest)完全指南:pixi-global.toml 的结构、位置与全部配置项

pixi 全局清单(Global Manifest)完全指南:pixi-global.toml 的结构、位置与全部配置项

开发工具CLI包管理器任务调度 【免费下载链接】pixi Powerful system-level package manager for Linux, macOS and Windows written in Rust – building on top of the Conda ecosystem. 项目地址: https://gitcode.com/gh_mirrors/pi/pixi 点击查看 免费下载 pi…

2026/9/27 10:56:02 阅读更多 →

日新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:34 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:34 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/27 0:00:34 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/9/27 0:00:34 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/9/27 0:00:34 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/9/27 0:00:34 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/27 9:12:14 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/25 20:29:31 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/26 22:52:30 阅读更多 →