SPO:如何优化提示词?大模型最懂如何优化自己!开源自监督提示词优化工具,让AI自主优化提示词

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: 本文介绍由DeepWisdom与香港科技大学联合研发的SPO框架,通过自我监督机制实现大语言模型提示优化,仅需3个样本即可达到SOTA效果,优化成本降低至传统方法的1.1%-5.6%。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦


🧠 「LLM自进化实现!提示优化进入『自助餐时代』:SPO框架开启提示工程2.0时代」

大家好,我是蚝油菜花。当业界还在争论prompt engineering是否伪科学时,清北联合团队已用数学证明:大模型最懂如何优化自己。

SPO框架三大颠覆性创新:

  • ✅ 成对评估机制:让Claude-3.5化身「提示裁判」自动打分
  • ✅ 动态优化闭环:Execute-Evaluate-Optimize循环逼近最优解
  • ✅ 偏差抑制算法:四重随机评估打破模型固有偏好

该框架在GPQA基准测试中准确率达97.2%,而成本仅是传统方法的1.1%。接下来我们将拆解其知识图谱构建过程,揭秘如何用AI优化AI!

🚀 快速阅读

SPO框架通过LLM自监督机制实现提示优化的突破性进展。

  1. 核心机制:基于输出对比的成对评估,利用LLM自身判断力优化提示
  2. 技术突破:仅需3个样本即可完成优化,成本降低至传统方法的1/90
  3. 适用范围:同时支持封闭任务与开放式创作场景,助力多领域应用落地

SPO 是什么

SPO-method

SPO(Self-Supervised Prompt Optimization)是一种基于大语言模型自监督能力的提示优化框架。与传统依赖人工标注或基准答案的方法不同,SPO通过对比不同提示生成的输出质量,自主完成优化迭代。

该框架创新性地将优化过程分解为执行-评估-优化三阶段循环,利用LLM自身对任务需求的理解能力,通过成对比较输出结果获得优化信号。这种机制突破了传统方法对标注数据的依赖,在保持性能的同时将单数据集优化成本降至0.15美元。

SPO 的主要功能

  • 自我监督优化:通过LLM自动评估输出质量,无需人工标注或基准答案
  • 超低成本运行:单数据集优化仅需3个样本,成本降低至传统方法的1.1%-5.6%
  • 多场景适配:在GPQA等封闭任务中准确率达97.2%,在创意写作等开放任务中优化效果显著
  • 模型兼容性强:支持Claude-3.5、GPT-4o等多种主流LLM作为优化器

SPO 的技术原理

  • 输出对比评估:通过LLM对两个提示生成输出的成对比较,建立相对质量评估体系
  • 动态优化循环:采用Optimize-Execute-Evaluate迭代机制,持续改进提示模板
  • 上下文感知优化:基于当前最优输出的语义理解生成新提示,保持任务一致性
  • 偏差抑制机制:通过四轮随机化评估降低模型固有偏见的影响

如何运行 SPO

通过镜像一键部署和运行

在这里特别感谢 UCloud 优云智算提供的 GPU 算力支持!让项目得到了快速的部署和调试运行。

UCloud 介绍

UCloud

优云智算是 UCloud 优刻得的GPU算力租赁平台,专注于为用户提供灵活的算力资源。支持按天、按小时短期租赁及包月长期租赁,满足各类需求。

结合丰富的公共镜像社区,优云智算提供多种预配置的容器镜像,如LLamaFactory、SD-webUI 和 LLM 等,实现一键部署,5分钟就能快速上手 AI,助力用户快速启动和扩展项目。

1. 使用该镜像创建实例

镜像发布页(神秘通道)https://www.compshare.cn/images-detail?ImageID=compshareImage-18u5hmtunbzm&referral_code=4sOb83sEXe4BLkKYqw9G4P&ytag=GPU_hych_Lcsdn_csdn_display

【算力福利速递】神秘通道秒领40枚算力金币解锁20小时顶配4090显卡试驾体验!学生党/职场人亮出大佬身份,立享永久VIP+额外金币补给包,快乐白嫖手慢无~

首先,在镜像发布页可以查看到我制作完成并分享到平台的实例镜像,通过右侧的使用该镜像创建实例可以快速创建一个实例。

UCloud_use_mirror

2. 部署GPU实例

可按需选择配置后再立即部署

