用IBM的AutoPDL,让Agent的prompt实现数据驱动的自动优化,性能飙升68.9% |重磅

搜索
AI-TNT
正文
资源拓展
用IBM的AutoPDL,让Agent的prompt实现数据驱动的自动优化,性能飙升68.9% |重磅
2025-04-16 09:18

提示工程的困境与机遇


当你在开发基于大语言模型的Agent产品时,是否曾经在提示模式选择和优化上浪费了大量时间?在各种提示模式(Zero-Shot、CoT、ReAct、ReWOO等)中选择最佳方案,再逐字斟酌提示内容,这一过程不仅耗时,而且常常依赖经验和直觉而非数据驱动的决策。更糟糕的是,你辛苦优化的提示可能只适用于特定模型或特定任务,一旦换了模型或应用场景,又需要从头开始。研究表明,即使是最先进的LLM,其性能也严重依赖于提示的质量,而手动优化提示不仅费时费力,还无法系统地探索所有可能的配置组合。不如把复杂的Agent的prompt优化问题用DeepSeek-V3优化成这样:


用IBM的AutoPDL,让Agent的prompt实现数据驱动的自动优化,性能飙升68.9% |重磅


AutoPDL:突破性的自动提示优化框架


UC Davis和IBM Research的AutoPDL(arXiv:2504.04365v1)提出了一种全新思路:将提示优化视为结构化的AutoML问题,自动在代理模式和非代理模式的组合空间中搜索最优配置。该方法不仅考虑高层提示模式(如Zero-Shot、CoT、ReAct、ReWOO),还同时优化具体的提示内容(指令和少量样本演示)。关键是,AutoPDL输出的不是简单的文本提示,而是可读、可编辑、可执行的PDL程序,实现了从源到源的优化,让你既能直接使用,又能根据需要进一步调整。这种方法受到了AutoML文献中联合搜索机器学习算法及其超参数的研究启发,但与传统AutoML不同的是,AutoPDL探索的是文本ICL样本、指令和提示模式,而不是离散或连续的超参数。


四大提示模式全面解析



用IBM的AutoPDL,让Agent的prompt实现数据驱动的自动优化,性能飙升68.9% |重磅


Zero-Shot是最简单的基准模式,直接向LLM提问并期望得到答案,适合简单任务或当优质演示稀缺时使用。这种模式不需要任何示例,仅依赖模型预训练过程中获得的知识,对于资源有限或数据稀缺的场景尤为实用。然而,在复杂任务中,Zero-Shot的表现往往不尽如人意,需要更强大的提示策略。


CoT(思维链)模式通过少量样本学习,在输入中包含几个问答对作为示例,使模型生成包含推理过程的答案,特别适合需要逐步推理的数学或逻辑问题。这种模式源自Brown等人(2020)和Wei等人(2022)的研究,它有效地引导模型展示解决问题的思维过程,使复杂推理可追踪和理解。在AutoPDL中,CoT提示包括少量示例样本,每个样本由输入x和输出y组成,在最终答案之前包含了推理思考过程。


ReWOO(无观察推理)模式由Xu等人(2023)提出,是一种创新的代理模式,少样本示例是轨迹,第一个LLM调用生成推理思考和多个动作,PDL代码执行每个动作作为工具调用获得相应的观察,再由最终的模型调用根据观察生成答案。这种模式巧妙地解耦了推理与观察,适合需要工具调用但不需要多轮交互的场景,特别是当工具调用成本高或延迟大时,可以一次性生成所有必要的工具调用,提高效率。


ReAct模式则是Yao等人(2023)提出的方法,开创性地采用了思考-行动-观察(TAO)循环。它从示例轨迹和问题开始,然后在每次迭代中,LLM生成思考和行动,系统执行工具调用作为观察反馈,直到特定的Finish动作结束循环。这种交互式方法使代理能够根据前面步骤的结果调整其策略,特别适合需要动态决策的复杂任务,也是目前最流行的代理框架(如CrewAI、AutoGen)采用的核心模式。


巧妙的搜索策略:连续减半法


AutoPDL采用连续减半法(Successive Halving)高效探索提示配置空间,避免陷入局部最优同时节省计算资源。该算法源自Jamieson等人(2016)的研究,具体步骤如下:首先从可能的配置和演示中采样多个候选,从验证集中取一个小子集进行初始评估;每次迭代后,保留表现最好的一半候选,同时将验证子集的大小翻倍;重复这个过程,直到只剩下最佳候选。这种策略平衡了探索广度和计算效率,使AutoPDL能够在有限的计算资源下找到接近最优的解决方案。


