
1
Workflow“执行者”,Agent“决策者”
Workflow本质:步骤固定、顺序固定、没有决策权
所有执行逻辑、调用顺序、任务步骤,全部由开发者在代码中预定义。只要输入一致,输出永远一致,全程不会思考、不会判断、不会变通。
通俗类比:照着菜谱做菜的学徒。
菜谱写放盐就放盐、写炖15分钟就炖15分钟。哪怕食材老化、火候变化,它也不会自主调整步骤,严格机械执行,完全没有临场判断能力。
Agent本质:让大模型在运行时动态决定每一步做什么
开发者只定义「最终要达成的结果」,不限制执行过程。Agent 会自主完成:需求拆解、工具选择、信息校验、补充采集、自我反思、纠错迭代。
通俗类比:自带工具箱的资深项目经理。
接到目标后自主规划流程、判断资源是否充足、按需调用工具,遇到异常主动调整方案,信息不足就补充调研,结果不准就复盘修正,直到交付合格结果。
维度 | Workflow | Agent |
|---|---|---|
决策者 | 代码预设 | AI运行时判断 |
执行路径 | 固定顺序,不可跳转 | 动态循环,可分支可回退 |
工具调用 | 硬编码,直接调用 | 自主决定用什么工具 |
自我反思 | 无 | 生成结果后验证准确性 |
异常处理 | 某环节失败→整体失败 | 可降级、可换方案 |
2
实战对标:两种实现范式
我线上运行的金属市场自动日报系统,核心需求非常明确:
每日定时自动采集各金属品种价格、行业新闻、宏观汇率,AI分析行情走势,最终推送结构化日报到个人微信。
我针对完全相同的需求,分别实现了 Workflow 固定流程版 和 Agent 智能决策版,差异肉眼可见。
Workflow 的核心:所有步骤提前写死,按序串行执行。
哪怕市场出现极端行情、数据异常,代码也不会做任何额外动作,只会机械走完预设流程。
# Workflow模式 核心简化代码
def run_daily_report():
prices = fetch_prices() # 步骤1:固定采集价格
news = fetch_news() # 步骤2:固定采集新闻
macro = fetch_macro() # 步骤3:固定采集汇率
analysis = ai_analyze(prices, news, macro) # 步骤4:固定AI分析
report = build_report(prices, news, macro, analysis) # 步骤5:固定排版
send_to_wechat(report) # 步骤6:固定推送全程无分支、无判断、无补充、无复盘。
举个典型场景:今日铜价单日暴跌3%,属于罕见异常行情。
但 Workflow 完全感知不到,依旧只会采集当日数据、常规分析、固定格式推送,不会主动溯源历史数据、不会标记异常风险、不会追加重点提示。
Agent 彻底抛弃了“固定步骤”思维,只给大模型一个最终目标:输出一份精准、完整、能识别市场重点的金属日报。
所有中间步骤、工具调用、信息补充、结果校验,全部由 LLM 运行时动态决策。
# Agent模式 核心简化代码
def generate_report():
done = False
while not done:
# 大模型自主判断:当前需要做什么
decision = llm.decide()
if decision == "需要查询实时价格":
query_prices()
elif decision == "需要采集行业新闻":
query_news()
elif decision == "信息不足,需要补充历史行情":
query_history() # 自主新增分支,Workflow无法实现
elif decision == "信息充足,可以生成分析":
report = llm.generate_report()
# 自主复盘校验结果准确性
if llm.verify(report) == "存在漏洞/信息不全":
continue # 重新补充信息、迭代分析
else:
done = True
send_to_wechat(report)还是刚才的场景:铜价单日暴跌3%。
Agent 会自主判断:单日大幅波动属于异常信号,仅看当日数据不足以支撑分析。
随后自动触发补充逻辑:调取近一周历史价格、核查近期宏观政策、抓取相关利空新闻,最终在报告中主动增加异常风险提示。
3
怎么选?场景决定方案
Agent版的代码不是把Workflow推倒重来,而是在Workflow的基础上加了一层“决策脑”。
具体来说:fetch_prices()、fetch_news()、fetch_macro() 这些数据采集函数,Workflow在用,Agent也在用。Agent只是多了一个“LLM决策循环”,来决定什么时候调用这些函数、调用哪些、调用完之后要不要再调别的。所以Agent的代码量是400行,其中200行是复用的Workflow代码。
优先选 Agent 的场景
Workflow和Agent的界限其实很清楚:
Workflow是“你告诉AI每一步做什么”。Agent是“你告诉AI目标是什么,它自己决定每一步做什么”。
判断标准很简单:把AI的决策权从代码里拿出来,交给大模型在运行时行使——做到了,就是Agent;没做到,就是在Workflow里调了个LLM而已。
Workflow不会消失,Agent也不会取代Workflow。确定性任务交给Workflow——稳定、省钱、放心。开放性任务交给Agent——灵活、智能、能应对变化。
这不是谁取代谁,而是什么场景用什么工具。 而作为开发者,核心能力是判断:我这个需求,到底需不需要AI来“做决定”?