UCloud_mirror_ini

3. 启动实例

稍等片刻后,实例就会自动创建并启动,通过查看实例列表可查看实例的运行状态,并支持随时关闭或启用。

UCloud_contorl

实例同时提供了一个 JupyterLab 应用作为交互式开发环境,它提供了更现代化和灵活的用户界面,方便我们继续后续的步骤。

UCloud_JupyterLab

4. 运行 SPO WebUI 服务

启动实例后,你可以通过 JupyterLab 应用的终端输入以下命令来快速启动服务:

python -m streamlit run app.py

WebUI 服务默认通过 8501 端口进行访问,镜像已经配置了端口转发,你可以直接通过https://{公网IP}:8501/访问。

SPO-LLM-ini

5. 配置 LLM API

首次启动项目时,默认在模型设置中没有预置模型可以选择的,所以你需要先配置 LLM API 和相应的模型名称,这里我以配置阿里百练大模型为例。

配置完成后,点击连通性测试并添加模型并等待测试,测试成功后就会将模型保存到本地配置中,之后你会发现在下方的模型设置*中增加了相应的模型选项,你可以选择使用相同/不同的模型作为优化提示、评估提示和执行提示(测试优化后提示词)的模型。

SPO-LLM-Setting

6. 配置优化器

滑动到LLM 配置的最下方,你会发现一个优化器设置,这里的初始轮次和最大轮次,你可以按照需要配置它们的次数。

SPO-Optimize-times

7. 配置提示模版

来到模板配置页,这里提供了一个提示词的配置模板,是SPO框架的核心配置,这决定了你想优化的提示词以及优化的目标。

  • 提示词:输入你想要优化的提示词,主要用于优化模型优化提示词。
  • 要求:输入提示词优化的目标,或者是一段描述(描述对提示词输出结果的要求),主要用于评估模型评估提示词。
  • 问答示例[可选]:可以添加多个Q&A作为示例,可以更好地指导模型优化提示词向目标对齐。

SPO-Prmopt-Setting

8. 开始优化

完成模板配置后,你就可以进入优化日志页,点击开始优化执行SPO脚本开始优化提示词了!并且在这个过程中,你可以从页面看到优化的过程和模型输入输出的日志信息。Enjoy it!

SPO-log

9. 查看优化结果

我这里为了快速演示,设置最大轮次为3次。在等待结束优化之后,你可以跳转到优化结果页,你将会看到每一轮优化的提示、完成状态和详细的优化结果。

SPO-Results

点开对应轮次,你可以看到更加详细的优化结果,这里我先查看开轮次1的优化结果,发现第1轮的提示词是你输入的提示词,它将首当其冲作为提示词,输入到模型中进行优化和评估,为后续优化提示词的进程作准备。

SPO-Result-1

接着,我再查看开轮次3的优化结果,发现不同于第1轮的提示词,当优化进程达到第3轮时,提示词已经变得更加细致完整了,像这样更完善的提示词,能够在测试时更好地指导模型输出,提高目标结果的命中率。

SPO-Result-3

10. 测试优化后提示词

最后,我测试了轮次3的优化结果中的提示词,输入了一个问答示例中不存在的问题(避免拟合),它不仅输出了详细的推理过程,得到了正确的结果,而且非常好地完成我设定的任务目标,最后生成了我要求的输出结果。

优化后的提示词是具备通用性的,即使是在其他的模型或参数量更小的模型中,也能非常准确地指导模型输出预期的结果。

SPO-Prompt-Test

本地部署 — 环境准备

1. 拉取项目:

git clone https://github.com/Airmomo/SPO.git

2. 进入项目目录:

cd SPO/

3. 创建并激活 Python 虚拟环境:

# Windows/macOS/Linux 通用命令
python -m venv myenv

# 如果遇到 python 命令无效,尝试用具体版本号:
python3 -m venv myenv

4. 激活虚拟环境:

  • Windows 系统:
    ```bash

    常规命令提示符(CMD)

    myenv\Scripts\activate.bat

PowerShell

.\myenv\Scripts\Activate.ps1


- macOS/Linux 系统:
```bash
source myenv/bin/activate

5. 安装依赖:

pip install -e .
cd ../

本地部署 — 运行 Web UI

项目提供了更加友好的交互体验,可以使用 Streamlit Web 界面来配置LLM和运行优化器。

