摘要
通过在自然语言指令上进行调节,大型语言模型(LLMs)已经展现出了作为通用计算机的惊人能力。然而,任务表现很大程度上取决于用于引导模型提示的质量,而最有效的提示通常是由人工精心设计的。受到经典程序合成和人类提示工程方法的启发,我们提出了自动提示工程师1(APE)用于自动指令生成和选择。在我们的方法中,我们将指令视为"程序",通过搜索由LLM提出的指令候选池来优化,以最大化选定的评分函数。为了评估所选指令的质量,我们评估了另一个LLM在遵循所选指令的零样本表现。广泛的实验表明,我们自动生成的指令在24个指令诱导任务和21个精选BIG-Bench任务上,比先前的LLM基线表现高出很大一截,并且达到了人类标注者生成指令的更好或相当的表现。我们对APE的表现进行了广泛的质量和定量分析。我们展示了APE设计的提示能够提升少样本学习表现(只需将它们附加到标准的上下文内学习提示之前),找到更好的零样本思维链提示,以及引导模型走向真实性及/或信息性。
1 引言
规模和基于注意力架构的结合使得语言模型具有了前所未有的通用性(Kaplan等人,2020年;Vaswani等人,2017年)。这些所谓的"大型语言模型"(LLMs)在包括零样本和少样本设置在内的广泛任务中展现出了非凡的,常常是超人类的能力(Brown等人,2020年;Srivastava等人,2022年)。然而,通用性带来了一个控制问题:我们如何让LLMs按照我们的意愿行事?
为了回答这个问题并引导LLMs朝向期望的行为,最近的研究考虑了微调(Ouyang等人,2022年;Ziegler等人,2019年)、上下文内学习(Brown等人,2020年)以及多种形式的提示生成(Gao,2021年),包括可微分调整软提示(Qin & Eisner,2021年;Lester等人,2021年)和自然语言提示工程(Reynolds & McDonell,2021年)。后者特别有趣,因为它为人类与机器交流提供了一个自然的接口,不仅对LLMs,而且对其他通用模型,如提示图像合成器(Rombach等人,2022年;Ramesh等人,2022年)也非常相关,公众对提示设计和生成的兴趣也已经出现(见附录A中的例子)。
这种兴趣背后的事实是,即使是可能通过其他指令产生期望结果的情况下,简单的语言提示也不总能产生期望的结果。因此,人类用户必须尝试广泛的提示来引出期望的行为,因为他们对指令与特定模型的兼容性知之甚少。我们可以通过将LLMs视为执行由自然语言指令指定的程序的"黑箱计算机"来理解这一点:尽管它们可以执行广泛的自然语言程序,但这些程序的处理方式对人类来说可能并不直观,指令的质量只能在执行下游任务时进行衡量(Sanh等人,2022年;Wei等人,2021年)。
为了减少创建和验证有效指令所需的人力,我们提出了一种使用LLMs自动生成和选择指令的新算法。我们将这个问题称为自然语言程序合成,并提议将其作为一个黑箱优化问题来处理,使用LLMs生成和搜索基于启发式可行候选解决方案。在这样做的时候,我们以三种方式利用了LLMs的通用能力。首先,我们使用一个LLM作为推理模型(Ellis等人,2021年;Honovich等人,2022年)来基于一组输入-输出对的演示生成指令候选。接下来,我们通过计算我们试图控制的LLM下每个指令的得分来指导搜索过程。最后,我们提出了一种迭代蒙特卡洛搜索方法,其中LLMs通过提出语义上相似的指令变体来改进最佳候选。直观地说,我们的算法要求LLMs基于演示生成一组指令候选,然后要求它们评估哪些指令更有前景。我们称我们的算法为自动提示工程师(APE)。我们的主要贡献包括:
- 我们将指令生成框架化为自然语言程序合成,将其制定为一个由LLMs引导的黑箱优化问题,并提出了一种简单的方法和一种迭代蒙特卡洛搜索方法来近似解决方案。
- 我们提出的方法,APE,在使用模型生成指令的零样本学习中实现了人类水平的性能,在24/24指令诱导任务和17/21 Big-Bench任务上。
- 我们提供了广泛的质量和定量分析,探索APE的各种方面,并展示了APE在改善少样本学习、找到更好的零样本思维链提示以及引导LLMs朝向期望行为(如真实性和/或信息性)方面的应用。
2 相关工作
大型语言模型的扩展 在模型大小、训练数据和训练计算方面扩展基于变换器的语言模型已被证明可以在广泛的下游NLP任务上可预测地提高性能(Vaswani等人,2017年;Devlin等人,2018年;Brown等人,2020年)。由于这种扩展,发现了LLMs的许多新兴能力(Wei等人,2022a),包括少样本上下文内学习、零样本问题解决、思维链推理、指令遵循和指令诱导(Cobbe等人,2021年;Wei等人,2022b;Kojima等人,2022年;Sanh等人,2022年;Wei等人,2021年;Ouyang等人,2022年;Honovich等人,2022年)。在本文中,我们将LLMs视为执行由自然语言指令指定的程序的"黑箱计算机",并研究如何使用模型生成的指令来控制LLM的行为。
提示工程 提示提供了一个自然直观的界面,供人类与通用模型(如LLMs)互动和使用。由于其灵活性,提示已被广泛用作NLP任务的通用方法(Schick & Schütze,2021年;Brown等人,2020年;Sanh等人,2022年)。然而,LLMs需要仔细的提示工程,无论是手动(Reynolds & McDonell,2021年)还是自动(Gao等人,2021年;Shin等人,2020年),因为模型似乎并不像人类那样理解提示(Webson & Pavlick,2021年;Lu等人,2021年)。尽管许多成功的提示调整方法使用基于梯度的方法在连续空间上进行优化(Liu等人,2021年;Qin & Eisner,2021年;Lester等人,2021年),但随着规模的增加,这变得不太实用,因为计算梯度变得越来越昂贵,对模型的访问转向可能不提供梯度访问的API。在本文中,我们从离散提示搜索方法中借用组件,如提示生成(Gao等人,2021年;Ben-David等人,2021年)、提示评分(Davison等人,2019年)和提示释义(Jiang等人,2020年;Yuan等人,2021年),通过直接在自然语言假设空间中进行搜索来优化指令。与过去的工作相比,后者使用专用模型执行每个组件并重度依赖人类模板,我们展示了整个搜索可以由单个LLM完成。
程序合成 程序合成涉及在"程序空间"中进行自动搜索,以找到满足特定规范的程序(Gulwani等人,2017年)。现代程序合成接受各种规范,包括输入-输出示例(Ellis等人,2021年;Wong等人,2021年)和自然语言(Jain等人,2022年)。可搜索的可行程序空间范围也已扩大,从历史上限制性的特定领域语言到通用编程语言(Austin等人,2021年)。与我们之前的需要适当结构化假设空间和组件库的方法(Liang等人,2010年;Ellis等人,2018年)不同,我们利用LLMs提供的结构来搜索自然语言程序空间。使用推理模型是标准做法,通过将搜索空间限制在可能的表达式的有限空间中来加速搜索(Menon等人,2013年;Lee等人,2018年;Devlin等人,2017年;Ellis等人,2021年)。受此启发,我们使用LLMs作为近似推理模型,基于一组演示生成程序候选。与传统的程序合成不同,我们的推理模型不需要任何训练,并且可以很好地泛化到各种任务。
3 利用LLMS进行自然语言程序合成
我们考虑一个由输入/输出演示样本集合 Dtrain = {f(Q; A)} 组成的任务,这些样本从总体 X 中抽取,以及一个带提示的模型 M。自然语言程序合成的目标是要找到一个单一的指令 ρ,使得当模型 M 被提示由指令和给定输入 Q 的连接 [ρ; Q] 时,M 能产生相应的输出 A。更正式地说,我们将这个问题构建为一个优化问题,我们寻求指令 ρ,以最大化某些每个样本的评分函数 f(ρ; Q; A) 在可能的 (Q; A) 上的期望值:
请注意,通常情况下,Q 可能是空字符串,这样我们就是在优化 ρ 作为直接产生输出 fAg 的提示。尽管这个任务已经被人类广泛尝试,但我们对于任何特定的指令与模型 M 的兼容性知之甚少。因此,我们建议将这个人类难以处理的问题视为一个由 LLMs 引导的黑盒优化过程。我们的算法,APE,在其两个关键组件------提案和评分中使用了 LLMs。如图 1 所示并在算法 1 中总结,APE 首先提出几个候选提示,然后根据选定的评分函数过滤/精炼候选集,最终选择得分最高的指令。接下来我们将讨论提案和评分的选择。
3.1 初始提案分配
由于搜索空间无限大,找到正确的指令可能非常困难,这使得自然语言程序合成在历史上难以处理。自然语言处理领域的最新进展表明,语言模型在生成多样化的自然语言文本方面非常出色。因此,我们考虑利用预训练的 LLM 来提出一组好的候选解决方案集合 U,以指导我们的搜索过程。尽管从 LLM 随机采样不太可能产生期望的 (Q; A) 对,但我们可以要求 LLM 大致推断出给定输入/输出演示的最可能的、得分较高的指令;即大致从 P(ρ j Dtrain; f(ρ) ) 中采样。
正向模式生成 我们考虑两种方法来从 P(ρ j Dtrain; f(ρ) 高) 生成高质量的候选。首先,我们采用一种基于"正向"模式生成的方法,通过将这个分布 P(ρ j Dtrain; f(ρ) 高) 转换为文字。例如,在我们的指令诱导实验(第4.1小节)中,我们遵循 Honovich 等人(2022年)的方法,并使用图2(顶部)中的提示来提示 LLM。
反向模式生成 虽然"正向"模型对于大多数预训练的 LLM 都可以直接使用,但是将 P(ρ j Dtrain; f(ρ) ) 转换为文字需要针对不同任务进行定制工程。这是因为指令通常位于文章的开头,而"正向"模型只从左到右生成文本,这要求指令在提示的末尾被预测。因此,我们希望有一种更灵活的方法,使得指令可以位于文本的任何位置。
为了解决这个问题,我们考虑使用"反向"模式生成,它使用具有填充能力的 LLM------例如 T5(Raffel 等人,2020年),GLM(Du 等人,2022年)和 InsertGPT(Bavarian 等人,2022年)------来推断缺失的指令。我们的"反向"模型通过填充空白直接从 P(ρ j Dtrain; f(ρ) 高) 中采样。我们在图2(中间)展示了这样的模板示例。
定制提示 请注意,根据所使用的评分函数,可能存在比上述样本更合适的提示。例如,在我们的 TruthfulQA 实验 中,我们从原始数据集(Lin 等人,2022年)的人类设计的指令开始,并要求"反向"模型提出适合缺失上下文的初始指令样本(图2(底部))。
3.2 评分函数
为了将我们的问题视为黑盒优化,我们选择了一个评分函数,它可以准确测量数据集与模型生成数据之间的对齐程度。在我们的指令诱导实验中,我们考虑了两个潜在的评分函数,如下所述。在 TruthfulQA 实验 中,我们主要关注 Lin 等人(2022年)提出的自动化指标,类似于执行准确率。在每种情况下,我们使用方程(1)评估生成指令的质量,并对保留的测试数据集 Dtest 取期望值。
执行准确率 首先,我们考虑使用 Honovich 等人(2022年)提出的执行准确率指标来评估指令 ρ 的质量,我们将其表示为 fexec。在大多数情况下,执行准确率简单地定义为 0-1 损失,f(ρ; Q; A) = 1 [M([ρ; Q]) = A]。在某些任务上,执行准确率考虑了不变量;例如,它可能是一个顺序不变集合匹配损失,如 Honovich 等人(2022年)附录 A 中所述。
对数概率 我们进一步考虑了一个更柔和的概率评分函数,我们假设这可能会通过在低质量指令候选中搜索时提供更细粒度的信号来改善优化。特别是,我们考虑在目标模型 M 下,给定指令和问题的期望答案的对数概率,这在每个样本基础上是对数 P(A j [ρ; Q])。
高效的评分估计 通过计算整个训练数据集上所有指令候选的评分来估计评分可能会很昂贵。为了减少计算成本,我们采用了一种过滤方案,其中高质量的候选接收更多的计算资源,而低质量的候选接收较少的计算资源。这可以通过在算法 1 的第 2-9 行使用多阶段计算策略来实现。我们首先使用训练数据集的一个小子集评估所有候选。对于得分高于某个阈值的候选,我们从训练数据集中抽取一个新的不重叠子集来更新得分的移动平均。然后,我们重复这个过程,直到只剩下少数候选,这些候选在整个训练数据集上评估。这种自适应过滤方案通过为高质量样本保持精确的计算成本,并为低质量候选大大减少计算成本,显著提高了计算效率。我们注意到,类似的评分估计方案在之前的工作中已经被使用(Li 等人,2022年;Maclaurin & Adams,2015年)。
3.3 迭代提议分布
尽管我们试图直接采样高质量的首批指令候选,但可能存在这样的情况,即第3.1小节中描述的方法未能产生一个良好的提案集 U,这可能是因为它缺乏多样性,或者不包含任何得分适当的候选。在这种情况下,我们探索了一个迭代过程来重新采样 U。
迭代蒙特卡洛搜索除了从初始提案中采样,我们还考虑在当前最佳候选周围的搜索空间进行局部探索。这允许我们生成更有可能成功的新指令。我们称这个变体为迭代 APE。在每一阶段,我们评估一组指令并过滤掉得分低的候选。然后,我们要求一个 LLM 生成与得分高的指令相似的新指令。我们在图3中提供了用于重新采样的提示。图6(右侧)显示,尽管这种方法提高了提案集 U 的整体质量,但得分最高的指令在更多阶段后倾向于保持不变。我们得出结论,与第3.1小节描述的生成过程的相对简单性和有效性相比,迭代生成仅提供了边际的改进。因此,除非另有说明,否则我们默认使用不带迭代搜索的 APE。
4 大型语言模型是人类级别的提示工程师
本节将探讨APE如何指导大语言模型实现期望的行为。我们从四个角度进行研究:零样本表现、少样本语境学习表现、零样本思维链推理和真实性。我们的实验表明,APE可以找到提高任务表现的提示,其表现与人类撰写的提示相当,甚至更好。对于如何最好地提示语言模型,使其能够成功地转移到新任务中,APE也经常产生有见地的技巧(参见第4.3节)。
4.1 指令归纳
我们评估了零样本和少样本情境学习在Honovich等人(2022年)提出的24个指令诱导任务上的有效性。这些任务涵盖了语言理解的许多方面,从简单的短语结构到相似性和因果关系的识别。我们将在附录B中详细描述每个任务。对于每个任务,我们从训练数据中抽取五个输入-输出对,并使用算法1选择最佳指令。然后,我们通过在InstructGPT 3上执行指令来评估指令的质量。我们使用不同的随机种子重复实验五次,以报告平均值和标准差。我们实验的确切模板可以在附录(表5)中找到。
零样本学习 我们将我们的方法与两个基线进行了比较:人类提示工程师(Human)和Honovich等人(2022年)提出的模型生成指令算法。这个算法可以被认为是没有搜索和选择过程的APE的贪婪版本;因此,我们称之为"Greedy"。图4显示了InstructGPT使用人类指令和模型生成指令的零样本性能。我们的算法在每一个任务上都超过了"Greedy",并且在24个任务中的24个任务上实现了与人类性能相等或更好的结果。此外,图1中所有24个任务的四分位数平均数(IQM)(Agarwal等人,2021年)表明,带有InstructGPT的APE超过了人类设计的提示,获得了0.810的IQM,而人类的为0.749。我们在附录(表12)中总结了APE为每个任务选择的指令。
少样本情境学习我们在少样本情境学习中评估了APE生成指令的效果,其中我们将指令插入到情境演示之前。这些指令是基于零样本执行准确率选择的,我们在图8中将这种设置表示为"Instruction + In-context"。如图8所示,添加指令在24个任务中的21个任务上实现了与标准情境学习性能相当或更好的测试性能。反直觉的是,为Rhymes、Large Animal和Second Letters添加情境示例损害了模型性能。我们推测这可能是因为选择的指令过度拟合了零样本学习场景,因此在少样本情况下表现不佳。因此,我们使用少样本执行准确率作为选择指标进行了实验。图14显示,除了Rhymes之外,少样本指标实现了与零样本指标相当或略好的结果。为了直观地了解发生的情况,我们在附录C.1中提供了定性分析。
4.2 BIGBENCH
为了了解APE是否可以应用于更具挑战性的任务,我们提出并管理了BIG-Bench指令归纳(BBII),这是一个由21个任务组成的干净且易于处理的子集,具有清晰的人工编写指令,可以应用于数据集中的所有示例。所选任务涵盖了语言理解的许多方面,包括BigBench-Hard子集中的所有9个此类问题(Suzgun et al, 2022)。特别是,它包括情感理解、上下文无关的问题回答、阅读理解、总结、算法和各种推理任务(例如,算术、常识、符号和其他逻辑推理任务)。我们在附录B中提供了任务的详细描述和我们的选择标准。
对于每个任务,我们使用InstructGPT的反向模式生成来生成一组候选指令,并根据它们的执行精度对指令进行排序。然后,我们在InstructGPT上执行选定的指令,以计算测试集上的零射击性能,并将其与默认的人类提示进行比较。如附录表6所示,在21个任务中的17个任务中,APE实现了与默认人工提示相当或更好的性能。
4.3 零样本思维链
链式思维推理已被证明可以显著提高LLMs完成复杂推理任务的能力,例如解决需要多个步骤的数学问题。早期的工作(Nye等人,2021年;Betz等人,2021年;Wei等人,2022年b)在链式思维中使用微调或情境学习来让LLMs展示它们的工作。最近最有影响力的提示工程工作之一是发现(Kojima等人,2022年)只需在LLM的响应开头加上"让我们一步一步思考。"LLMs就能给出链式思维。这种提示策略被称为零样本链式思维(Zero-Shot-CoT),它将InstructGPT在MultiArith(Roy & Roth, 2016)上的零样本性能从17.7提高到78.7,并将GSM8K(Cobbe等人,2021年)上的性能从10.4提高到40.7。如表7所示,Kojima等人(2022年)发现他们的提示在至少九个人类设计的提示中表现最佳。
我们使用APE在Kojima等人(2022年)使用的任务套件中自动搜索最佳答案前缀。我们优化这个提示的方法受到了Zelikman等人(2022年)的启发。首先,我们生成了一个包含使用InstructGPT和"让我们一步一步思考。"生成的问题和推理步骤的数据集。然后,我们移除了任何答案错误的 数据点。最后,我们使用APE找到一个以"让我们"开头的提示,以最大化这些正确推理步骤的可能性。见表5用于提示生成和评估的模板。APE产生了提示"让我们一步一步地解决这个问题,以确保我们得到正确的答案。"这个生成的提示进一步提高了MultiArith上的性能,从78.7提高到82.0,GSM8K上的性能从40.7提高到43.0。我们相信这个通用工作流程代表了APE的一个常见用例,提示工程师使用APE来优化他们现有模板的部分,以提高性能。见图10关于这个提示在其他推理任务上性能的细节。
4.4 TRUTHFULQA
我们在TruthfulQA(Lin等人,2022年)上应用我们的方法,看看APE生成的指令如何引导LLM生成不同风格的答案,并研究真实性和信息性之间的权衡。借鉴原论文中的指标,我们使用APE来学习最大化三个指标:真实性(% True)、信息性(% Info)以及两者的结合(%True + %Info)。Lin等人(2022年)使用人工评估来评估模型性能,但他们发现他们的自动化指标与人类预测的吻合度超过90%。在我们的实验中,我们依赖他们微调的GPT-judge和GPT-info来评估分数。
在TruthfulQA中的提示工程我们想要强调的是,TruthfulQA数据集旨在测试预训练模型在零样本设置下的表现。我们的结果与原始基准测试不兼容。因为我们已经使用一小部分问题和答案对作为训练演示来优化指令,我们的结果不是"真正的少样本学习"(Perez等人,2021年)。我们从817个问题中随机抽取了100个问题用于实际实验,形成训练演示Dtrain。为了采样提案集U,我们要求一个"反向"模型基于六个随机选择的演示对生成指令,类似于我们之前的实验。与指令诱导不同,在TruthfulQA中,我们的目标是找到一对单一的最佳指令提示,使其在涵盖健康、法律、政治和小说的38个问题类别上都能很好地工作。值得注意的是,我们生成的所有指令都非常通用,例如,"你将面临一系列问题。对于每个问题,你必须要么回答问题,要么拒绝回答,在这种情况下,你必须声明你无话可说",并且不包含数据集中的任何示例。
真实性与信息性的权衡 我们发现APE在仅提出200个候选的InstructGPT(175B)上优于人类设计的提示,如图5所示。我们将我们生成的提示与Lin等人(2022年)的"帮助"提示进行了比较。训练和测试性能显示在图5(a)-(b)中。我们发现,在训练集上选择200个候选中的前10个在测试集上泛化得很好。我们报告了三个指标上 top 10 指令的平均性能。这个结果本身并不令人惊讶,因为人类基线并没有仔细选择,正如Askell等人(2021年)所指出的。然而,我们发现APE发现的指令可以实现非常高的真实性,答案如"无话可说",但这些答案提供的信息很少。我们使用我们的顶级候选进一步调查真实性和信息性之间的权衡。我们在图5(c)和图5(d)所示的真假-信息性图表上可视化了三个指标上的前10个提案样本。虽然APE在提供真实和信息性答案方面的准确率超过了40%(而人类的"帮助"提示为30%),但发现的指令倾向于针对这个%true-%info帕累托前沿的两端。
5 定量分析
在本节中,我们将进行定量分析,以更好地理解我们方法的三个主要组成部分:提案分布、评分函数和迭代搜索。此外,我们在附录D中进行了成本分析,以了解寻找最佳提示的最具成本效益的方法。我们观察到,更大、更强大的语言模型在生成最佳提示时更具成本效益,尽管每个令牌的成本更高。
5.1 提案分发LLMS
**当我们增加模型大小时,提案的质量是如何变化的?**为了了解模型大小如何影响初始提案分发的质量,我们通过OpenAI API检查了8个不同的模型5。为了评估提议分布的质量,我们为每个模型生成250条指令,并在50个测试数据点上计算执行精度。我们在图6 (a)中可视化了一个简单任务(即复数化)的生存函数(测试精度大于某个阈值的指令的百分比)和测试精度直方图,并在附录(图28)中包含了一个更具有挑战性的任务(Start with)的类似图。正如这两个图所示(毫不奇怪),较大的模型往往比较小的模型产生更好的建议分布,就像经过微调以遵循人类指令的模型一样。在简单任务上,最佳模型InstructGPT (175B)生成的所有指令都具有合理的测试精度。相比之下,一半的指令跑题,在更有挑战性的任务上表现不佳。
5.2 LLMS的选择
**在选择的条件下,提案质量重要吗?**如果我们从LLMs中采样更多的指令,那么我们找到更好指令的可能性就会增加。为了验证这个假设,我们将样本大小从4增加到128,并评估测试准确性的变化。图7(左)显示了一个单调递增的趋势,但随着人类水平性能的实现,回报逐渐减少,当我们使用64个指令样本时。因此,我们选择50作为我们的默认样本大小。在这种配置下,我们研究了提案分布如何影响我们算法选择的最佳指令的测试准确性。图1(b)显示,尽管小模型可能不太可能生成好的指令,但如果我们采样足够的候选,它们仍然会生成一些好的指令。因此,通过运行我们的选择算法,即使是在小模型中,我们仍然能找到有前途的指令,这解释了为什么我们的方法在所有八个模型上的表现都优于Honovich等人(2022年)的贪婪方法。
**哪个评分函数更好?**我们计算了测试准确性和24个指令诱导任务上的两个指标之间的相关性,以研究我们提出的指标有多好。我们使用InstructGPT(175B)在"正向"模式下为每个任务生成250个指令,并计算10个测试数据点上的指标分数和测试准确性。我们可视化了测试准确性和两个指标之间的斯皮尔曼相关性。图7(中)显示,执行准确性与跨任务的测试性能更为一致。因此,我们选择它作为我们的默认指标,除非另有说明。
5.3 迭代蒙特卡罗搜索
迭代搜索能提高教学质量吗? 我们在图6(右)中可视化了"钝化"任务的生存函数和测试准确性直方图,并在附录中包含了另外五个任务。生存图显示,曲线随着回合的增加而增加,这表明迭代搜索确实会产生更高质量的提议集。然而,我们观察到进一步的选择回合的收益递减,因为质量似乎在三轮后稳定下来。
**我们需要迭代搜索吗?**我们在六个任务上比较了APE和迭代APE。如图7所示,在APE不如人类的任务上,迭代搜索略微提高了性能,但在其他任务上实现了类似的性能。这与我们的假设是一致的,即迭代搜索将在生成良好的初始U具有挑战性的任务中最有用。
6 结论
大型语言模型可以看作是执行由自然语言提示符指定的程序的通用计算机。我们通过将其表述为一个黑盒优化问题来自动化提示工程过程,我们建议使用由法学硕士指导的高效搜索算法来解决这个问题。我们的方法以最少的人力投入在各种任务上实现了人类水平的性能。由于最近的法学硕士展示了令人印象深刻的遵循人类指令的能力,我们期望许多未来的模型,包括那些用于正式程序合成的模型,具有自然语言接口。这项工作为控制和引导生成式人工智能奠定了基础。