A Prompt Pattern Catalog to Enhance Prompt Engineering with ChatGPT

论文原文 ↗ 论文发布 解读发布 解读:AI前沿分享

软件模式与提示模式的比较

本文提出,大型语言模型(LLM)输出的质量直接取决于用户提供提示(Prompt)的质量。提示是一种对LLM进行编程的形式,通过设定上下文、规则和期望的输出形式,可以定制化LLM的行为和输出。因此,本文引入了提示模式(Prompt Patterns)的概念,旨在系统化地记录与LLM交互时,为解决常见问题而设计的成功方法。

提示模式在知识传递上类似于软件模式(Software Patterns)。软件模式为特定上下文中反复出现的问题提供可复用的解决方案,而提示模式则专注于在与LLM交互和生成输出的上下文中解决常见问题。通过将这些知识以模式形式编纂,可以增强其在不同领域和上下文中的复用性和可移植性。

本文提出的提示模式遵循一种类似于经典软件模式的结构,但为适应LLM的上下文进行了调整,具体包含以下几个部分:

本文所有示例均在 ChatGPT+ 服务上进行了测试。

面向对话式LLM的提示模式目录

本章节介绍了本文整理的提示模式目录,这些模式已被成功应用于解决与对话式LLM交互及为软件开发任务生成输出时的常见问题。

提示模式目录总结

本文对已识别的提示模式进行了初步分类,该分类体系是理解和组织这些模式的关键。

表 I
提示模式分类
模式类别 提示模式
输入语义 (Input Semantics) 元语言创建 (Meta Language Creation)
输出定制 (Output Customization) 输出自动化 (Output Automater)
  人设 (Persona)
  可视化生成器 (Visualization Generator)
  配方 (Recipe)
  模板 (Template)
错误识别 (Error Identification) 事实核查清单 (Fact Check List)
  反思 (Reflection)
提示改进 (Prompt Improvement) 问题优化 (Question Refinement)
  替代方法 (Alternative Approaches)
  认知验证器 (Cognitive Verifier)
  拒绝破解器 (Refusal Breaker)
交互 (Interaction) 翻转交互 (Flipped Interaction)
  游戏 (Game Play)
  无限生成 (Infinite Generation)
上下文控制 (Context Control) 上下文管理器 (Context Manager)

分类体系解释


元语言创建模式 (The Meta Language Creation Pattern)

基本上下文陈述
当我说 X 时,我的意思是 Y (或者我希望你做 Y)。

该模式的核心是向LLM解释一个或多个符号、单词或语句的含义,使其在接下来的对话中采用用户提供的语义。


输出自动化模式 (The Output Automater Pattern)

基本上下文陈述
每当你生成一个包含至少一个步骤且满足某些属性的输出时(或者,总是这样做)
请生成一个类型为 X 的可执行工件来自动化这些步骤。

模式的第一部分定义了触发自动化的条件(例如,当输出包含超过一定数量的步骤时),第二部分则明确了自动化工件的类型(例如,“生成一个Python脚本”)。


翻转交互模式 (The Flipped Interaction Pattern)

基本上下文陈述
我希望你向我提问,以实现目标 X。
你应该持续提问,直到满足某个条件或实现某个目标(或者,永远提问)。
(可选)每次问一个问题,或两个问题,等等。

提示应明确交互的最终目标、终止条件,并可选地规定提问的节奏(如每次提问的数量)。


人设模式 (The Persona Pattern)

基本上下文陈述
扮演人设 X。
提供人设 X 会创建的那种输出。

人设可以是一个职位、头衔、虚构人物或历史人物。该角色应能唤起一系列众所周知的属性。


问题优化模式 (The Question Refinement Pattern)

基本上下文陈述
在范围 X 内,建议一个更好的问题版本来替代我的问题。
(可选)询问我是否愿意使用这个更好的版本。

该模式要求LLM在特定范围内(例如,仅限于关于软件安全的问题)对用户的问题进行优化,并可选地征求用户同意以使用优化后的问题。


替代方法模式 (The Alternative Approaches Pattern)