用IBM的AutoPDL,让Agent的prompt实现数据驱动的自动优化,性能飙升68.9% |重磅


AutoPDL方法概述


与传统的网格搜索或随机搜索相比,连续减半法更适合AutoPDL的场景,因为它不假设搜索空间的平滑性或连续性,能够处理离散的、结构化的选择,如提示模式和示例选择。此外,通过动态调整验证集大小,算法确保在早期快速筛选出明显较差的候选,而在后期对有希望的候选进行更彻底的评估,大大提高了整体效率。


PDL:提示编程的强大基础


PDL(Prompt Definition Language)是由Vaziri等人(2024)提出的基于YAML的声明式提示编程语言,它抽象了与LLM和工具交互的复杂细节,让你专注于数据生成的逻辑。PDL的核心理念是将与LLM的交互视为数据生成过程,允许用户以声明方式指定要生成的数据的结构,而不依赖于特定的编程语言。


用IBM的AutoPDL,让Agent的prompt实现数据驱动的自动优化,性能飙升68.9% |重磅


PDL程序示例


在AutoPDL中,搜索空间和最终解决方案都是PDL程序,这种设计确保了最终优化结果不仅高效,还便于人类理解和修改。PDL程序的结构清晰,支持变量、条件、循环等控制结构,以及函数定义,使得复杂的提示模式能够以简洁的方式表达,同时保持执行的精确性和一致性。我根据以上算法,复现了AutoPDL,如开篇的结果所示。未来,我会在我的Agent群里开源这些代码。


PDL的另一个重要特性是它能够自然地表示工具调用。例如,在图1所示的简单PDL程序中,系统首先定义了工具提示,然后是用户查询,接着是模型调用,最后是工具执行(在本例中是计算器工具)。这种结构使得代理与工具的交互变得清晰和可控,是实现复杂代理模式(如ReAct和ReWOO)的理想选择。


工具集与代理能力的深度整合


AutoPDL支持多种强大工具,显著增强了代理的能力边界。计算器(Calculator)工具用于数学数据集,可以评估经过清理的表达式(例如将^替换为**),使用SymPy执行计算并返回结果。当表达式无效时,函数会返回警告,帮助代理从无效输入中恢复。


搜索(Search)工具用于事实验证,返回查询的第一个百科搜索结果的摘要。如果未找到结果,会返回提示重试的提示;如果标题过于模糊,则提供可能的消歧选项列表。这使得代理能够获取外部知识,验证事实或回答基于事实的问题。


执行(Execute)工具实现了编程代理,可以执行包裹在XML风格标签中的任意代码。该工具在Python shell中执行代码,返回最终表达式的结果。这允许代理在提交解决方案之前测试其建议的代码是否符合给定的测试用例,大大提高了代码生成的准确性。


Finish动作(或编码代理的标签)是最基本的工具,它结束代理的轨迹,使代理返回值作为解决方案。这个简单但重要的动作确保了代理能够在适当的时候提供最终答案,而不是无限循环或探索。


这些工具的组合使得AutoPDL能够处理从数学推理到事实查询再到代码生成的各种复杂任务,大大拓展了应用场景。更重要的是,由于代理和工具都是在PDL中实现的,给定任务的工具集本身也可以作为搜索空间的一个维度,这为未来的研究提供了更多可能。


实验结果:手动还是自动


研究者在三个任务(问答、数学、编程)和六个LLM(参数从8B到70B不等)上进行了全面评估,结果令人震惊。平均准确率提升9.5±17.5个百分点,最高可达68.9个百分点(在GRANITE 13B INSTRUCT V2上使用FEVER数据集)。这些实验不仅验证了AutoPDL方法的有效性,还揭示了提示优化的复杂性和必要性。


用IBM的AutoPDL,让Agent的prompt实现数据驱动的自动优化,性能飙升68.9% |重磅


性能提升


更重要的是,实验揭示了一个关键事实:不存在适用于所有情况的最佳提示策略。对于同一任务,不同模型的最佳模式各不相同;同样,对于同一模型,不同任务的最佳模式也有显著差异。例如,在GSM8K任务上,LLAMA 3.1 70B模型使用5-shot CoT取得了最佳效果,而GRANITE 3.1 8B则是使用5-shot ReAct。这一发现彻底颠覆了"一刀切"的提示工程方法,强调了自动化、数据驱动优化的必要性。

