无监督提示优化 (SPO) 是 MetaGPT 内部的一个自动化提示工程系统,它可以在无需人工反馈或标记数据的情况下优化大型语言模型 (LLM) 的提示。该系统利用 LLM 本身作为裁判,通过自我演进的优化过程来迭代改进提示。
与传统的提示工程方法相比,SPO 具有几个关键优势:
SPO 系统由围绕核心 PromptOptimizer 类组织起来的多个相互关联的组件组成。
来源:metagpt/ext/spo/components/optimizer.py19-48 metagpt/ext/spo/utils/llm_client.py17-77 metagpt/ext/spo/utils/prompt_utils.py6-34 metagpt/ext/spo/utils/data_utils.py11-44 metagpt/ext/spo/utils/evaluation_utils.py21-81 metagpt/ext/spo/components/evaluator.py15-75
SPO 优化过程涉及多轮提示生成、执行和评估。
来源:metagpt/ext/spo/components/optimizer.py40-137 metagpt/ext/spo/utils/evaluation_utils.py25-81 metagpt/ext/spo/components/evaluator.py15-75
SPO 的一个关键特性是它能够为优化过程的不同阶段使用不同的 LLM。
| 阶段 | 目的 | 默认模型 | 温度 |
|---|---|---|---|
| 优化 | 生成改进的提示 | claude-3-5-sonnet-20240620 | 0.7 |
| 评估 | 评估提示有效性 | gpt-4o-mini | 0.3 |
| 执行 | 对测试问题运行提示 | gpt-4o-mini | 0.0 |
SPO_LLM 类负责管理这些不同的 LLM 配置。
来源:metagpt/ext/spo/utils/llm_client.py11-77 examples/spo/optimize.py11-16
SPO 使用 YAML 模板文件来定义初始提示、要求和测试问题。
这些模板通过 load.py 实用程序加载。
来源:metagpt/ext/spo/utils/load.py15-48 examples/spo/README.md53-82
SPO 可用于三种方式:
来源:examples/spo/README.md89-111
可用选项:
--opt-model Optimization model (default: claude-3-5-sonnet-20240620)
--opt-temp Optimization temperature (default: 0.7)
--eval-model Evaluation model (default: gpt-4o-mini)
--eval-temp Evaluation temperature (default: 0.3)
--exec-model Execution model (default: gpt-4o-mini)
--exec-temp Execution temperature (default: 0)
--workspace Output directory path (default: workspace)
--initial-round Initial round number (default: 1)
--max-rounds Maximum rounds (default: 10)
--template Template file name (default: Poem.yaml)
--name Project name (default: Poem)
来源:examples/spo/optimize.py7-25 examples/spo/README.md114-137
Web 界面提供了一种用户友好的方式来配置模板、LLM 设置以及运行优化过程。
来源:metagpt/ext/spo/app.py1-301 examples/spo/README.md138-152
SPO 创建一个结构化的目录来存储优化结果。
workspace/
└── Project_name/
└── prompts/
├── results.json
├── round_1/
│ ├── answers.txt
│ └── prompt.txt
├── round_2/
│ ├── answers.txt
│ └── prompt.txt
└── ...
results.json:包含所有轮次的数据,包括成功/失败状态和 token 计数。prompt.txt:每轮优化的提示。answers.txt:每轮使用该提示生成的输出。来源:examples/spo/README.md154-177
SPO 位于 MetaGPT 的专业能力层中,如核心架构概述所示。
SPO 为 MetaGPT 提供了自动化的提示优化能力,可以补充框架中的其他系统,提供了一种在无需人工反馈的情况下系统地改进提示性能的方法。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(be6921)