随着我们对Prompt提示工程的学习和应用,会接触到各种各样的Prompt。对于这些Prompt,会发现有一些共同的元素。
没错,我们能想到的,别人在早几个月之前就已经总结好了。
下面将介绍两个Prompt框架。
一、Prompt四个要素
一个Prompt可能包含以下任何元素:
- 指令(Instruction) - 你希望模型执行的具体任务或指令。
- 上下文(Context) - 上下文、背景或者外部信息,用于引导模型提供更好的响应。
- 输入数据(Input Data) - 我们希望获得响应的"输入内容或问题"。
- 输出指示(Output Indicator) - 模型输出响应的类型或格式。
并不是每个Prompt都需要同时包含这四个要素,具体取决于待处理的任务。
因此,一个Prompt可能只包含其中一个元素,也可能是其中任意几个元素的组合。
二、CRISPE Prompt提示框架
- CR: 能力和角色(Capacity and Role):你希望模型扮演的角色,以及具备的能力。
- I: 洞察力(Insight):请求的背景、上下文,以及其他与请求有关的辅助信息。
- S: 陈述(Statement):你希望模型做什么?
- P: 个性(Personality):模型响应内容的风格,个性或态度。
- E: 实验(Experiment):让模型提供多个答案。
三、合并Prompt框架
将以上2个Prompt框架进行对比,来分析一下共同点和差异之处。
框架一 | 框架二 | 比较结果 | 合并Prompt |
---|---|---|---|
能力和角色 | 仅框架二有 | 角色 | |
上下文 | 洞察力 | 含义基本相同 | 上下文 |
指令 | 陈述 | 含义基本相同 | 指令 |
输入数据 | 仅框架一有 | 输入数据 | |
输出指示 | 个性 | 输出指示比个性范围更广 | 输出指示 |
实验 | 仅框架二有 个人认为可以归类到输出指示 |
通过上面的表格,会发现上下文、指令基本是相同的,而个性是对角色或输出指令的描述。角色在很多场景下还是比较常用的,以获得更好的效果。而输入数据,有时会作为指令的一部分,但很多时候是独立的一部分,抽象出来会更加清晰。最后是实验,可以看作是输出内容的一部分描述,因此可以归类为输出指示。
经过以上分析,我认为可以将Prompt框架进一步完善为以下5个要素:
- 角色(Role):希望模型扮演的角色,以及具备的能力。
- 指令(Instruction):希望模型执行的具体任务或指令。
- 上下文(Context):上下文、背景或者外部信息,用于引导模型提供更好的响应。
- 输入数据(Input Data):我们希望获得响应的"输入内容或问题"。
- 输出指示(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框架
- 角色(Role):希望模型扮演的角色,以及具备的能力。
- 指令(Instruction):希望模型执行的具体任务或指令。
- 上下文(Context):上下文、背景或者外部信息,用于引导模型提供更好的响应。
- 输入数据(Input Data):我们希望获得响应的"输入内容或问题"。
- 输出指示(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)