实验还表明,即使是针对相似任务的相似模型,最佳配置也可能大相径庭。这意味着手动优化提示几乎不可能找到真正的最优解,因为潜在的配置空间太广,变量太多。AutoPDL通过系统化、数据驱动的方法解决了这个问题,为每个特定模型和任务组合找到最佳配置。


跨模型与跨任务的深度剖析


在FEVER事实验证任务上,CoT和ReWOO是表现最好的模式,最小提升0.7个百分点(GRANITE 3.1 8B),最大提升68.9个百分点(GRANITE 13B INSTRUCT V2)。有趣的是,最大模型(LLAMA 3.1 70B)从3-shot CoT中获益56.6个百分点。FEVER的运行时间通常高于其他基准,可能是由于包含百科内容导致的大量标记。


在GSM8K数学问题上,LLAMA 3.1 70B使用5-shot CoT获得了12.7个百分点的最大提升,而GRANITE 3.1 8B使用5-shot ReAct的最小提升为1.3个百分点。ReWOO对任何模型都不是最优的。令人惊讶的是,对于GRANITE 20B CODE和GRANITE 34B CODE,没有发现比零样本基线更好的性能。这表明,即使是包含少量示例样本,也并不总是能提高LLM的性能,这与常见的认知相悖。


对于MBPP+编程任务,大多数模型受益于执行反馈,有4个模型以ReAct为最佳模式(如前所述,ReWOO被排除在外)。GRANITE 13B INSTRUCT V2获得了8个百分点的最大提升,这可能是由于它作为一个通用模型而非专门的代码模型,在编程方面表现较差。相比之下,较小的LLAMA 3.1 8B模型有61.2%的高零样本性能,但使用ReAct仍然提高了6.2个百分点。对于GRANITE 3.1 8B和LLAMA 3.1 70B,未观察到改进。


这些结果清晰表明,提示策略必须根据具体模型和任务量身定制,才能发挥最大潜力。没有一种通用的"最佳实践"适用于所有情况。这进一步强调了像AutoPDL这样的自动优化方法的价值。


跨数据集与跨模型的迁移能力


令人惊喜的是,AutoPDL甚至能够解决数据稀缺的难题:当特定任务的少样本示例库缺失时,可以利用相似任务的示例库实现优化。研究者使用GSM8K的示例优化了GSM-Hard任务的PDL程序,发现在大多数情况下,GSM8K的示例对模型在GSM-Hard上的表现至少没有害处,最高可提升9.9个百分点(LLAMA 3.1 70B,5-shot ReAct)。作为最大的评估模型,LLAMA 3.1 70B可能泛化能力最强,并能有效利用计算器工具。


更令人振奋的是,为开源模型优化的PDL程序可以有效迁移到闭源商业模型。研究者评估了LLAMA 3.1 70B优化的PDL程序在OpenAI的gpt-4o-mini-2024-07-18上的表现,发现对于所有在LLAMA 3.1 70B上有改进的数据集/提示模式对,GPT-4o-mini也有令人惊讶的改进:FEVER上使用3-shot CoT至少提升4个百分点,GSM-Hard上使用5-shot ReAct(使用GSM8K示例)提升9.3个百分点,GSM8K上使用5-shot CoT提升高达13.1个百分点。这表明,为开源模型优化的提示也能使闭源模型受益,大大降低了优化成本。


这种迁移能力具有重要的实践意义。它意味着你可以使用计算资源较少的开源模型进行优化,然后将优化结果应用于计算成本更高的闭源商业模型,从而节省时间和资源。这种方法特别适合预算有限或资源受限的团队,让他们也能享受到高质量提示优化的好处。


详解AutoPDL的实验方法论


研究者选择了广泛使用的数据集,涵盖了不同的工具和领域,代表了先前研究中经常研究的工具类别(如计算器、搜索、代码执行)。实验中,每个数据集都有三个不相交的部分:Dtrain用于采样少样本样本,Dvalid用于在优化过程中评估候选方案,Dtest用于在优化完成后评估最终选择的解决方案。