首先,安装 Streamlit:

pip install "streamlit~=1.42.0"

安装Streamlit后可能会提示存在依赖版本冲突,不会影响正常运行,可以忽略!

然后运行 Web 界面:

python -m streamlit run app.py

默认运行在8501端口,启动后会自动打开浏览器并访问http://localhost:8501/.

命令行运行

1. 配置 API 密钥和参数

在运行 PromptOptimizer 之前,需要配置语言模型 (LLM) 的参数。这些参数可以在 config/config2.yaml 文件中设置,你可以参考 examples/spo/config2.example.yaml 文件的格式进行配置。

2. 定义迭代模板

创建一个迭代模板文件 metagpt/ext/spo/settings/task_name.yaml,模板内容如下:

prompt: |
  Please solve the following problem.

requirements: |
  ...

count: None

qa:
  - question: |
      ...
    answer: |
      ...

  - question: |
      ...
    answer: |
      ...

模板字段说明:

  • prompt:迭代的初始提示。
  • requirements:期望的效果或结果(例如,生成更多思考或使用更幽默的语言)。
  • count:生成提示的目标字数(例如,50)。设置为 None 表示不限制字数。
  • qa:用于迭代的问答对,通常包含 3 个左右的问答对。
    • question:数据集中用于迭代的问题。
    • answer:对应的答案,可以包含期望的思考模式或响应,也可以留空。

参考示例:metagpt/ext/spo/settings/Navigate.yaml

3. 实现 PromptOptimizer

PromptOptimizer 提供了三种运行方式,分别是 Python 脚本、命令行接口和 Streamlit Web 界面。

通过 Python 脚本运行

以下是通过 Python 脚本运行 PromptOptimizer 的示例代码:

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

