ReAct 循环是什么?AI 想一步做一步,智能体的执行骨架(2026入门)

你让 AI 助手帮你查一个数字,它张口就报了个数,报错了。你追问来源,它道歉,然后又编了一个。这种事你可能遇过不止一次。

2022 年 10 月,普林斯顿大学和 Google Brain 的七位研究者发了一篇论文,标题就叫 ReAct,Reason 加 Acting 的合成词。他们的想法不复杂:别让模型光靠脑子想,让它把「想」和「做」交错起来,想一步,做一步,把动作拿回来的结果再看一眼,接着想下一步。论文 2023 年中了 ICLR,现在几乎所有智能体框架里跑的那个循环,骨架都是它。

这篇就讲清楚一件事:这个循环到底是怎么转的。

光会想,和会想做结合,差别在哪

先看老办法。你让模型推理,它闷头想:先这样,再那样,所以答案是这个。一路写到底,中途不查任何资料。这套做法就是思维链,我之前写过(思维链是什么),它确实能让模型成绩变好,但有个先天短板:所有前提都在模型脑子里,参数里记错了,后面全跟着错。

ReAct 论文里测过这个。同一批多跳问答题,纯思维链的模型会一路编下去,错得还特别连贯。ReAct 的做法是中间插进「查一下维基百科」这个动作,查回来的结果直接写进推理过程,编不下去的地方有真实资料兜底。论文的原话是,ReAct「通过与一个简单的 Wikipedia API 交互,克服了思维链推理中常见的幻觉和错误传播问题」。

这不是两句提示词的差别,是给模型接上了手。

循环长什么样:想一步,动一步,看一眼

一个 ReAct 轮次就三样东西:Thought(我想干什么)、Action(我要调用哪个工具)、Observation(工具返回了什么)。跑完一轮,结果并回上下文,接着下一轮。

看个真实例子,这是 Simon Willison 2023 年 3 月照着论文自己复刻的极简版,他用 ChatGPT 的 API 做了个只会两件事的小机器人:查维基百科、搜他自己的博客。他问它「英格兰和哪些国家接壤」,机器人的实际输出是这样:

Thought: 我应该查一下英格兰的邻国
Action: wikipedia: England
PAUSE -- 执行 wikipedia England,把返回的摘要填进 Observation
Observation: 英格兰是联合王国的一部分,西边与威尔士接壤,北边与苏格兰接壤
Answer: 英格兰与威尔士和苏格兰接壤

拆开看。Thought 是模型在给自己写推理提纲。Action 是按约定格式发出的工具调用请求。Observation 不是模型生成的,是外部世界返回的真实数据,程序负责执行并把结果塞回去。

真正动手的是模型外面那段普通代码。Simon 的实现就一个 while 循环,逻辑很简单:从模型输出里解析出 Action,执行对应的函数,把结果拼成一条新消息发回去;哪一轮模型不再输出 Action,直接给了答案,循环就结束。他还设了个 max_turns=5 的保险丝,五轮还没收敛就强制停。就这么点代码,一个能查资料的问答机器人就跑起来了。

ReAct 还有个附带好处:过程看得见。论文里专门提了这点,说 ReAct 生成的行动轨迹带推理痕迹,比不带的方法更可解读,人也更容易信任它的答案。落到日常就是排障方便:智能体干砸了,翻它的 Thought 和 Action,一眼看到是哪一轮查错了词、点错了页面,而不用对着一个黑盒答案干瞪眼。

数字也可以给一个:论文在 ALFWorld(家务模拟环境)和 WebShop(购物模拟环境)两个基准上测了 ReAct,成功率分别比当时的模仿学习和强化学习方法高出 34% 和 10%,而 Prompt 里只放了一两个示例。

上下文在循环里滚雪球,成本要盯着

循环有个绕不开的副作用:每转一圈,上下文变长一点。

Simon 那个例子每轮只花几十个 token,感觉不到。真实智能体一圈要做的事多得多:读网页、扫文件、翻数据库,Observation 本身可能就是几千 token。转上十几圈,上下文被历史动作和结果塞满,两个麻烦跟着来:一是钱,输入 token 是按量计费的,圈数越多账单越贵;二是注意力,上下文太长模型会漏看中间的内容,我之前写过这个现象(Lost in the Middle),资料堆太多,模型偏偏看不见中间那段。

所以工程上要给循环上两道闸。一道是轮数上限,Simon 设的五轮就是这个,到点强制停,别让智能体无限转下去。另一道是 token 上限,圈数可以多,总消耗得封顶,接近上限就收尾。轮数管圈数,token 管总量,两道闸一起上。

Anthropic 在一篇工程博客里把 agent 的本质说得很直白:智能体「通常就是大模型在循环里依据环境反馈使用工具」,实现往往不复杂,难的是把工具的用途和参数设计清楚,再配好护栏。他们还建议给循环设最大迭代次数之类的停止条件,理由是模型自己收不住,你得帮它刹住车。

这也是我自己的体会。智能体翻车,多数时候不是模型不够聪明,是循环没人看着:轮数没上限,Observation 越滚越长,一圈错,圈圈错。

和你已经认识的那几个概念,是什么关系

这几个词经常一起出现,摆在一起看就清楚了。

Function Calling 是模型「提出想用工具」的机制,我之前写过(Function Calling 工具调用),但那次没讲循环怎么转:它解决「怎么发请求」,不解决「发完之后怎么办」。ReAct 就是接着往下讲的那个循环。

思维链是「想」的部分,ReAct 把「做」插了进去,让想的每一步都有机会被现实修正。

AI Agent 是整个系统,ReAct 是它干活时的骨架。Agent 还有记忆、规划这些别的零件,但真正跑任务时,转的就是这个环。想往上一层走,可以先看我之前写的 Agent 科普(AI Agent 到底是什么)。

结尾

把 ReAct 的循环摊开,其实就一句话:让模型把「打算干什么」说出来,把「干了之后看到什么」看回去,说看到位了再收工。

判断一个 AI 产品是真智能体还是套壳聊天,有个很省事的土办法:让它干一件要多步的活,盯着看它中间有没有真的去查、去试、去改。有,它就是在这个循环里跑;没有,那多半只是话说得漂亮。

下次你看到智能体在那儿一遍遍地「思考中、调用工具、拿到结果」,你就知道,那是 ReAct 在转。

发表评论