在我们的工作群里,经常会有一位管理者来协调每个人的工作并汇总工作成果。近日,斯坦福大学的 Mirac Suzgun 和 OpenAI 的 Adam Tauman Kalai 提出了一种新的 prompting 方法:meta-prompting。类似于工作群,这种方法也是使用一个居中协调的指挥员(元模型)来协调使用不同用途的 AI 和其它工具。
最新一代语言模型(尤其是 GPT-4、PaLM 和 LLaMa)已经成功拓展了自然语言处理和生成的边界。这些大规模模型可以解决许多不同任务,从写莎士比亚风格的十四行诗到总结复杂的医疗报告和解决竞赛级的编程问题。尽管这些模型可以解决多种多样的问题,但它们并非总是正确的,有时候也会生成不准确、误导性或矛盾的响应结果。
随着这些模型的运行成本越来越低,人们自然会问:是否可以使用脚手架系统(scaffolding system)并使用多个语言模型查询来优化并且提升这些模型输出的准确度和稳健性。
斯坦福和 OpenAI 的这项研究提出了一种可用于提升语言模型的功能和性能的新技术,称为 meta-prompting。
- 论文标题:Meta-Prompting: Enhancing Language Models with Task-Agnostic Scaffolding
- 论文地址:https://arxiv.org/abs/2401.12954
- 项目地址:https://github.com/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 所示,相比之前的多种方法,新方法的提升很明显。
meta-prompting
直觉知识和抽象概述。meta-prompting 的工作方法是使用一个模型来协调和执行多个独立查询,然后将它们的响应综合起来,进而渲染得到一个最终响应。从原理上讲,该机制采用了一种集成方法,即借用独立专业模型的力量和多样性来协作解决和处理涉及多方面的任务或问题。
meta-prompting 策略的核心是其浅层的结构,其中使用一个单一模型(称为元模型)作为权威的主实体。
这种 prompting 结构类似于管弦乐队,其中指挥家的角色就由元模型充当,每位音乐演奏者都对应一个不同的特定领域的模型。正如指挥家可以让多种乐器协调弹奏出和谐的旋律一样,元模型也可以将多个模型的解答和见解组合起来,为复杂的问题或任务给出准确且全面的解答。
从概念上讲,在这个框架内,特定领域的专家可以有多种多样的形式,比如针对特定任务微调过的语言模型、用于处理特定类型查询的专用 API,甚至还可以是计算器这样的计算工具或用于执行代码的 Python 解释器等代码工具。这些功能各异的专家都在元模型的监督下接受指示和统一,无法直接相互互动或交流。
Algorithmic Procedure. 算法 1 给出了新提出的 meta-prompting 方法的伪代码。
简单总结一下,首先是对输入执行变换,使其符合适当的模板;然后执行以下循环:(a) 向元模型提交 prompt,(b) 如有需要,使用特定领域的专家模型,(c) 返回最终响应,(d) 处理错误。
需要指出,该团队在实验中采用的元模型和专家模型都是 GPT-4。它们的角色差异是由各自收到的指令确定的;其中元模型遵循图 3 提供的一组指令,而专家模型则遵从元模型在推理时间动态确定的指令。
实验设置
基准
该团队比较了 meta-prompting 与以下 prompting 方法的无关任务型零样本式版本:
- 标准 prompting
- 零样本思维链 prompting
- 专家 prompting
- 多人设 prompting
数据集和任务
该团队在实验中采用了多种任务和数据集,它们需要多种不同能力,比如数学和算法推理、特定领域知识和文学创造力。这些数据集和任务包括:
- Game of 24:目标是使用四个给定数值(每个只能使用一次)构建一个结果为 24 的算术表达式。
- 三个 BIG-Bench Hard(BBH)任务:Geometric Shapes、MultiStep Arithmetic Two 和 Word Sorting;另外还有一个直接从 BIG-Bench 套件获取的推理任务 Checkmate-in-One。
- Python Programming Puzzles(P3),即 Python 编程题,包含多个难度。
- Multilingual Grade School Math,即多语言小学数学,这是 GSM8K 数据集的一个多语言版本,包含孟加拉语、日语和斯瓦希里语等语言。
- Shakespearean Sonnet Writing,即莎士比亚式十四行诗写作,这是该团队创建的一个新任务,目标是写出按「ABAB CDCD EFEF GG」严格押韵的十四行诗,其中应一词不差地包含所提供的三个词。
答案提取和评估协议
如图 3 所示,对于新提出的 meta-prompting 方法,系统指令会鼓励元模型以特定格式给出最终答案。
至于评估,则会根据任务的性质和形式,采用以下三个指标之一:
- Exact Match (EM),精确匹配
- Soft Match (SM),软匹配
- Functionally Correct (FC),功能正确性
模型和推理
该团队的主要实验都使用了 GPT-4(gpt-4-32k)。一些补充实验则使用了 GPT-3.5(gpt-35-turbo)。不管是 GPT-3.5 还是 GPT-4,都使用了以下指令进行微调。
在全部实验中,元模型使用的参数和系统指令都是一样的。温度值设置为 0,top-p 值设置为 0.95,最大 token 数为 1024。
主要结果和讨论
表 1 总结了实验结果,新提出的 meta-prompting 的优越性得到了体现。
观察这些方法在所有任务上的总体性能,可以看到 meta-prompting 为准确度带来的显著提升,尤其是使用了 Python 解释器工具辅助时。
具体来说,meta-prompting 方法胜过标准 prompting 方法 17.1%,超过专家(动态) prompting 17.3%,也比多人设 prompting 优秀 15.2%。
另外从图 4 和 5 可以看到,相比于不使用 Python 解释器的 meta-prompting,整合 Python 解释器时,在不同任务上的整体性能可获得 11.5% 的提升。
该团队还在论文中深入讨论了从实验中得到了关键见解,包括 meta-prompting 的性能优越性、零样本分解能力、错误检测、信息聚合和代码执行等。这里我们就不详细说明了,但 Fresh Eyes 这一概念倒是值得介绍一番。
Fresh Eyes 也就是用另一双眼睛看,这有助于缓解语言模型的一个众所周知的问题:犯错时会一路错到底并且会表现出过度自信。
Fresh Eyes 是 meta-prompting 与多人设 prompting 的一大关键差异,并且实验结果也证明了其具有优势。在 meta-prompting 中,可以使用专家(或人设)来对问题进行重新评估。这种方法有机会得到全新的见解,从而有望发现之前未被发现有误的解答。
基于认知心理学,Fresh Eyes 可以带来更具创造性的问题求解和错误检测结果。
下面的例子展示了 Fresh Eyes 在实践中的好处。假设任务是 Game of 24,提供的数值是 6、11、12 和 13,要求构建一个能让结果为 24 的算术表达式并且每个数只能用一次。其历史过程可能会是这样:
1. 元模型提议咨询解答数学问题的专家模型和使用 Python 编程。它强调了对准确度和遵守约束条件的必要性,并建议如有需要可让另一个专家参与进来。
2. 一个专家给出了一个解答,而另一个专家则认为其不对,于是元模型建议写一个 Python 程序来寻找有效的解。
3. 咨询一个编程专家,让其写一个程序。
4. 另一个编程专家在脚本中发现了一个错误,然后对其进行修改并执行修改后的脚本。
5. 再咨询一个数学专家,让其验证该程序输出的解。
6. 验证完成后,由元模型将其输出作为最终答案。
这个示例展现了 meta-prompting 如何在每一步纳入新观点,这样不仅能找到解答,而且还能有效识别和纠正错误。
该团队最后讨论了一些与 meta-prompting 有关的其它问题,包括对所使用的专家类型的分析、获得最终结果所需的对话轮数以及如何应对无解问题等情况。详情请参阅原论文。