GSM8K(小学数学)数据集包含超过八千个小学数学问题,每个问题由单词问题x、推理步骤序列tho和最终的纯数字答案y组成。FEVER是围绕事实验证构建的问答数据集,包含真实、虚假或不可验证的声明,以及支持、反驳或中立的句子及其来源的百科文章。MBPP+是一个包含基本Python问题的数据集,每个示例由自然语言问题说明x和一个独立函数y组成,并附带用于评估的测试用例。


为了构建代理轨迹,研究者为每个数据集设计并应用了模板,这种方法相对简单且易于实现。例如,对于GSM8K,通过遍历推理步骤,在每一步中添加"思考"(包含数学表达式前的文本),调用计算器工具,然后添加"观察"(表达式结果);对于FEVER,遍历与声明相关的每篇文章,添加"我需要搜索..."的思考,然后是动作,观察(文章摘要),以及包含所有相关句子的思考;对于MBPP+,生成包含问题、思考、执行动作(提议的代码和断言)以及执行结果的轨迹。


研究者选择了六种不同能力和规模的模型,包括两个通用自然语言模型(LLAMA 3.1 8B和LLAMA 3.1 70B),一个通用模型(GRANITE 13B INSTRUCT V2)和两个代码模型(GRANITE 20B和34B CODE INSTRUCT)。这种多样化的模型选择旨在展示AutoPDL方法的通用性,并研究不同类型和规模的模型如何从不同的提示策略中获益。


最终,AutoPDL会输出一个完整的PDL程序,这个程序包含了优化变量的具体值,例如num_demonstrations: 0和一个包含具体示例轨迹的列表。这个程序既可以直接用于生产,也可以根据需要进一步手动调整,完美平衡了自动化和灵活性。


用IBM的AutoPDL,让Agent的prompt实现数据驱动的自动优化,性能飙升68.9% |重磅


图7显示了优化过程中准确率的变化,包括95%置信区间,展示了候选配置的准确率分布。随着迭代的进行,候选数量减少,验证集大小Dv增加,最终收敛到最佳配置。这种可视化有助于理解优化过程,跟踪进度,并确保找到的解决方案是稳定且可靠的。


AutoPDL揭示的Agent开发新范式


AutoPDL标志着从手工提示工程到数据驱动、自动化优化的范式转换。这种方法诞生于一个简单但深刻的洞察:提示策略没有通用解,必须根据特定模型和任务量身定制才能获得最佳性能。


通过将提示优化框架化为AutoML问题,AutoPDL展示了如何系统地探索提示空间,找到最优配置,而不是依赖经验或直觉。更重要的是,它的源到源优化方法保留了人类理解和干预的可能性,既实现了自动化,又保持了灵活性和可控性。


对于正在开发Agent产品的工程师而言,AutoPDL带来的启示是明确的:不要固守于单一的提示模式或策略,而是拥抱多样性和自动化。让数据驱动你的决策,让算法探索提示空间,专注于创造真正的价值,而不是在反复调整提示上耗费精力。通过这种方式,你可以构建更强大、更适应性强的Agent系统,更好地满足用户需求。



文章来自微信公众号 “ AI修猫Prompt “,作者 AI修猫Prompt


用IBM的AutoPDL,让Agent的prompt实现数据驱动的自动优化,性能飙升68.9% |重磅


1
智能体

【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。

项目地址:https://github.com/Significant-Gravitas/AutoGPT


【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。

项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md

2
百科搜索

【开源免费】Semantic Search on Wikipedia是一个索引数百万维基百科文章的AI搜索引擎。该项目开源免费,通过维基百科数据创建了一个语义搜索引擎和一个RAG聊天机器人。

项目地址:https://github.com/upstash/wikipedia-semantic-search?tab=readme-ov-file

在线使用:https://wikipedia-semantic-search.vercel.app/

3
免费使用GPT-4o

【免费】ffa.chat是一个完全免费的GPT-4o镜像站点,无需魔法付费,即可无限制使用GPT-4o等多个海外模型产品。

在线使用:https://ffa.chat/

4
prompt

【开源免费】LangGPT 是一个通过结构化和模板化的方法,编写高质量的AI提示词的开源项目。它可以让任何非专业的用户轻松创建高水平的提示词,进而高质量的帮助用户通过AI解决问题。

项目地址:https://github.com/langgptai/LangGPT/blob/main/README_zh.md

在线使用:https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0

IOS下载
安卓下载
微信群
沪ICP备2023015588号