论文
Agent 自动设计
AFlow: Automating Agentic Workflow Generation
AFlow:用 MCTS 自动搜索 agent workflow
Jiayi Zhang, Jinyu Xiang, Zhaoyang Yu, et al. · DeepWisdom / MetaGPT 团队 · ICLR 2025 (Oral) · 2024-10 · 被引 340
一句话把 agentic workflow 表示成代码、用改造版 MCTS 在 workflow 空间里自动搜索,6 个 benchmark 平均比手工方法高 5.7%、比 ADAS 高 19.5%;搜出的 workflow 能让 GPT-4o-mini 在 HumanEval 上以 GPT-4o 约 4.55% 的推理成本打平/超过 GPT-4o。ICLR 2025 Oral。
这是什么
手工搭 agent workflow(什么时候 review、什么时候 ensemble、prompt 怎么写)费人力且难迁移。此前的自动化尝试要么搜索空间太窄(只调 prompt),要么像 ADAS 那样用线性启发式搜索、在大空间里效率低。AFlow(MetaGPT / DeepWisdom 团队)把问题重新形式化:workflow 是一组 LLM-invoking node(参数为 model、prompt、temperature、输出格式)加上连接它们的 edge,而 edge 直接用代码(Python)表示——代码天然能表达顺序、分支、循环,比图或神经网络表示更精确。
在这个代码表示的空间上,AFlow 用一个为 workflow 优化改造的 MCTS 变体做搜索:树上每个节点是一个完整 workflow,LLM 当 optimizer 负责扩展(改代码/改 prompt),执行结果当反馈,经验沿树回传。为了压缩搜索空间,它固定了 model、temperature、format,只搜 prompt 和代码结构,并引入 Operator(Generate、Review&Revise、Ensemble、Test、Programmer 等预制节点组合)作为搜索的积木。
实验覆盖 6 个数据集(HumanEval、MBPP、GSM8K、MATH level-5 子集、HotpotQA、DROP),optimizer 用 Claude-3.5-Sonnet,executor 用 GPT-4o-mini / DeepSeek-V2.5 等便宜模型。它是 workflow 级自动设计里最工程化、被引用最多的实现之一(S2 引用 340+),与 ADAS 并列为这条线的代表工作。
AFlow 总体框架:左为搜索空间(Node 只放开 prompt 参数、预制 Operator 集合、代码表示的 edge);中为 MCTS 变体的循环(soft mixed probability 选择 → LLM 扩展 → 执行评估 → 经验回传);右为搜出来的三类 workflow 示例(数学、QA、代码生成),可以看到自动长出了 ensemble、fact-check、test-then-fix 等结构。机制与做法
搜索空间:代码即 workflow
Node 的四个参数里,AFlow 实际只放开 prompt,model/temperature/format 全固定,把搜索集中在 prompt 和 edge(代码)上。Operator 把常见 agentic 模式封装成统一接口——论文用了 7 个:Generate、Format、Review & Revise、Ensemble、Test、Programmer、Custom。搜索从一个空白模板 workflow(只有一个裸 node)出发,LLM optimizer 只需要补全模板里的 call 函数就能生成新 workflow,这比 ADAS 让 LLM 从零写整个 agent 程序约束更强、更不容易写崩。
HumanEval 上的成本-性能 pareto 前沿(横轴为对数成本)。红线上的点几乎全是 AFlow 搜出的 workflow(圆圈/倒三角):AFlow(gpt-4o-mini) 以约 0.03 美元达到 GPT-4o 直接调用(蓝色虚线,约 0.7 美元)的 93.9 pass@1,即论文'4.55% 成本'声称的出处。MCTS 变体的四步循环
Selection 用 soft mixed probability:均匀分布(λ=0.2)和按分数 softmax(α=0.4)的加权混合,从 top-k workflow 加初始空白模板里抽——保留空白模板是为了任何一轮都能从头长出新结构,避免局部最优。Expansion 由 LLM optimizer 完成,每次单步修改(加一个 operator 或改一处 prompt),输入包含父节点的全部修改历史、成败记录和验证集上的具体错误 log。Evaluation 直接在验证集上跑 5 遍取均值(初始化时还会先跑空白模板 5 遍,筛出得分高方差的题目当最终验证集,省钱)。Backpropagation 把修改内容和相对父节点的成败写回树上经验。
论文说这个树状经验结构是关键:此前方法把所有历史 workflow 塞进 prompt 让 LLM 生成新的,token 一多信息就丢;树结构让每次扩展只带上该分支的精确经验。终止条件是 top-k 平均分连续 n 轮不涨就 early stop,默认最多 20 轮。
成本换算:小模型 + 好 workflow > 大模型裸跑
AFlow 对 optimizer 和 executor 用不同模型:贵的 Claude-3.5-Sonnet 只做优化(次数少),便宜的 GPT-4o-mini / DeepSeek-V2.5 做执行。HumanEval 上,AFlow(GPT-4o-mini)搜出的 workflow 以约 GPT-4o 直接调用 4.55% 的美元成本达到 93.9-94.7 pass@1,压过 GPT-4o IO 的 93.9。跨模型迁移实验显示搜出的 workflow 换 executor 大多仍强于 baseline,但用 DeepSeek 搜的 workflow 放到 GPT-4o-mini 上明显不如为后者搜的——workflow 并非完全 model-agnostic。
关键结果
- 6 个 benchmark(GPT-4o-mini 执行)平均 80.3%,比最强手工方法(CoT SC 76.0%)高 5.7%(相对),比 ADAS(67.2%)高 19.5%;
- 难任务差距最大:MATH level-5 上 AFlow 56.2 vs ADAS 35.4,MBPP 83.4 vs 53.4,比 ADAS 高约 57%(相对);
- HumanEval 上 AFlow(GPT-4o-mini)成本约为 GPT-4o 直接调用的 4.55%,pass@1 打平(93.9)或反超(GPT-4o 执行同一 workflow 达 96.2);
- 去掉全部 Operator 的消融:GSM8K 仍到 93.1%(带 Operator 93.5%),且自发长出类 ensemble 结构——说明 Operator 主要提升搜索效率而非上限;
- 验证集只取数据的 20%(seed=42),再筛高方差题目,每个候选 workflow 跑 5 遍——搜索开销可控但仍然不便宜(20 轮 × 5 遍验证集)。
实证核查
扎实方法和主结果经受住了第三方复现(数学/代码基准基本对得上),代码、数据、每轮搜索轨迹全开源,作者响应积极。但要注意:现在这个独立仓库是从 MetaGPT 迁移出来的,迁移引入过 Operator bug,严格复现建议用 MetaGPT 内的原版代码。
论文声称 6 个 benchmark 平均超手工 baseline 5.7%,结果可复现,并提供全部实验原始数据。
仓库确实提供每轮迭代生成的 workflow、prompt 和验证轨迹的下载(README 的 Google Drive 链接 + data/download_data.py)。第三方复现 issue #27 报告:其他 benchmark 结果与论文一致,HotpotQA/DROP 的 round-1 低分(F1 0.11 vs 论文 base 0.68)是格式敏感所致,且'AFlow 的性能在多轮搜索后可以复现'(复现者原话)。
README 声称按 Quick Start 即可跑通并复现论文结果。
当前独立仓库是从 MetaGPT 迁移出来的,README 顶部作者自己就警告'Some Operators may have bugs during the migration'。issue #13:迁移后 Test operator 有 bug,导致 MBPP/HumanEval 复现掉分,作者确认并修复(修复后称在 o3-mini 上 MBPP 提升 15+)。issue #16、#36 等也是环境/格式类跑通问题。大量引用 AFlow 的论文用的是 MetaGPT 仓库里的原版实现(作者在 #27 中亲述)。
AFlow 自动执行 LLM 生成的 workflow 代码获取反馈。
工程上这意味着无沙箱执行生成代码:open issue #42 指出 LiveCodeBench loader 对未签名数据集直接 pickle.loads,optimizer 对生成的 graph.py 直接 __import__,均无沙箱。自己跑搜索时要注意隔离环境。
'小模型以 GPT-4o 4.55% 的成本超过 GPT-4o'。
论文 pareto 图(HumanEval)支持该数字,但这是搜索完成后的推理成本,不含搜索本身的开销(20 轮 × 每轮验证集跑 5 遍 + Claude-3.5-Sonnet 做 optimizer);论文附录给了成本明细,搜索是一次性投入,任务分布变了要重搜。
与我们方向的关系
对 ai4ai 方向,AFlow 是'AI 设计 AI 系统'在 workflow 层的代表实现,和 ADAS 是最常被并列比较的两个:ADAS 搜整个 agent 程序(空间大、线性搜索),AFlow 固定大部分自由度、只搜 prompt + 代码结构、用 MCTS 带树状经验(空间小、搜索强)。结果表明后者在同等预算下实用得多——'约束搜索空间 + 结构化经验回传'比'给 LLM 更大自由度'更划算,这个 trade-off 对我们做任何自动搜索类工作都有参考价值。
可直接借鉴的工程细节:验证集筛高方差样本来省评估成本、optimizer/executor 分离用不同价位模型、空白模板保留在选择池里防局部最优、每轮单步修改而非整体重写。局限也要记住:每个任务要单独搜(workflow 不完全跨模型/跨任务迁移),且依赖显式数值评估函数,开放式任务(无 ground truth)不适用——这正是后续工作(如 FlowReasoner、ScoreFlow)试图解决的。
阅读笔记
复现建议:严格对照论文用 MetaGPT 仓库内的原版(metagpt/ext/aflow),独立仓库(FoundationAgents/AFlow)迁移初期 Operator 有 bug、现已修但版本对不上论文。跑搜索注意 issue #42 的无沙箱执行问题。QA 类 benchmark(HotpotQA/DROP)对输出格式极敏感,round 1 分数很低是正常现象,不代表跑错。
材料清单
TeX 源码已存档:Raw/aflow/source/
同类条目