论文标题:Meta-Prompting: Enhancing Language Models with Task-Agnostic Scaffolding
论文地址:https://arxiv.org/abs/2401.12954
项目地址:https://github/suzgunmirac/meta-prompting
这种技术涉及构建一个高层级的「元」 prompt,其作用是指示语言模型做到以下几点:
1. 将复杂的任务或问题分解成更小的容易解决的子任务;
2. 使用适当且详细的自然语言指令将这些子任务分配给专业的「专家」模型;
3. 监督这些专家模型之间的通信;
4. 通过这个过程应用其自己的批判性思维、推理和验证技能。
对于可使用 meta-prompting 有效调用的语言模型,当对其进行查询时,该模型的作用是作为指挥员(conductor)。它会输出一组消息历史(或者称为叙述(narrative)),其由多个专家模型的响应构成。这个语言模型首先会负责生成消息历史中的指挥员部分,这其中包括专家的选取以及为它们构建特定的指令。但是,同一个语言模型本身也会作为独立专家,其会基于专业知识以及指挥员为每条具体查询选取的信息生成输出。
这种方法可让单个统一的语言模型维持连贯一致的推理路线,同时还可以利用各种不同的专家角色。通过动态地为 prompting 选择上下文,这些专家能为该过程引入全新的视角,同时指挥员模型还能保持对完整历史的鸟瞰视角并维持协调。
因此,这种方法能让单个黑箱语言模型既有效作为中心指挥员,同时又充当一系列不同专家,这样便可以得到更加准确、可靠和连贯一致的响应。
这里新提出的 meta-prompting 技术组合并扩展了近期研究提出的多种不同的 prompting 思想,包括高层级规划和决策、动态人设分配、多智能体辩论、自我调试和自我反思。
meta-prompting 的一个关键方面是其具有一个性质:不受具体任务影响。
传统的脚手架方法需要针对每个任务调整具体的指令或示例,而 meta-prompting 则不同,其在多种任务和输入上都采用了同一套高层级指令。对怕麻烦的用户来说,这种通用性尤其有益,因为这样就不必为每个具体任务提供详细的示例或具体指示了。
举个例子,对于「写一首关于自拍的莎士比亚式十四行诗」这样的一次性请求,用户无需补充高质量的新古典主义诗歌示例。
meta-prompting 方法能提供一种广泛、灵活的框架,而又不会影响其特定性或相关性,从而可以提升语言模型的实用性。此外,为了展现 meta-prompting 方法的通用性和整合能力,该团队还对其系统进行了增强,使其可以调用 Python 解释器。如此一来,该技术就能支持更加动态和全面的应用,从而进一步提升其有效处理多种任务和查询的潜力。
图 2 展示了一个 meta-prompting 的会话流程示例。
其描绘了元模型(Meta Model,即指挥员模型)使用输入和来自多个不同的专业专家模型或代码执行的输出解读其自身输出的过程。这样的配置让 meta-prompting 成为了一个近乎通用的工具。其允许将多个语言模型的交互和计算聚合成单一且连贯的叙述。meta-prompting 的不同之处在于其让语言模型自己决定要使用哪些 prompt 或使用哪些代码段。
该团队使用 GPT-4 作为基础语言模型进行了全面的实验,比较了 meta-prompting 与其它无关任务型脚手架方法。
实验发现,meta-prompting 不仅能提升整体性能,而且在多个不同任务上也往往能实现新的最佳结果。其灵活性尤其值得称道:指挥员模型有能力调用专家模型(基本上就是其本身,只是指令不一样)执行多种不同的功能。这些功能可能包括点评之前的输出、为特定任务选取特定 AI 人设、优化生成的内容、确保最终输出在实质和形式上都满足所需标准。
如图 1 所示,相比之前的多种方法,新方法的提升很明显。