今天分享提示词的进阶学习内容,为各位讲一些关于结构化提示词的知识。
一、结构化的定义
结构化的定义是信息+有序的规则。核心的落脚点在于有序,比如我们常见的文章目录结构,词典以及有排序属性的数据。这些信息因为有了顺序,可以很方便的被我们检索和利用。
常见的结构化数据,比如我们常写的文章,计算机编程中常用的 Json,Yaml,Xml,Markdown 等都是结构化的。
二、结构化提示词
常见的结构化数据的格式中都包含符号和属性词,比如 #、[]、-、* 等符号,在不同的语言下这些符号的含义可能有所不同。比如,在 markdown 的语法下, # 表示标题,- 和 * 表示无序的列表,[] 表示超链接。
属性词就是表述当前内容或者总结的关键词,在结构化提示词里常用的属性词有 Role、Profile、Background、Goals、Constrains、Skills、Workflows、Initialization 。
这些关键词的作用基本上综合了 ICIO、BROKE 等常见提示词书写框架中的精华部分,因此结构化提示词的效果也相对会更高一些。
当然,这些部分并不是都必须的,核心是 Goals,也就是目标,只要目标清晰,询问 ChatGPT 就能得到一个比较不错的结果。而其他部分主要是辅助构建整个任务的背景,并给 ChatGPT 提供已有的外部知识,帮助 ChatGPT 更好的理解和学习问题。
而且,这些属性词也并非一定要是英文,也可以使用对应的中文,但由于 ChatGPT 的训练数据中包含了大量的英文数据,因此使用英文的属性词在某种程度上来说,效果会更好一些。
下面是一个结构化提示词各个部分的解释和说明:
三、结构化为什么有效?
虽然,目前没有明确的答案,这种结构化的提示词书写为什么能提高大模型输出的质量。
但我们可以合理的推测,ChatGPT
使用的训练数据都是来自高质量的网络数据,而这些数据天然就是结构化的数据,因此当我们使用结构化的提示词去编写我们的指令,能激活 ChatGPT 内部关于这方面的知识,可以更清晰的理解我们的输入是什么。