文章目录
- 引言
- 正文
- Abstract
- Introduction
- II Comparing Software Patterns with Prompt Patterns 将prompt模式和软件模式比较
- III A Catalog of prompt patterns for conversational LLMs面向对话型LLM的提示涉及模式目录
- A. Summary of the Prompt Pattern Catalog提示模式类别的总结
- B The Meta language Creation Pattern 元语言创建模式
- C The Output Automater Pattern自动化输出模式(相关性并不高,主要是关于自动化脚本的生成,并不是自动问答分析之类的情况)
- D The Flipped Interaction Pattern反向互动
- E The Persona Pattern角色扮演(有参考意义)
- F The Question Refinement Pattern问题改进
- G The Alternative Approaches Patern改进方案的方法
- H The Cognitive Verifier Pattern认知验证模式
- I The Fact Check List Pattern事实校准模式
- J The Template Pattern模板模式(有参考意义,可以定义模型的输出,用于提取出最终的检测结果)
- K The Infinite Generation Pattern无线生成模式
- L The Visualization Generator Pattern可视化生成器模式
- M The Game Play Pattern游戏模式
- N The Reflection Pattern反思模式
- O The Refusal Breaker Pattern拒绝破解模式
- P The Context Manager Pattern上下文控制模式
- Q The Recipe Pattern步骤模式(有参考意义)
- IV Related Work相关工作
- V Concluding Remarks总结
- 总结
引言
- 最近大论文要调整方向,不能直接使用开源的大语言模型,要将之调整到小模型上的,如果要实现相同的效果,必须得调整prompt,所以还得看类似的文章!
- 文章链接
- 这次文章的翻译过程要是尽量简单的,通俗易懂,不在全文进行翻译了,如果对这个文章感兴趣的部分没翻译到,可以留言,我补充翻译!
- 通过这篇文章,找到有关Prompt生成的具体指导方案!
正文
Abstract
-
这个论文主要的介绍了Prompt工程技术,并将其总结成模板,解决大语言模型中对话时常见的问题。
-
论文的贡献如下
- 提供了一个框架,用于记录不同领域内的 Prompt 模式,以便解决广泛的问题。这些模式类似于软件设计中的可重用解决方案,帮助结构化 Prompt,适应不同的应用场景。
- 展示了一个成功应用于改善 LLM 输出的 Prompt 模式目录,这些模式能够帮助提升对话生成的质量。
- 解释了如何将多个 Prompt 模式结合起来构建更复杂的提示,并展示了这些模式在组合后如何更好地发挥作用。
-
该论文通过了模式化的方式,记录和分享了Prompt工程的知识,提出了用于自动化软件开发任务的多种Prompt设计和应用方法,并强调了Prompt模式的可重用行和适应性。
-
总结
- 这篇文章通过模式化的方式记录和分享了Prompt工程的知识,提出了用于自动软件开发任务的多种Prompt的设计和应用方法,强调了Prompt模式的可重用性和适应用。
Introduction
- LLMs(如 ChatGPT)被应用于多个领域,通过帮助开发者高效编码以及为学生提供学习新技能的机会,进一步提升了它们在技术和教育中的作用。比如说通过将 LLMs 集成到 IDE(如 IntelliJ 和 VS Code)中,开发者可以在熟悉的开发环境中直接使用这些工具,帮助更快更可靠地进行编码和软件开发。
1、Prompt是什么?
-
Prompt是一组指令,提供给LLM(大语言模型),通过定制化或者增强和精炼其能力,使其解决特定的问题。
- 通过一组初始规则,Prompt能够影响LLM的后续交互以及生成的输出。
-
Prompt 设置了对话的上下文,并告知LLM哪些信息是最重要的,以及期望的输出形式和内容。
-
应用样例
- 例如,Prompt 可以指定 LLM 仅生成遵循特定编码风格或编程范式的代码。同样,它也可以指定 LLM 在生成的文档中标记某些关键词或短语,并提供与这些关键词相关的附加信息。通过引入这些指南,Prompt 促使 LLM 生成更具结构性和细致的输出,以帮助解决各种软件工程任务。
2、Prompt Engineering 是什么?
- 是一种通过Prompt来对大语言模型进行编程的方法学科,是一个系统性的工程。下面举一个Prompt 的例子
- “从现在开始,我希望你向我提问,以便将一个 Python 应用部署到 AWS。当你有足够的信息来部署应用时,创建一个自动化部署的 Python 脚本。”
- 这个prompt 会让ChatGPT询问用户有关软件应用的问题,知道他收集足够的信息来生成自动化部署的Python脚本。这个例子展示了Prompt编程的潜力,不仅限于传统的“生成一个执行某功能的方法”或者“回答这个测试问题”这一 类指向性很明确的传统的Prompt
- 此外,Prompt工程还可以执行更加复杂的工作,包括如下
- 指定输出的类型
- 过滤提供给模型的信息
- 提出其他提示以收集更多信息或生成相关的工作
3、Prompt范式对于有效的prompt工程而言十分重要
- Prompt 模式是一种系统化的方法,用于设计和编写提示(Prompts),以便大语言模型能够有效理解和响应。
- 简单来说,Prompt 模式是一种指导方法,帮助用户编写更精准的提示,从而提升 LLM 的表现。
4、文章结构
- 第 II 部分介绍了 Prompt 模式,并将其与广为人知的软件模式进行比较;
- 第 III 部分描述了 16 种用于解决对话型 LLM 交互和输出生成领域常见问题的 Prompt 模式,这些模式也用于自动化软件开发任务;
- 第 IV 部分探讨了相关研究工作;
- 第 V 部分总结了结论和经验教训。
II Comparing Software Patterns with Prompt Patterns 将prompt模式和软件模式比较
- Prompt 的质量直接影响 LLM 的输出质量。
- 为提高用户与 LLM 交互的效果,本文提出了一个框架(Prompt Pattern),通过将 Prompt 结构化为模式进行记录。
- 这样的模式不仅限于特定领域,可以跨不同领域应用,从而提高 Prompt 在不同任务中的复用性和转移性。
- 通过这种方法,Prompt 被视为一种编程语言,可以像软件设计模式一样加以记录和应用。
A overview of Software Patterns软件模式的概览
- 软件模式是一种可复用的解决方案,通过将软件模式文档化可以概括出特定问题中的关键因素和需求,从而提供一个成功的解决方案。
- 一个软件模式不仅仅包含如何实现该模式的指导,同时还需要包含整个过程中需要考虑的权衡和注意事项。除此之外,还需要提供应用实例,证明该模式的应用性。一般来说,为了便于使用和理解,软件模式一般都是用特定风格的文本进行记录。 这里说的是设计模式。具体样例如下
- 名称和类别:创建型、结构性和行为型
- 意图:简要传达模式的目的
- 动机:描述要解决的问题以及其重要性
- 结构和参与者:描述模式的组成部分和协作方式
- 示例代码:展示具体代码的实现
- 后果:总结应用的当前模式的利弊
B. Overview of Prompt Patterns提示模式的概览
- 提示模式类似于软件设计模式。不过,他们更加专注于从大型语言模型(如chatGPT)生成输出的情景。正如软件设计模式中提供解决常见软件开发问题的规范方法,提示设计模式提供了定制LLM输出和交互的规范话方法 Just
- 通过利用和记录自动化软件开发任务中提示模式,个人和团队可以对生成的内容施加约束,确保相关的信息包含其中,并调整与LLM交互的格式,更好地解决面临的问题。
- 提示模式的格式类似于经典的软件模式,但做了一些调整以匹配LLM的输出生成情境。本文中使用的提示模式格式的各对应部分概述如下:
-
名称和分类:提示模式名称唯一标识模式,并理想情况下指向待解决的问题。我们开发了初步的模式类别,详见表1,包括输出定制、错误识别、提示改进、交互和上下文控制。具体类别如下
-
意图与上下文:描述提示模式解决的问题及实现的目标。问题应尽量独立于领域,但特定领域的模式可以记录适用的上下文讨论。
-
动机:说明问题的缘由和解决重要性,强调与用户在会话LLM中交互的场景及改进之处。
-
结构和关键理念:介绍提示模式提供给LLM的核心上下文信息,类似于软件模式的“参与者”。尽管措辞可变,但应具备核心信息。
-
示例实现:展示提示模式的实际措辞。
-
后果:总结应用模式的优缺点,提供适应不同情境的指导。
-
C. Evaluating Means for Defining a Prompt Pattern‘s Structure and Ideas 评估定义提示模式结构和理念的方法
- 在程序设计模式种,结构和参与者,以及两者之间的交互是通过UML图来定义的。通过UML图定义了参与者的身份以及他们如何交互并解决问题的。在提示设计模式中,类似的事情也是需要的,但是UML图用在提示设计模式中并不恰当,因为和提示设计模式本身是相反的。
- 一些可能的替代方法包括使用图表或定义提示语言的语法。尽管语法形式化,但它们也带来了以下挑战。
- 提示旨在清晰传达思想,适应多样化用户。
- 由于提示表达的多样性和语法的局限性,传统语法难以覆盖所有细微之处,高层次的思想传达更合适。
D. A Way Forward:Fundamental Contextual Statements 前进之路:基础情景描述
- 简单陈述传达关键理念
- 基础情境陈述通过简单陈述传达提示的关键理念,提供了一种比语法更灵活的方法来描述提示模式。
- 提示模式便于调整在不同的领域
- 基础情境陈述对用户直观易懂,使得提示模式能在不同符号或措辞下适用,并易于在特定领域进行调整。
- 通过框架适应不同的LLM
- 目标是创建一个提示设计框架,使提示可以在不同LLM中重用;所有提示均在ChatGPT上测试,以验证框架的适用性。
III A Catalog of prompt patterns for conversational LLMs面向对话型LLM的提示涉及模式目录
- 本节展示Prompt Pattern的分类,每一个类别包含提示模式的具体应用,附有实际示例,展示在自动化软件任务中应用提示的效果。
A. Summary of the Prompt Pattern Catalog提示模式类别的总结
-
提示模式的分类是记录模式时的重要考量。表1概述了我们在使用ChatGPT时识别出的提示模式目录的初步分类。
- Input Semantics:包括“Meta Language Creation”,用于创建元语言。
- Output Customization:包含模式如“Output Automater”和“Persona”,用于定制输出。
- Error Identification:如“Fact Check List”和“Reflection”,用于识别错误。
- Prompt Improvement:包括“Question Refinement”等,用于改善提示质量。
- Interaction:如“Flipped Interaction”和“Game Play”,用于增强交互性。
- Context Control:包含“Context Manager”,用于控制上下文。
-
提示模式分类框架包括五个类别:输入语义、输出定制、错误识别、提示改进和交互。
-
1、输入语义类别
- 处理LLM如何理解输入以及如何将其转化为可用于生成输出的内容。
- 作用
- 当默认输入语言不适合用户要传达的想法时,使用该模式。
- 元语言创建模式
- 专注于为LLM创建一种自定义语言
-
2、输出定制类别
- 作用
- 限制或者定制 LLM生成的输出类型、格式、结构或其他属性。
- 具体设计模式
- 输出自动化
- 允许用户创建脚本,以自动化LLM输出建议的任务。
- 角色扮演
- 让LLM在生成输出时,扮演一个特定的角色。
- 可视化生成器
- 允许通过文本输出生成视觉效果,一般用于基于AI的图像生成器
- 步骤指南
- 提供实现特定结果的步骤序列,包括已知信息和约束条件
- 模板模式
- 允许用户指定输出模板,由LLM填充内容
- 输出自动化
- 作用
-
3、错误识别类别
- 作用
- 用于识别和解决LLM生成输出中的错误
- 具体设计模式
- 事实检查列表Fact Check List
- 要求LLM生成依赖的事实列表,并进行事实检查
- 反思模式Reflection
- 要求LLM自我审视输出,识别任务错误
- 事实检查列表Fact Check List
- 作用
-
4、提示改进类别Prompt Improvement
- 作用
- 专注于提升输出和输入的质量
- 具体设计模式
- 问题改进Question Refinement
- 确保LLM提出更好的问题版本
- 替代方案Alternative Approaches
- 建议完成任务的其他方法
- 认知验证器Cognitive Verifier
- 提示LLM自动分解问题为子问题并结合答案得出最终答案
- 拒绝破解Refusal Breaker
- 在LLM拒绝回答时重新措辞用户的问题
- 问题改进Question Refinement
- 作用
-
5、交互类别Interaction
- 作用
- 专注于用户与LLM的互动
- 具体设计类别
- 反向互动Flipped Interaction
- 游戏化Game Play
- 无限生成Infinite Generation
- 作用
-
6、上下文控制类别Context Control
- 作用
- 专注于控制LLM运行的上下文
- 具体设计模式
- 上下文管理器Context Manager
- 作用
-
下面就是为每一个样本进行单个介绍
B The Meta language Creation Pattern 元语言创建模式
C The Output Automater Pattern自动化输出模式(相关性并不高,主要是关于自动化脚本的生成,并不是自动问答分析之类的情况)
-
Intent and Context意图和上下文
- 该模式的意图是让LLM生成脚本或其他自动化工件,可以自动执行其输出中推荐的任何步骤。目标是减少实现LLM输出建议所需的手动工作量。
-
Motivation设计动机
- LLM的输出通常是一系列用户需要遵循的步骤。例如,当请求LLM生成Python配置脚本时,它可能会建议修改多个文件,并对每个文件进行更改。然而,让用户不断手动执行LLM输出的步骤既繁琐又容易出错。
-
Structure and Key Ideas结构和关键理念
-
这个结构的第一部分是指出了应该生成自动化脚本的具体情况。一个简单的方法是说明如果输出至少包含两个步骤,并且应该生成一个自动化工件。这个情况的范围是由用户自行决定,避免自动化脚本不节省工作量的情况下生成脚本,可以限定为仅仅在步骤数量超过了一定限度时才生成。
-
第二部分明确告诉LLM生成的输出的具体类型(如Python脚本,帮助LLM将通用步骤转化为实际代码,从而自动执行步骤)。
-
Example Implementaion实施样例
-
应用于ChatGPT生成代码片段的该提示模式示例如下: “从现在起,每当生成超过一个文件的代码时,生成一个Python脚本,自动创建指定文件或更改现有文件以插入生成的代码。”
-
该模式在软件工程中非常有效,因为软件工程师经常使用LLM生成代码并将其复制/粘贴到多个文件中。一些工具(如Copilot)可以直接插入代码片段,但ChatGPT等工具不具备此功能。此自动化方法还适用于在终端运行命令、自动化云操作或重组文件系统中的文件。
-
此模式是任何可计算机控制系统的有力补充。LLM提供一组计算机系统中应执行的步骤,然后输出可转化为脚本,让计算机自动执行。这是一条直接途径,使ChatGPT等LLM能够高质量地控制并整合新计算系统,前提是该系统有已知的脚本接口。
-
-
Consequences结论
- 使用该模式时一个重要的考量是,自动化工件必须被明确地定义。如果你没有准确说出哪些步骤需要自动化,LLM通常会表明“无法自动化”,因为这超出了他的能力范围。LLMs一般来说可以接受生成代码的请求,所以这个模式的目标是指示LLM生成文本或者代码,能够执行以实现自动化。准确表达含义,有助于帮助LLM准确理解提示的含义。
- 输出自动化模式的一个注意事项是,LLM需要足够的对话上下文,才能在目标环境(如Mac或Windows的文件系统)中生成功能性自动化工件。当自动化所需的全部上下文包含在对话中时,此模式效果最佳。
- 输出自动化模式可能因输出长度限制而遗漏自动化工件,此时可以提醒LLM重新生成。
- 由于LLM输出可能存在错误,该模式更适合有技术基础的用户,用户在执行自动化脚本时需对结果负责。
D The Flipped Interaction Pattern反向互动
E The Persona Pattern角色扮演(有参考意义)
-
Intent and Context意图和上下文
- 在许多情况下,用户希望LLM的输出总是从某种观点或角度出发。例如,进行代码审查时,假设LLM是一个安全专家可能会更有帮助。该模式的意图是给LLM一个“角色”,帮助它选择生成的输出类型以及关注的细节。
-
Motivation动机
- 角色模式允许用户通过赋予LLM特定的角色来获取帮助,即使他们不清楚具体的输出细节。这使LLM更容易理解用户的需求并生成合适的输出。
-
Structure and Key Ideas结构和核心点
-
第一句话
- 传达了LLM需要扮演特定角色,并提供符合该角色的输出。这个角色可以通过多种方式表达,例如职位描述、头衔、虚构角色或历史人物等。角色应该激发与知名职位或人类型相关的特定属性。
-
第二句话
- 提供角色X会生成的输出——提供了定制的机会。例如,老师可能会提供多种类型的输出,从作业到阅读清单和讲座。如果知道更具体的输出范围,用户可以在此声明中指定。
-
Example Implementation
- 以下是代码审查的示例实现: “从现在起,扮演安全审查员的角色。密切关注我们审查的任何代码的安全细节,提供安全审查员会提供的输出。”
- 在这个例子中,LLM被指示提供“安全审查员”会提供的输出,提示还设定了即将评估代码的情境。最后,用户进一步限制输出内容仅关注代码。
-
Consequences
- 让LLM充当非人类角色(如终端或数据库)时,可能会产生虚构的内容或请求更多上下文,使互动更具趣味性和灵活性。
F The Question Refinement Pattern问题改进
G The Alternative Approaches Patern改进方案的方法
H The Cognitive Verifier Pattern认知验证模式
I The Fact Check List Pattern事实校准模式
J The Template Pattern模板模式(有参考意义,可以定义模型的输出,用于提取出最终的检测结果)
-
Intent and Context意图和上下文
- 此模式帮助LLM按用户指定的格式生成输出,适用于需要特定结构的应用场景,如URL生成或表单填充
-
Motivation启发
- 有时输出必须是特定应用或使用场景的精确格式,而LLM并不了解该模板结构。因此,必须指示LLM格式是什么以及各部分输出的位置。
-
Structure and Key Ideas结构和核心理念
-
分析
- 第一句话
- 引导LLM遵循特定的输出模板。该模板将用于将LLM的响应强制到符合用户格式需求的结构中。当LLM不知道目标格式时需要此模式。如果LLM已了解格式(如特定文件类型),用户可以直接指定已知格式。但在某些情况下(如生成JSON),数据表示方式多样化,模板用于确保在满足用户附加限制的前提下保持一致性。
- 第二句话
- 让LLM意识到模板将包含一组占位符。用户会通过占位符解释如何将输出插入模板中。占位符可以使用类似“NAME”的格式,让LLM理解要插入信息的位置(例如,将人的名字插入“NAME”占位符)。此外,使用占位符可以指示哪些输出内容不需要,如果没有占位符,对应内容可以省略。理想情况下,占位符应采用LLM训练中常见的格式,如大写、方括号等。
- 第三句话
- 试图约束LLM,使其不要随意改写或修改模板,以便插入所有输出组件。需要注意的是,这句话可能无法阻止生成模板前后的额外文本。实践中,LLM通常会遵循模板,但可能需要实验提示措辞以避免生成多余文本。
- 第一句话
-
Example Implementation样例实行
- 用于生成URL的模板示例如下,其中输出将放置在模板的特定位置: “我将提供一个输出模板,所有大写的内容都是占位符。每次生成文本时,尽量将其放入我列出的占位符之一。请保持我提供的格式:https://myapi.com/NAME/profile/JOB”
- 提供提示后的交互示例: 用户:“生成一个人的姓名和职位。” ChatGPT:“https://myapi.com/Emily Parker/profile/Software Engineer”
-
Consequences总结
- 模板模式会过滤LLM的输出,可能导致有用信息被去除。
- 它也可能限制与其他模式的结合,特别是在需要不同格式输出的情况下。用户需在格式一致性和信息完整性之间进行权衡。
K The Infinite Generation Pattern无线生成模式
L The Visualization Generator Pattern可视化生成器模式
M The Game Play Pattern游戏模式
N The Reflection Pattern反思模式
O The Refusal Breaker Pattern拒绝破解模式
P The Context Manager Pattern上下文控制模式
Q The Recipe Pattern步骤模式(有参考意义)
-
该模式用来帮助生成一系列的操作步骤,最终实现一个目标。
-
Intent and Context 意图和上下文:
- 该模式要求用户提供部分已知的信息(材料或者条件),这些信息将作为步骤中的成分。
- 通过该模式可以生成一个结构化的步骤清单。
-
Motivation动机
- 用户大概知道目标和需要的信息,但是不一定清楚具体的步骤。步骤指南帮助LLM分析并和生成合理的步骤顺序,以实现用户的最终目标。
-
样例
- 如,用户可能希望明确指定如何实现或自动化某段代码,比如“创建一个Ansible剧本,用于登录一组服务器,复制每台服务器上的文本文件,在每台服务器上启动监控进程,然后关闭每台服务器的ssh连接。” 换句话说,这种模式类似于“根据冰箱里的食材提供晚餐食谱”的泛化。用户还可能希望提供多个不同的可能方案,比如“提供3种使用Docker容器和Ansible在AWS上逐步部署Web应用的方法”。
-
Structure and Key Ideas结构和关键思想:基本上下文陈述
- 第一个陈述“我想实现X”将LLM的注意力集中在整个配方的目标上,步骤将按顺序组织以实现指定的目标。
- 第二个陈述提供用户希望包含在配方中的部分步骤列表,作为生成路径的中间节点或对结构的约束。
- 模式中的下一个陈述“为我提供完整的步骤序列”表明目标是提供完整的步骤顺序。
- “填补任何缺失的步骤”确保LLM会自行补充缺失步骤,而不是仅仅说明所需的额外信息。
- 最后,“识别任何不必要的步骤”有助于标记原始请求中的不准确,以确保最终的配方有效率。
-
Example Implementation样例实施
-
在将软件应用部署到云端的背景下,下面展示了一个使用该模式的示例:
- “我正在尝试将应用程序部署到云端。我知道需要在虚拟机上为我的应用程序安装必要的依赖项。我知道需要注册一个AWS账户。请提供完整的步骤顺序。请填补任何缺失的步骤。请识别任何不必要的步骤。”
-
根据使用场景和限制条件,“在虚拟机上安装必要的依赖项”可能是一个不必要的步骤。例如,如果应用程序已经打包在Docker容器中,则可以直接将容器部署到AWS Fargate服务,而无需管理底层的虚拟机。包含“识别不必要步骤”的措辞会促使LLM标记此问题,并在最终的步骤列表中省略这些步骤。
-
总结
- 步骤指南模式的一个后果是,用户可能无法明确描述其想要实现、构建或设计的内容。此外,此模式可能会引入用户初始步骤中的不必要偏见,使得LLM尝试找到包含这些步骤的解决方案,而不是将其标记为不需要的。例如,即使有无需安装虚拟机依赖项的解决方案,LLM仍可能试图寻找需要安装依赖项的解决方案。
相关性并不高,但是可以作为理论支撑
IV Related Work相关工作
-
软件模式在多个领域广泛应用,具有独立于实现细节的特性。
-
对于LLM而言,比如说ChatGPT,好的提示设计十分重要,这是很容易理解的。在以下几个论文中,已经有了很多证明,证明了提示词对于AI生成模型而言是十分有效的。
- E. A. van Dis, J. Bollen, W. Zuidema, R. van Rooij, and C. L. Bockting, “Chatgpt: five priorities for research,”Nature, vol. 614, no. 7947, pp. 224–226, 2023
- L. Reynolds and K. McDonell, “Prompt programming for large language models: Beyond the few-shot paradigm,” CoRR, vol. abs/2102.07350, 2021. [Online]. Available: https://arxiv.org/abs/2102.07350
- J. Wei, X. Wang, D. Schuurmans, M. Bosma, E. H. Chi, Q. Le, and D. Zhou, “Chain of thought prompting elicits reasoning in large language models,” CoRR, vol. abs/2201.11903, 2022. [Online]. Available: https://arxiv.org/abs/2201.11903
- J. Wei, Y. Tay, R. Bommasani, C. Raffel, B. Zoph, S. Borgeaud, D. Yogatama, M. Bosma, D. Zhou, D. Metzler, E. H. Chi, T. Hashimoto, O. Vinyals, P. Liang, J. Dean, and W. Fedus, “Emergent abilities of large language models,” 2022. [Online]. Available: https://arxiv.org/abs/2206.07682
- Y. Zhou, A. I. Muresanu, Z. Han, K. Paster, S. Pitis, H. Chan, andJ. Ba, “Large language models are human-level prompt engineers,” 2022. [Online]. Available: https://arxiv.org/abs/2211.01910
- T. Shin, Y. Razeghi, R. L. L. IV, E. Wallace, and S. Singh,“Autoprompt: Eliciting knowledge from language models with automatically generated prompts,” CoRR, vol. abs/2010.15980, 2020. [Online]. Available: https://arxiv.org/abs/2010.15980
- A. Radford, J. Wu, R. Child, D. Luan, D. Amodei, and I. Sutskever, “Language models are unsupervised multitask learners,” 2019.
- D. Zhou, N. Sch¨ arli, L. Hou, J. Wei, N. Scales, X. Wang,D. Schuurmans, C. Cui, O. Bousquet, Q. Le, and E. Chi, “Least-to most prompting enables complex reasoning in large language models,”2022. [Online]. Available: https://arxiv.org/abs/2205.10625
- [27] J. Jung, L. Qin, S. Welleck, F. Brahman, C. Bhagavatula, R. L.Bras, and Y. Choi, “Maieutic prompting: Logically consistent reasoning with recursive explanations,” 2022. [Online]. Available https://arxiv.org/abs/2205.11822
- [28] S. Arora, A. Narayan, M. F. Chen, L. Orr, N. Guha,K. Bhatia, I. Chami, and C. Re, “Ask me anything: A simple strategy for prompting language models,” in International Conference on Learning Representations, 2023. [Online]. Available: https://openreview.net/forum?id=bhUPJnS2g0X
-
LLM(如ChatGPT)提示设计的重要性已被充分理解。先前的研究考察了提示词对AI生成模型的影响。例如,Liu等人研究了不同提示关键词对图像生成的影响。其他研究探索了使用LLM生成可视化的可能性。Han等人研究了分类任务的提示设计策略,还有一些研究专门考察了软件和修复错误的提示。
- 这里对我而言比较重要的就是关于分类问题的尝试
- X. Han, W. Zhao, N. Ding, Z. Liu, and M. Sun, “Ptr: Prompt tuning with rules for text classification,” AI Open, vol. 3, pp. 182–192, 2022.
-
我们的工作与先前研究互补,为记录、讨论和推理提示提供了结构,帮助用户构建解决常见问题的提示模型。
-
LLM生成的答案质量,尤其是ChatGPT,已在多个领域中得到评估,包括数学、医学等领域!
V Concluding Remarks总结
-
本文提出了一个记录和应用提示模式目录的框架,适用于大语言模型(LLM),如ChatGPT。这些提示设计模式类似于软件设计模式,旨在为用户在与LLM互动执行各种任务时遇到的问题提供可重复使用的解决方案。通过该框架捕获的提示设计模式目录:
- (1) 提供了一种结构化的讨论提示解决方案的方式
- (2) 识别了提示模式,而不是仅关注特定提示示例
- (3) 对模式进行分类,帮助用户与LLM进行更高效的互动。
-
从我们的工作中获得以下经验教训:
- 提示模式显著增强了会话型LLM的能力。
- 将提示模式记录为模式目录很有用,但不足以满足需求。我们的经验表明,在完善和扩展本文提出的提示模式以及探索使用LLM的新方式方面,还有大量工作可做。将捕获的提示模式编织成更表达式化的模式语言将更有效地指导LLM用户。
- LLM能力将随着时间的推移而演变,可能需要对模式进行改进。随着LLM能力的变化,一些模式可能不再需要,或被不同的交互或会话/会话管理方法取代,或者需要增强才能正确工作。需要继续记录和分类提供可重用解决方案的模式。
- 提示模式具有多领域的通用性。尽管大多数模式是在软件开发的背景下讨论的,但这些模式在其他任意领域都适用,从娱乐性故事生成到教育游戏再到主题探索。
-
我们希望本文能激励更多在该领域的研究和开发,帮助改进提示模式设计,为会话型LLM创造新的和意想不到的功能。
总结
- 这篇文章相当于Prompt工程的一个系统性的介绍文章,告诉你应该如何设计Prompt,以及如何评价对应的Prompt 。
- 通过这文章,大概知道关于Prompt的相关设计论文应该怎么写,有了一个大概的思路,同时也知道如何设计一个prompt,保证模型输出的是对应模板,然后提取其中的信息。后续其他的模式作用并不大, 暂时不准备继续往下看了。
- 后续会继续翻译,使用LLM进行文本分类的文章。
- PTR: Prompt Tuning with Rules for Text Classification