GPT提示工程
通用的Prompt框架5要素

随着我们对Prompt提示工程的学习和应用,会接触到各种各样的Prompt。对于这些Prompt,会发现有一些共同的元素。

没错,我们能想到的,别人在早几个月之前就已经总结好了。

下面将介绍两个Prompt框架。

一、Prompt四个要素

一个Prompt可能包含以下任何元素:

  1. 指令(Instruction) - 你希望模型执行的具体任务或指令。
  2. 上下文(Context) - 上下文、背景或者外部信息,用于引导模型提供更好的响应。
  3. 输入数据(Input Data) - 我们希望获得响应的"输入内容或问题"。
  4. 输出指示(Output Indicator) - 模型输出响应的类型或格式。

并不是每个Prompt都需要同时包含这四个要素,具体取决于待处理的任务。

因此,一个Prompt可能只包含其中一个元素,也可能是其中任意几个元素的组合。

二、CRISPE Prompt提示框架

  1. CR: 能力和角色(Capacity and Role):你希望模型扮演的角色,以及具备的能力。
  2. I: 洞察力(Insight):请求的背景、上下文,以及其他与请求有关的辅助信息。
  3. S: 陈述(Statement):你希望模型做什么?
  4. P: 个性(Personality):模型响应内容的风格,个性或态度。
  5. E: 实验(Experiment):让模型提供多个答案。

三、合并Prompt框架

将以上2个Prompt框架进行对比,来分析一下共同点和差异之处。

框架一框架二比较结果合并Prompt
能力和角色仅框架二有角色
上下文洞察力含义基本相同上下文
指令陈述含义基本相同指令
输入数据仅框架一有输入数据
输出指示个性输出指示比个性范围更广输出指示
实验仅框架二有
个人认为可以归类到输出指示

通过上面的表格,会发现上下文、指令基本是相同的,而个性是对角色或输出指令的描述。角色在很多场景下还是比较常用的,以获得更好的效果。而输入数据,有时会作为指令的一部分,但很多时候是独立的一部分,抽象出来会更加清晰。最后是实验,可以看作是输出内容的一部分描述,因此可以归类为输出指示。

经过以上分析,我认为可以将Prompt框架进一步完善为以下5个要素:

  1. 角色(Role):希望模型扮演的角色,以及具备的能力。
  2. 指令(Instruction):希望模型执行的具体任务或指令。
  3. 上下文(Context):上下文、背景或者外部信息,用于引导模型提供更好的响应。
  4. 输入数据(Input Data):我们希望获得响应的"输入内容或问题"。
  5. 输出指示(Output Indicator):模型输出响应的数据格式,内容的风格、个性或态度,以及其他的输出要求。

我们用这套完善后的框架,来分析一些Prompt。

示例1

Prompt内容:

我希望你能扮演成英文翻译员,拼写校正员和改进者的角色。我会用任意一种语言向你讲话,你要检测这种语言,将其翻译并用纠正过的、改良版的英文版本回答我。我希望你把我简单的A0水平的词汇和句子,替换成更漂亮、更优雅、更高级别的英文词语和句子。保持同样的含义,但更文艺。我希望你只回复纠正过的版本,改良的版本,别的什么都别写,不要写解释。我第一句话是:“istanbulu cok seviyom burada olmak cok guzel”。

5个要素:

角色:
我希望你能扮演成英文翻译员,拼写校正员和改进者的角色

指令:
我会用任意一种语言向你讲话,你要检测这种语言,将其翻译并用纠正过的、改良版的英文版本回答我。我希望你把我简单的A0水平的词汇和句子,替换成更漂亮、更优雅、更高级别的英文词语和句子。保持同样的含义,但更文艺。我希望你只回复纠正过的版本,改良的版本,别的什么都别写,不要写解释。

上下文:

输入数据:
我第一句话是:“istanbulu cok seviyom burada olmak cok guzel”

输出指示:
我希望你只回复纠正过的版本,改良的版本,别的什么都别写,不要写解释。

示例2

Prompt内容:

扮演一个机器学习框架的软件开发专家和专业博客作者的角色。这篇博客的读者是对学习最新机器学习进展感兴趣的技术专业人士。提供对最流行的机器学习框架的全面概述,包括它们的优点和缺点。包括真实的例子和案例研究,以说明这些框架如何在各种行业中成功应用。在回应时,使用Andrej Karpathy、Francois Chollet、Jeremy Howard和Yann LeCun的写作风格的混合。

5个要素:

角色:
扮演一个机器学习框架的软件开发专家和专业博客作者的角色

指令:
提供对最流行的机器学习框架的全面概述,包括它们的优点和缺点。包括真实的例子和案例研究,以说明这些框架如何在各种行业中成功应用。

上下文:
这篇博客的读者是对学习最新机器学习进展感兴趣的技术专业人士。

输入数据:

输出指示:
在回应时,使用Andrej Karpathy、Francois Chollet、Jeremy Howard和Yann LeCun的写作风格的混合。

在这个Prompt,由于我们还没有提供输入数据,因此输入数据部分为"无"。

示例3

Prompt内容:

""" 2022年的某一天,李明开着摩托车去给客户送货,路上遇到了一只小狗,他停下车去看了一下小狗,回去开车的时候货物不见了。李明在2023年进了一批货物,货物里面居然有一只小狗。"""

问题:2022年李明开摩托车遇到了什么动物?

5个要素:

角色:

指令:

上下文:
2022年的某一天,李明开着摩托车去给客户送货,路上遇到了一只小狗,他停下车去看了一下小狗,回去开车的时候货物不见了。李明在2023年进了一批货物,货物里面居然有一只小狗。

输入数据:
2022年李明开摩托车遇到了什么动物?

输出指示:

在这个Prompt中,只有上下文和输入数据,连指令都可以没有。当然,你也可以认为最后的问题也是一种广义上的指令。

示例4

Prompt内容:

总结以下内容:
现在,在发展中国家,如今出生的孩子可以活到100岁的会相对较少。然而,展望未来,提高发达国家预期寿命的力量正在促进发展中国家预期寿命的提高。正如西方出现了儿童死亡率下降、收入增加、营养更充足以及医疗保健改善等现象,世界其他地方也出现了类似的现象。较贫穷国家预期寿命的起点比富裕国家低,但总体上,同样受益于预期寿命的增长。

拿印度来说,1900年,该国人口的预期寿命为24岁,而美国为49岁。到1960年,美国的预期寿命已经增长到70岁,而印度只有41岁,两国之间的寿命差距扩大了。然而,随着印度经济腾飞,这一差距已经缩小。到2014年,印度人口的预期寿命为67岁。联合国人口预测专家估计,印度预期寿命的增长速度应该为每10年增长2岁左右。印度预期寿命的起点比美国的要低,但是它几乎在以同样的速度增长。世界上的许多国家也是如此,尽管百岁人生最早的亲历者是发达国家,但它正在成为一个全球现象。

5个要素:

角色:

指令:
总结以下内容

上下文:

输入数据:
现在,在发展中国家,如今出生的孩子可以活到100岁的会相对较少。...

拿印度来说,1900年,该国人口的预期寿命为24岁,而美国为49岁。...

输出指示:

结论

通过以上4个示例,可以看到优化后的Prompt框架能够用来分析各种Prompt。

并且,对于框架中的5个要素,都不是必须的,可以根据具体的任务场景来进行灵活的使用。

最后,如果想要写出好的Prompt,请参考以下两点。

一.灵活使用这套Prompt框架

  1. 角色(Role):希望模型扮演的角色,以及具备的能力。
  2. 指令(Instruction):希望模型执行的具体任务或指令。
  3. 上下文(Context):上下文、背景或者外部信息,用于引导模型提供更好的响应。
  4. 输入数据(Input Data):我们希望获得响应的"输入内容或问题"。
  5. 输出指示(Output Indicator):模型输出响应的数据格式,内容的风格、个性或态度,以及其他的输出要求。

二.学习ChatGPT提示工程的11篇权威教程

OpenAI官方ChatGPT提示工程 - 最佳实践11篇(大合集) (opens in a new tab)

参考

https://www.promptingguide.ai/introduction/elements (opens in a new tab)

https://github.com/mattnigh/ChatGPT3-Free-Prompt-List#crispe-prompt-framework (opens in a new tab)