从 Workflow 到 ReAct,再到企业级 Agent 平台
前段时间上了一门 AI Agent 的课,这周把讲义翻出来,加上自己的理解整理成这篇笔记。
先说说为什么去上这门课。日常用 LLM 的体感挺分裂的:聊天、写文案、改稿子它都很溜,可真让它办一件具体的事,比如帮我把记录了上个月业务数据的那份文件找出来,它就开始露馅,要么一本正经编个文件名,要么两手一摊说做不到。聊天框里的智能和真实任务之间隔着一层东西,这层东西就是 Agent。
课程把 Agent 拆成三块:Workflow Agent、ReAct Agent、Agent 平台。前两块是两种完全不同的设计思路,第三块是怎么把单个 Agent 做成企业能用的东西。这篇笔记按同样的顺序写,重点在第二块,我会把一个 7 轮推理的完整实战案例原样拆开,案例数据都是课堂演示的原版。
一、Workflow Agent:到底该给 LLM 多大的自由空间
讲义开篇先泼冷水,列了 LLM 的三大短板:
- LLM 会有幻觉;
- LLM 只会说,不会做;
- LLM 规划的步骤不靠谱。
前两条大家应该有体感,第三条值得多说一句。让 LLM 自己规划一个多步骤任务,它给出的步骤经常看着像模像样,真执行起来漏洞百出。问题就来了,有些任务就是需要极强的准确度和可控性,财务对账、数据核对这类活,错一个数字都不行,怎么办?
Workflow Agent 的思路是把主动权从模型手里收回来,交还给设计者。讲义里有句话我直接抄在这:模型提供智能,Agent 保证结果。智能由模型出,但流程、步骤、校验规则都由人定,模型只在框定的范围内出力。
落到执行是四个手段:用 RAG 技术构建私有知识库,提升对话能力;用设计者定义好的 Workflow 完成特定任务;过程中使用工具完成 LLM 无法完成的任务;让 LLM 写代码,完成数据处理、数学计算。这几招有个共同点,模型每一步都被安排好了位置,没有自由发挥的空间。我自己的取舍也偏保守:凡是跟钱和数字打交道的活,宁可前期多花时间把流程画细,也不给模型留自由发挥的口子,后面排查问题省心得多。
课程给的架构图比文字直观:

图的最上层是用户交互界面。中间是 Agent 核心,装着 Prompt、LLM、工作流、数据库、向量库、触发器、代码执行这些组件。左右两排是它伸手能够到的 API:一边是外部工具类,地图、表单、搜索、数据获取都归这排;另一边是多模态能力类,识别、生图、生视频、语音、3D 生成归这排。具体是哪几家的 API,图上标得很清楚,就不逐个点名了。最底下是企业侧的家底:企业数据库、企业向量库、企业系统 API。
我的看法,Workflow Agent 的本质就是人设计流程,LLM 在流程内填智能。自由度低,可控性强,所以特别适合准确性要求较高的场景。代价也明显,每接一个场景都得有人先把流程画出来,累的是人。
二、ReAct Agent:步骤没法提前定,就让模型边想边做
可有些任务根本没法提前设定步骤。讲义给了三个例子,都挺生活化:
- 我有份文件里记录了上个月最终的业务数据,找找是哪份文件;
- 检查一下直播系统,我的直播间学员们说很卡,但是网络测速是正常的;
- 听说明天台风,我明天从深圳飞北京,能正常起飞么?
这三个任务的共同点是你事先不知道要查几次、查什么,也不知道查到的结果会把下一步引去哪。拿台风那个来说,可能得先查台风路径,再查航司的取消政策,中间哪一步出了新情况,后面跟着全变。流程图画不出来,Workflow 那套就失灵了。
ReAct 走的是另一条路。ReAct = Reasoning + Acting:推理、行动、获得反馈;根据反馈再次推理、行动、再次获取反馈,一直循环到任务完成。

