Skip to content

AFlow 与 SPO:自动化工作流生成与提示优化

MetaGPT 团队在自动化智能体工作流生成和提示工程领域进行了深入研究,推出了两个重要的研究成果:AFlowSPO

AFlow:自动化智能体工作流生成

AFlow Performance

概述

AFlow (Automating Agentic Workflow Generation) 是一个自动生成和优化智能体工作流的框架。它使用蒙特卡洛树搜索(MCTS)在代码表示的工作流空间中寻找有效的工作流,用机器努力替代人工开发。

论文:AFlow: Automating Agentic Workflow Generation

ICLR 2025 Oral Presentation(前 1.8%),LLM Agent 类别排名第 2

核心方法

AFlow Method

AFlow 的核心组件:

组件说明
NodeLLM 调用的基本单元
Operator预定义的 Node 组合,提高搜索效率
Workflow由 Node 和边组成的执行图
Optimizer使用 MCTS 变体探索和优化工作流
Evaluator评估工作流在给定任务上的表现

工作原理

text
初始工作流


┌─────────────┐
│   选择      │  MCTS Selection
│ (Selection) │
└─────────────┘


┌─────────────┐
│   扩展      │  生成新的工作流变体
│ (Expansion) │
└─────────────┘


┌─────────────┐
│   评估      │  在验证集上测试
│(Evaluation) │
└─────────────┘


┌─────────────┐
│   更新      │  反向传播结果
│  (Update)   │
└─────────────┘

    └──▶ 迭代直到收敛

预定义 Operator

AFlow 提供了常用的 Operator:

Operator功能
Generate生成内容
Format格式化输出
Review审查内容
Revise修改内容
Ensemble集成多个结果
Test测试代码
Programmer编程任务

快速开始

bash
# 安装依赖
pip install metagpt

# 下载数据集
python metagpt/ext/aflow/data/download_data.py

# 运行优化
python -m examples.aflow.optimize --dataset MATH

配置参数

python
--dataset              # 数据集类型 (HumanEval/MBPP/GSM8K/MATH/HotpotQA/DROP)
--sample 4             # 采样数量
--optimized_path PATH  # 结果保存路径
--initial_round 1      # 起始轮次
--max_rounds 20        # 最大迭代轮次
--check_convergence    # 启用早停
--validation_rounds 5  # 验证轮次
--if_first_optimize    # 是否首次优化

实验结果

AFlow Experiment

AFlow 在 6 个数据集上的表现:

数据集任务类型
HumanEval代码生成
MBPP代码生成
GSM8K数学推理
MATH数学推理
HotpotQA问答
DROP阅读理解

SPO:自监督提示优化

SPO Method

概述

SPO (Self-Supervised Prompt Optimization) 是一个自动化提示工程工具,专为大语言模型设计,实现通用领域适配。

论文:Self-Supervised Prompt Optimization

核心优势

优势说明
超低成本每个任务优化仅需 $0.15
零监督无需真实标签或人工反馈
通用适配支持封闭式和开放式任务
自我进化通过 LLM-as-judge 机制自动优化

性价比对比

SPO 相比传统方法实现了 17.8-90.9 倍的成本效率提升!

实验结果

封闭式任务

SPO Closed Task

SPO 仅需 1.1%-5.6% 的成本即可达到 SOTA 方法的性能水平。

开放式任务

SPO Open-ended Task

SPO 在所有模型配置的开放式任务中都显著提升了性能。

快速开始

1. 配置 API

编辑 config/config2.yaml

2. 定义迭代模板

创建 metagpt/ext/spo/settings/task_name.yaml

yaml
prompt: |
  Please solve the following problem.

requirements: |
  Generate more detailed thinking process.

count: None

qa:
  - question: |
      What is 2 + 2?
    answer: |
      The answer is 4.

  - question: |
      Explain photosynthesis.
    answer: |
      Photosynthesis is the process...

3. 运行优化

Python 脚本方式

python
from metagpt.ext.spo.components.optimizer import PromptOptimizer
from metagpt.ext.spo.utils.llm_client import SPO_LLM

# 初始化 LLM 设置
SPO_LLM.initialize(
    optimize_kwargs={"model": "claude-sonnet-4-5", "temperature": 0.7},
    evaluate_kwargs={"model": "gpt-4o-mini", "temperature": 0.3},
    execute_kwargs={"model": "gpt-4o-mini", "temperature": 0}
)

# 创建并运行优化器
optimizer = PromptOptimizer(
    optimized_path="workspace",
    initial_round=1,
    max_rounds=10,
    template="Poem.yaml",
    name="Poem",
)

optimizer.optimize()

命令行方式

bash
python -m examples.spo.optimize \
    --opt-model claude-sonnet-4-5 \
    --eval-model gpt-4o-mini \
    --max-rounds 10 \
    --template Poem.yaml

Streamlit Web 界面

bash
pip install "streamlit~=1.42.0"
python -m streamlit run metagpt/ext/spo/app.py

输出结构

text
workspace/
└── Project_name/
    └── prompts/
        ├── results.json      # 优化结果记录
        ├── round_1/
        │   ├── prompt.txt    # 该轮优化的提示词
        │   └── answers.txt   # 使用该提示词生成的输出
        ├── round_2/
        │   ├── prompt.txt
        │   └── answers.txt
        └── round_n/
            ├── prompt.txt
            └── answers.txt

模板字段说明

字段说明
prompt初始提示词
requirements期望的效果/结果
count目标字数(None 表示不限)
qa用于迭代的问答对

AFlow vs SPO 对比

特性AFlowSPO
优化对象工作流结构提示词内容
搜索方法MCTS自监督迭代
输入要求数据集QA 对
输出结果最优工作流最优提示词
适用场景复杂多步骤任务单一提示优化
成本较高极低

与其他优化方法的关系

text
┌─────────────────────────────────────────────────────────┐
│                    提示优化领域                          │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  ┌─────────────┐   ┌─────────────┐   ┌─────────────┐   │
│  │   手工优化   │   │  DSPy 优化   │   │    SPO      │   │
│  │             │   │             │   │             │   │
│  │ 人工迭代    │   │ 需要标签    │   │ 零监督      │   │
│  │ 成本高      │   │ 成本中      │   │ 成本极低    │   │
│  └─────────────┘   └─────────────┘   └─────────────┘   │
│                                                         │
├─────────────────────────────────────────────────────────┤
│                    工作流优化领域                         │
├─────────────────────────────────────────────────────────┤
│                                                         │
│  ┌─────────────┐   ┌─────────────┐   ┌─────────────┐   │
│  │  手工设计   │   │  LangGraph  │   │   AFlow     │   │
│  │             │   │             │   │             │   │
│  │ 专家经验    │   │ 代码定义    │   │ 自动搜索    │   │
│  │ 难以最优    │   │ 手动编排    │   │ 机器优化    │   │
│  └─────────────┘   └─────────────┘   └─────────────┘   │
│                                                         │
└─────────────────────────────────────────────────────────┘

引用

bibtex
@misc{zhang2024aflow,
    title={AFlow: Automating Agentic Workflow Generation},
    author={Jiayi Zhang and others},
    year={2024},
    eprint={2410.10762},
    archivePrefix={arXiv}
}

@misc{xiang2025spo,
    title={Self-Supervised Prompt Optimization},
    author={Jinyu Xiang and others},
    year={2025},
    eprint={2502.06855},
    archivePrefix={arXiv}
}

下一节:16.5 框架对比

基于 MIT 许可证发布。内容版权归作者所有。