Bootstrap

论文学习——A Prompt Pattern Catalog to Enhance Prompt Engineering with ChatGPT

文章目录

引言

  • 最近大论文要调整方向,不能直接使用开源的大语言模型,要将之调整到小模型上的,如果要实现相同的效果,必须得调整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自我审视输出,识别任务错误
  • 4、提示改进类别Prompt Improvement

    • 作用
      • 专注于提升输出和输入的质量
    • 具体设计模式
      • 问题改进Question Refinement
        • 确保LLM提出更好的问题版本
      • 替代方案Alternative Approaches
        • 建议完成任务的其他方法
      • 认知验证器Cognitive Verifier
        • 提示LLM自动分解问题为子问题并结合答案得出最终答案
      • 拒绝破解Refusal Breaker
        • 在LLM拒绝回答时重新措辞用户的问题
  • 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
;