光说概念有点虚。课程上演示了一个完整案例,我觉得是整门课最值的部分,原样拆给大家看。
完整案例:9 月份销售额不达标的供应商有哪些
输入是 3 个文件加 1 个问题。问题是"9 月份销售额不达标的供应商有哪些?",三个文件分别是 各类电子产品销售数据.xlsx、各地供应商信息.xlsx、2023年供应商月销售额任务管理方案.pdf。
Agent 手里有 5 个工具:ListFileNames(列文件)、AskDocument(问文档)、InspectExcel(探查 Excel 结构)、AnalyseExcel(写代码分析 Excel)、FINISH(结束)。
接下来是完整的 7 轮。
第 1 轮。模型想的是:要获取 9 月份供应商销售额数据和达标标准,得先知道有哪些文件可用,于是执行 ListFileNames。反馈就是上面那三个文件名。
第 2 轮。它猜达标标准大概率写在 2023年供应商月销售额任务管理方案.pdf 里,用 AskDocument 查这个文件,query 是"2023年供应商9月份的销售额达标标准是多少?"。反馈:2023 年供应商 9 月份的销售额达标标准是 3 万元,依据是文件中"2023 年各季度销售额任务分配"的第三季度(7 月–9 月)规定,9 月销售额任务明确为 3 万元。
第 3 轮。供应商名单可能在 各地供应商信息.xlsx 里,先拿 InspectExcel 探一下结构,code 是 pandas 读取列名和前 3 行。反馈:列名 ['供应商', '联系人', '联系人邮箱', '内部对接人'],前 3 行示例:北京科技有限公司/张伟/xiaoming123@example.com/李华;上海音响有限公司/李芳/lihua456@example.org/张伟;深圳创新科技有限公司/陈瑶/wangli789@example.net/王芳。
第 4 轮。轮到销售数据了。还是 InspectExcel,这次探 各类电子产品销售数据.xlsx。反馈:列名 ['品类', '产品名', '单价(元)', '销售量', '销售日期', '供应商'],前 3 行示例:手机 Xiaomi Mi 11 / 4999 元 / 20 台 / 08-02 / 北京科技有限公司;耳机 Sony XM4 / 2999 / 15 / 08-03 / 上海音响有限公司;笔记本 Lenovo X1 / 8999 / 10 / 08-05 / 深圳创新有限公司。
第 5 轮。结构摸清了,这才开始算钱。用 AnalyseExcel 写 pandas,按销售日期筛出 9 月份数据,按供应商分组,算每个供应商的销售额总和:
import pandas as pd
df = pd.read_excel('/mnt/data/各类电子产品销售数据.xlsx')
df['销售日期'] = pd.to_datetime(df['销售日期'])
september_data = df[df['销售日期'].dt.month == 9]
sales_summary = september_data.groupby('供应商').apply(
lambda x: (x['单价(元)'] * x['销售量']).sum()
).reset_index(name='9月销售额(元)')
print(sales_summary)
跑出来一共 23 家供应商,原始输出如下:
云林音乐科技有限公司 55,738
兰州数码有限公司 233,974
台东计算机科技有限公司 175,984
台中音响科技有限公司 70,161
台北环保科技有限公司 54,978
台南健康科技有限公司 45,954
嘉义摄影科技有限公司 220,987
嘉义清新科技有限公司 45,576
基隆游戏有限公司 47,141
屏东科学技术有限公司 175,473
拉萨摄影有限公司 208,989
新竹通讯科技有限公司 254,966
昆明游戏科技有限公司 206,352
海口电讯科技有限公司 273,564
澎湖视讯科技有限公司 83,993
澳门互联网科技有限公司 57,156
珠海健康科技有限公司 18,320
花莲运动科技有限公司 40,269
西宁计算机科技有限公司 169,983
西安运动科技有限公司 101,471
贵阳影音科技有限公司 139,990
银川音响有限公司 53,533
高雄音乐科技有限公司 116,547
第 6 轮。销售额有了,标准是 3 万元,剩下的就是比大小。还是用 AnalyseExcel,对上一步结果按"销售额 < 30000"过滤。反馈:2023 年 9 月份销售额不达标的供应商只有一家,珠海健康科技有限公司,18,320 元。
第 7 轮。模型判断所有必要数据已齐全,无需额外获取,任务完成,执行 FINISH,输出最终结果。
复盘这个案例,我最想强调的是顺序:先看有哪些文件,再问清标准,然后看数据结构,最后才计算和筛选,每一步行动都从上一步反馈里拿到新信息,再决定下一步干什么。这和人拿到模糊任务时的做法几乎一样,先摸清情况再动手。试想一下,第 1 轮它要是直接对销售数据动刀,算得再快也是白算,因为那时候连达标标准是多少都还不知道。
顺着补一个相关概念。思维链(Chain Of Thought,CoT)是指模型执行任务时,通过输出一系列中间推理过程文字,模拟人类推理过程。ReAct 可以理解成把 CoT 从"只想"扩展到了"边想边做边校正",推理不再一口气写完,而是被行动和反馈不断打断、修正。
讲义还点了几个用了 ReAct 技术的产品:AutoGPT 算是最早火出圈的自主 Agent 实验品;Perplexity 把它用在 AI 搜索上;Manus 走通用 Agent 形态;Cursor 把这套循环塞进了编程场景;GenSpark 也是通用 Agent 那一挂的。我自己用得最多的是 Cursor,看它在编辑器里自己读文件、跑命令、改代码、再跑测试,就是一个活的 ReAct 循环。
四、总结:两种范式怎么选
最后把两种范式放一起比一比:
| 维度 | Workflow Agent | ReAct Agent |
|---|---|---|
| 步骤 | 由设计者预先定义 | 由模型动态规划 |
| 自由度 | 低 | 高 |
| 可控性 | 强 | 弱,但会自我校正 |
| 适用场景 | 准确性要求高、流程固定的场景 | 步骤无法预知、需要探索的场景 |
| 代表形态 | 企业流程自动化 | AutoGPT、Perplexity、Manus、Cursor、GenSpark |
还有一点课程里没细说、但我实际感受很强的:ReAct Agent 跑一个任务动辄十几次模型调用,延迟和 token 成本都上去了,中间过程出了问题也不太好排查。所以怎么选其实不纠结:任务能提前写清步骤,就别把自由度交给模型;写不清,再让模型边想边做。整门课反复强调的那句话,我再抄一遍当收尾,模型提供智能,Agent 保证结果。
上完课我有个小变化,再看到"一句话全自动搞定一切"这类 Agent 宣传,会先问一句:你的流程是人定的还是模型现场想的,错了谁兜底?能把这个问题答清楚的产品,一般差不到哪去。

浙公网安备 33010602011771号