ReAct 与普通函数调用、工作流编排有什么区别?

考查重点:动作接口与决策控制流。Function Calling 是动作接口,ReAct 是观察后再决策的循环,Workflow 管控制流;ReAct 可通过函数调用嵌进工作流

本题目录

参考答案

核心回答

三者不能直接当成同一层的替代品:函数调用是动作接口,ReAct是根据反馈持续决策的模式,工作流编排是组织控制流的方式。 ReAct可以通过函数调用执行工具,也可以作为工作流的一个节点;LangGraph等框架则能承载固定流程与动态循环,不等同于某一种模式。

分别在做什么

普通程序调用函数时,通常由代码决定调用顺序和参数。LLM的Function Calling则由模型提出工具名与结构化参数,宿主校验后执行,再把结果返回模型。这解决“如何表达和执行一次动作”,并不自动规定后续要循环多少次、如何规划或何时停止。

ReAct强调推理与行动交替:根据当前信息选择动作,获取外部观察,再调整下一步。它不要求工程系统把完整内部推理展示给用户;实现时关键是工具调用、结果、简短决策依据和状态能形成反馈闭环。只输出一串预定函数,执行中不根据结果调整,不能充分体现这一点。

工作流用代码或图规定阶段、依赖、分支、循环与异常路径。它可以有条件判断和回边,不是只能从左到右跑一次;主要路线和允许的转移通常由开发者显式设计。模型也可以在节点内做分类、生成或局部决策。

用一个任务比较

假设需要排查接口变慢。

函数调用提供“查指标”“查日志”“读取配置”等能力。固定工作流可以规定先查延迟和错误率,再按条件分支检查数据库或服务实例,最后汇总。

ReAct则允许模型根据观察决定下一步:看到慢SQL后查询执行计划,发现索引没有问题再检查锁等待。它有探索性,但也可能重复查相同信息、被噪声带偏,或忽略已经足够的证据。

实际项目可以用工作流固定环境准备和产物检查,中间排查阶段运行有限的ReAct循环,函数调用承接具体动作。这比只比较三个名字更能说明自己的编排系统做了什么。

取舍与实现边界

步骤清楚、依赖稳定、需要可预测执行的任务优先工作流;信息会逐步揭示、路径难以预先穷举的任务适合动态Agent循环。一次函数调用足以解决的问题,无需额外包装复杂Agent。

无论采用哪种方式,都要定义状态、工具契约、超时和失败处理。ReAct尤其需要预算、重复动作检测和可验证终点;工作流则要处理状态恢复和外部副作用,不能认为画了图就天然可靠。

面试中解释自研编排系统,可以围绕“谁决定下一步、状态存在哪里、反馈如何影响路线、错误后从哪恢复”展开。技术亮点是将接口、决策和运行时控制区分开,再按任务组合。

对应教程

参考资料

  • 国内:JavaGuide:ReAct范式:借鉴 ReAct 循环组件与反馈例子,说明正文中推理、工具执行和观察如何在程序中衔接。
  • 国内:zero2Agent:工具管理:依据工具参数与执行边界,区分正文中的单次函数调用和完整反馈循环。
  • 国内:JavaGuide:Workflow、Graph与Loop:依据分支、循环与状态更新机制,说明正文中工作流为何不局限于单向固定链。
  • 国外:Yao等:ReAct:依据原论文的推理、行动、观察交替机制及循环错误分析,说明正文中 ReAct 的含义与运行局限。
  • 国外:Anthropic:Building effective agents:采用预定义工作流与动态 Agent 的比较,说明正文中组合方式及其适用任务。

相关面经

4 篇

阿里巴巴

AI 应用开发工程师
秋招一面
查看原面经 →
为什么不用react?

迅雷

全栈开发工程师
一面
查看原面经 →
React和你的workflow优劣

极兔

大模型
实习
查看原面经 →
-ReAct 模式是什么?它和普通函数调用、工作流编排有什么区别? #发面经攒人品#

腾讯

后端开发工程师
一面
查看原面经 →
我做的这个agent编排系统和 ReACT 以及 LangGraph 有什么区别

相关题目

4 题