if __name__ == "__main__":
    # 初始化 LLM 设置
    SPO_LLM.initialize(
        optimize_kwargs={
   "model": "claude-3-5-sonnet-20240620", "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()

通过命令行接口运行

运行以下命令以通过命令行接口启动优化器:

python -m examples.spo.optimize

可用的命令行选项如下:

--opt-model            用于优化的模型(默认:claude-3-5-sonnet-20240620)
--opt-temp            优化的温度参数(默认:0.7)
--eval-model          用于评估的模型(默认:gpt-4o-mini)
--eval-temp          评估的温度参数(默认:0.3)
--exec-model          用于执行的模型(默认:gpt-4o-mini)
--exec-temp          执行的温度参数(默认:0)
--workspace          输出目录路径(默认:workspace)
--initial-round      初始轮次编号(默认:1)
--max-rounds        最大轮次数量(默认:10)
--template          模板文件名称(默认:Poem.yaml)
--name              项目名称(默认:Poem)

查看帮助信息:

python -m examples.spo.optimize --help

4. 查看结果

优化完成后,结果将存储在 workspace 目录中,结构如下:

workspace
  └── Project_name
      └── prompts
          ├── results.json 
          ├── round_1
          │   ├── answers.txt
          │   └── prompt.txt
          ├── round_2
          │   ├── answers.txt
          │   └── prompt.txt
          ├── round_3
          │   ├── answers.txt
          │   └── prompt.txt
          ├── ...
          └── round_n
              ├── answers.txt
              └── prompt.txt

文件说明:

  • results.json:存储每轮迭代是否成功判断及其他相关信息。
  • prompt.txt:对应轮次的优化提示。
  • answers.txt:使用该提示生成的输出结果。

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 AI 在线答疑 -> 智能检索历史文章和开源项目 -> 尽在微信公众号 -> 搜一搜:蚝油菜花 🥦

相关文章
|
5天前
|
机器学习/深度学习 人工智能 PyTorch
模型手动绑骨3天,AI花3分钟搞定!UniRig:清华开源通用骨骼自动绑定框架,助力3D动画制作
UniRig是清华大学与VAST联合研发的自动骨骼绑定框架,基于自回归模型与交叉注意力机制,支持多样化3D模型的骨骼生成与蒙皮权重预测,其创新的骨骼树标记化技术显著提升动画制作效率。
132 27
模型手动绑骨3天,AI花3分钟搞定!UniRig:清华开源通用骨骼自动绑定框架,助力3D动画制作
|
3天前
|
机器学习/深度学习 人工智能 编解码
AI视频生成也能自动补全!Wan2.1 FLF2V:阿里通义开源14B视频生成模型,用首尾两帧生成过渡动画
万相首尾帧模型是阿里通义开源的14B参数规模视频生成模型,基于DiT架构和高效视频压缩VAE,能够根据首尾帧图像自动生成5秒720p高清视频,支持多种风格变换和细节复刻。
101 7
AI视频生成也能自动补全!Wan2.1 FLF2V:阿里通义开源14B视频生成模型,用首尾两帧生成过渡动画
|
4天前
|
人工智能 算法 API
多模态模型卷王诞生!InternVL3:上海AI Lab开源78B多模态大模型,支持图文视频全解析!
上海人工智能实验室开源的InternVL3系列多模态大语言模型,通过原生多模态预训练方法实现文本、图像、视频的统一处理,支持从1B到78B共7种参数规模。
100 6
多模态模型卷王诞生!InternVL3:上海AI Lab开源78B多模态大模型,支持图文视频全解析!
|
3天前
|
人工智能 自然语言处理 物联网
用AI体验瞬息全宇宙!InstantCharacter:腾讯混元开源角色定制图像生成神器,一键打造你的专属角色
InstantCharacter是腾讯混元团队基于扩散Transformer架构开发的开源图像生成工具,通过可扩展适配器和大规模角色数据集实现高保真、角色一致性的图像生成,支持单图输入和文本控制。
74 3
用AI体验瞬息全宇宙!InstantCharacter:腾讯混元开源角色定制图像生成神器,一键打造你的专属角色
|
3天前
|
人工智能 自然语言处理 监控
基于DeepSeek R1改进的AI安全模型!MAI-DS-R1:微软开源AI安全卫士,敏感话题响应率高达99.3%
微软开源的MAI-DS-R1是基于DeepSeek R1改进的AI模型,通过后训练优化将敏感话题响应率提升至99.3%,同时将有害内容风险降低50%,保持原版推理能力并增强多语言支持。
74 3
基于DeepSeek R1改进的AI安全模型!MAI-DS-R1:微软开源AI安全卫士,敏感话题响应率高达99.3%
|
5天前
|
人工智能 自然语言处理 JavaScript
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
Magnitude是一个基于视觉AI代理的开源端到端测试框架,通过自然语言构建测试用例,结合推理代理和视觉代理实现智能化的Web应用测试,支持本地运行和CI/CD集成。
89 15
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
|
5天前
|
人工智能 自然语言处理 API
这个开源AI平台把文生图/音/字全包了!Pollinations.AI:提供完全免费的AI内容生成
Pollinations.AI 是一个开源的AI内容生成平台,提供免费的文本、图像、音频生成及转换API,无需注册即可使用,支持多种模型和自定义参数,适合开发者和创作者快速集成。
83 15
这个开源AI平台把文生图/音/字全包了!Pollinations.AI:提供完全免费的AI内容生成
|
5天前
|
人工智能 自然语言处理 搜索推荐
AI对话像真人!交交:上海交大推出全球首个口语对话情感大模型,支持多语言与实时音色克隆
上海交通大学推出的交交是全球首个纯学术界自研的口语对话情感大模型,具备多语言交流、方言理解、角色扮演和情感互动等能力,通过创新技术实现端到端语音对话和实时音色克隆。
72 14
AI对话像真人!交交:上海交大推出全球首个口语对话情感大模型,支持多语言与实时音色克隆
|
4天前
|
人工智能 算法 程序员
揭秘 AI 编程工具的费用真相:2025 年开发者视角-优雅草卓伊凡
揭秘 AI 编程工具的费用真相:2025 年开发者视角-优雅草卓伊凡
35 1
揭秘 AI 编程工具的费用真相:2025 年开发者视角-优雅草卓伊凡
|
4天前
|
人工智能 供应链 Cloud Native
中国AI编码工具崛起:技术突围、生态重构与开发者新范式
中国AI编码工具如通义灵码、百度Comate等,正从西方产品的主导中突围。通过大模型精调、中文友好型理解及云原生赋能,构建差异化优势。这些工具不仅提升效率,还推动中国软件产业从使用者向标准制定者转变。然而,技术原创性、生态碎片化和开发者信任危机仍是挑战。未来目标不是取代现有工具,而是定义适合中国开发者的智能编码新范式。
64 23

热门文章

最新文章