来源:互联网 更新时间:2026-07-31 14:00
大语言模型越来越强了,能处理的输入也越来越长、越来越复杂。这为使用更复杂的提示词(Prompt)提供了广阔空间——但要让这些提示词在实际部署时稳定输出理想效果,通常还得精心调教一番。
市面上已经有不少自动化Prompt优化的方法,但随着提示词本身的复杂度水涨船高,很多老方法开始力不从心。说白了,我们需要一种新的思路来优化这种“元提示程序”(Metaprompt)。正是冲着这个目标,微软研究院提出了一个叫SAMMO的新框架,全称是“结构感知多任务元提示优化”(Structure-Aware Multi-objective Metaprompt Optimization)。它的核心价值在于:实现了对Metaprompt的“编译时优化”。
题目:作为程序的Prompt:一种结构感知的高效提示优化方法
论文地址:https://arxiv.org/pdf/2404.02319.pdf
SAMMO的特别之处在于,它不再把Prompt当成一段死板的文本,而是当作一个结构化对象。这样一来,优化过程中就能在更丰富的“变换集”里搜索。相比之前的自动化Prompt优化方法,SAMMO有五个很直观的优势:
SAMMO的核心思想很直接:把Prompt表示成一个结构化的程序——一个有向无环的函数图G。在这个图里,SAMMO定义了一系列“结构感知的Prompt变异算子”,包括重排节点、替换节点、删除节点,还有修改节点参数等等。每个节点v都带着自己的函数类型ψ_v和静态参数θ_v,分别对应Prompt的不同部分,比如任务描述、指南、示例,或者输入输出格式。节点之间的有向边e_ij则表达了父子关系:父节点能接收子节点传来的动态输入X和消息。
整个Prompt程序π*就是通过递归求值这个函数图得到的:
π[X] = ψ_vr(X ∪ ψ_children) θ_vr)
其中vr是根节点,ψ_children是从子节点收集的信息。
不妨用论文里的例子来直观感受一下:
这是一个简单的元提示结构,用于评论分类任务。在SAMMO框架下,元提示被表示为一个动态功能图:每个节点都会根据子节点的结果、输入数据X以及节点自身的参数θ来产生新值。
在这个图中,使用输入数据X的节点用浅灰色标出。
RenderText()和RenderData(X)节点在右侧合作,渲染任务的具体部分,比如提示用户对输入数据进行分类,并以JSON格式展示结果。
这张图清晰地说明了元提示如何把多个组件组合在一起,每个组件各司其职。通过这种结构化方法,我们可以有针对性地对元提示进行修改和优化——比如调整文本说明、更改数据格式或示例——从而提升整体性能。
SAMMO的优化过程,本质上就是在函数图G上做搜索,试图找到一个更优的Prompt程序π*。具体来说,SAMMO定义了一系列结构感知的变异算子,包括:
这些变换算子构成了一个庞大的搜索空间Π。SAMMO采用启发式搜索算法——比如遗传算法或beam search——在有限的训练数据上探索这个空间,最终找到那个性能更优的Prompt程序π*。
举个具体例子。假设我们要构建一个问答系统,用来回答编程语言相关的问题。我们可以先搭一个这样的Prompt程序:
π = {
"task_description": "Answer questions about programming languages.",
"examples": [
{"question": "What is the difference between Ja va and Python?",
"answer": "Ja va is a statically typed language while Python is dynamically typed. Ja va is generally faster for certain tasks but Python has a simpler and more concise syntax."},
{"question": "How does C++ differ from C?",
"answer": "C++ is an extension of the C programming language, adding object-oriented programming features like classes and inheritance. C++ also has features like function overloading and templates that C does not ha ve."}
],
"format": {
"input": "question: {question}",
"output": "{answer}"
},
"input": "What is the purpose of garbage collection in Ja va?"
}
这个Prompt程序包含了任务描述、示例问答对以及输入输出格式规范。把它喂给LLM,就能得到相应的答案。
现在,假设我们想优化这个Prompt,让它回答编程语言问题时更出色。利用SAMMO的变异算子,可以这样操作:
通过反复迭代这些变换,SAMMO就能探索出一个性能更优的Prompt程序π*,然后我们就能用它来跟用户进行更好的交互。
注:论文里的变异算子叫Prompt Mutation Operators。如果你对变异提示感兴趣,可以看看DeepMind发的那篇关于自主进化提示系统的文章。
SAMMO是一个通用的Prompt优化框架,适用于黑盒设置——也就是说,优化者只能从LLM的输出中采样。论文证明了SAMMO能概括之前的多种指令优化和压缩技术,并且在三种不同的应用场景中显著优于现有方法:
此外,SAMMO的通用性还体现在它能兼容之前的多种Prompt优化和压缩方法,比如自动化Prompt工程(APE)、GrIPS、STDC、Stopwords、GPT-4 Rewrite等。实验结果表明,相比这些方法,SAMMO不仅性能提升显著,还能实现更大幅度的Prompt压缩——尤其在较弱LLM上效果更明显。
这些实验结果透露了一个信号:随着LLM越来越强大,Prompt的复杂性也越来越高,传统的Prompt优化方法已经跟不上趟了。SAMMO通过把Prompt建模成结构化程序,提供了一种通用、高效的优化方法——既能显著提升Prompt性能,又能大幅压缩Prompt开销。对于构建高效的人机交互系统来说,这招非常实用。掌握SAMMO方法,可以为未来大规模应用LLM打下扎实的基础。
需要提醒一点:SAMMO的优化效果会因LLM的不同而有所差异。这说明,即使使用相同的变异算子,不同LLM的Prompt优化轨迹也存在较弱的相关性。因此,在实际应用中,Prompt优化需要针对具体的LLM来单独调整。但整体来看,微软的这项SAMMO确实开创了一种新的Prompt优化范式,为LLM的大规模应用提供了重要支撑。
项目提供了一个示例操作方法和API参考,可以在GitHub上搜索“SAMMO”,这个项目由Tobias Schnabel撰写。


GitHub上的SAMMO示例安装方式不算太友好,对Python版本有指定要求。如果你的环境里有别的版本的Python项目,再安装SAMMO可能会遇到点麻烦。如果你的机器很干净,没有任何项目,可以直接按安装教程来。我也写了一个Dockerfile,方便一键部署到本地Docker环境。
摩托车活塞环性能如何
ThinkBook系列最新价格全解析:2026年选购避坑与实时询价指南
Ondo将于今日上线股票永续合约
暗黑4S14野蛮人终局BD攻略
区块链OTC交易所有哪几家比较正规?
Binance新增15种bStocks代币化证券为杠杆抵押资产
货拉拉如何查看历史订单 货拉拉往期行程轨迹查询【功能教学】
Meme币DOGS今晚上线!开局就解锁91%代币是否带来风险?
晶核艾尔莎角色盘点 晶核艾尔莎强度分析与实战表现
剑侠世界3雪峰论剑怎么打-剑侠世界3雪峰论剑打法介绍
五千元以下的笔记本几乎消失!经销商:至少一年看不到涨价尽头
Intel喜讯连连:18A工艺良率提升到85%、CPU将涨价15%
今日小鸡庄园答案2026.7.2
美债股纳斯达克首盘暴跌38%且加密代理交易解体,AVAX价格何去何从?
男生头像配网名可爱(精选100个)
赵云与阿斗神兵符使用教程 神兵符怎么使用
国家养老服务消费补贴上线京东
余姚的路虎4s店在哪个位置
英伟达机器人团队在京沪深招人,聚焦具身智能等四大领域
一站式PDF转Markdown解决方案PDF3MD
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc