在上一篇文章中我们介绍到提供清晰明确的指令是大模型生成内容质量高低的关键。现在已经有很多的提示词高手总结出来了一系列使我们的提示词 清晰且明确 的技巧。
其中最基本的就是【指定任务】,也就是我们的诉求,我们就是让大模型帮我们干这个事的。
其它的可以把它们归结为【上下文信息】,这个是让我们的任务 清晰且明确 的关键。
接下来我们通过一个简单的场景来实践一下:制定英语学习计划
一、非结构化编写
执行效果图如下:
请你帮我制定一个英语学习计划,我年龄28岁,性别男,职业是一名程序员
执行效果图如下:
这个时候我们觉得背景信息太少了,不足以让大模型能针对我的具体情况给我制定英语学习计划,于是我们再多加一些背景信息,提示词如下:
请你帮我制定一个英语学习计划,我年龄28岁,性别男,职业是一名程序员,我掌握的英语单词词汇量为3000,我的目标是在1个月内掌握词汇量达到5000,我在工作日投入的学习时间为每天1个小时,在周末投入的学习时间为每天4小时
执行效果图如下:
3、指定任务+背景信息描述+任务细节描述
提示词如下:
请你帮我制定一个英语学习计划,制定的学习计划中涉及到的在线学习平台一定是中国国内的平台,我年龄28岁,性别男,职业是一名程序员,我掌握的英语单词词汇量为3000,我的目标是在1个月内掌握词汇量达到5000,我在工作日投入的学习时间为每天1个小时,在周末投入的学习时间为每天4小时
执行效果图如下:
4、指定任务+背景信息描述+任务细节描述+指定角色
提示词如下:
你是一名成人英语教师,你具备以下能力:能够根据成人学习者的背景信息及学习需求制定有效的量化教学计划和教学内容。请你帮我制定一个英语学习计划,制定的学习计划中涉及到的在线学习平台一定是中国国内的平台,我年龄28岁,性别男,职业是一名程序员,我掌握的英语单词词汇量为3000,我的目标是在1个月内掌握词汇量达到5000,我在工作日投入的学习时间为每天1个小时,在周末投入的学习时间为每天4小时。
执行效果图如下:
上边的 4 个步骤,刚开始我们只指定任务,发现 ChatGPT 的输出并不能达到我么想要的效果,本质上是我们提供的指令不够清晰和明确。
所以为了让 ChatGPT 能够更好的理解我们的诉求,我们一步一步的添加上下文信息完善我们的指令,但是这也使得我们的提示词看起来越来越混乱。
现在我们只是在提示词中添加了一些非常简单的信息,如果想要更好的完成任务后续还要添加非常多的信息,并且面对一些相对复杂的场景的时候,提示词中会包含非常非常多的信息。
如果我们像上边那样把所有的信息都放在一堆,我们自己写着写着就乱了,也就导致 ChatGPT 回答的内容不符合我们的预期。
二、结构化编写
我们再来对上边那个提示词进行一下改造,把提示词中的信息进行分类归置:
角色:你是一名成人英语教师
能力:能够根据成人学习者的背景信息及学习需求制定有效的量化教学计划和教学内容。
任务:帮我制定一个英语学习计划,制定的学习计划中涉及到的在线学习平台一定是中国国内的平台
背景信息:我年龄28岁,性别男,职业是一名程序员,我掌握的英语单词词汇量为3000,我的目标是在1个月内掌握词汇量达到5000,我在工作日投入的学习时间为每天1个小时,在周末投入的学习时间为每天4小时。
执行效果:
好了,一个结构化提示词就诞生了,这种提示词看起来是不是就更加清晰了,不像之前那么乱了。
当然了,你可能会在网上看到过以下这种的结构化提示词:
# Role:
# Profile:
## Background:
## Goals:
## Constrains:
## Skills:
## Workflows:
## Initialization:
或者下面这种:
# 角色:
# 简介:
## 背景:
## 目标:
## 限制:
## 能力:
## 流程:
# 初始化:
上边两种都是用 markdown 语法来编写结构化提示词,是结构化提示词的一些非常流行的写法,还有一些用 json 、xml、伪代码来编写提示词的,这些结构化的方式比我们【制定英语学习计划】这个任务编写的结构化提示词要复杂。
我们在编写提示词的时候也要谨记一个原则:如无必要,勿增实体—奥卡姆剃刀原理。能够在最小化的条件下实现我们的需求,那么它就是最好的,多一分信息就多一分不确定性,最合适的才是最好的。
无论是简单结构化,还是复杂结构化,都是手段,而不是目的。 目的都是为了能够清晰明确的表达我们的指令。一方面是让大模型“理解”我们的指令从而给出高质量的回答,另外一方面也提高可读、传阅性,让我们学习提示词的人能够很好的理解。
markdown 语法格式的结构化提示词非常适合无编程经验的小伙伴学习,它最早是由 LangGPT 社区的创建者云中江树老师提出,后边我们也以 markdown 格式来讲解结构化提示词。
1、Role(角色)
通常是让大模型扮演的角色,本质上是为了缩小词向量查找范围,让大模型在自己的词向量坐标中找到和此角色更贴近的词汇。比如你让它扮演一个医生,它回答的时候就会展现医生的风格和专业。
角色一般用第二人称【你】,比如我们上边【制定英语学习计划】中给大模型指定的角色:【你是一名成人英语教师】;
指定大模型角色有时候也用第一人称【我】,我们只要保证整个提示词中出现的人称代词不混乱即可,就是不要在一个提示词中不要一个地方用【你】来表示大模型,一个地方用【我】来表示大模型。
示例:
2、Profile(简介)
通常是介绍提示词的:作者、版本号等信息。
示例:
## Profile:
- author: 冯帅
- version: 1.0
- language: 中文
3、Background(背景)
任务的背景信息,目的也是为了让大模型更好的“理解”我们的任务。
示例:
## Background:
你的目标用户在职场中一直承受着巨大压力,你的鼓励对他们来时至关重要
## Goals:
- 根据用户输入的信息,生成一篇小红书笔记
5、Constrains(限制)
对大模型的输出内容做规范
示例:
## Constrains:
- 不能有语气助词
- 必须要考虑中国人的文化背景
6、Skills(能力)
对角色的进一步补充,我们给大模型指定角色的时候,大模型扮演这个的这个角色需要具备哪些能力才能更好的完成我们的任务,需要具备的能力都在这里指定。
示例:
## Skills:
- 批判性思维:能够批判性地分析自己的和他人的作品,识别并改进不足之处
7、Workflows(流程)
大模型的工作流程,大模型会根据这里指定的流程,一步一步来往下执行。
示例:
## Workflows:
1. 向用户介绍自己
2. 引导用户输入基本信息
3. 根据用户输入的信息
8、Initialization(初始化)
初始化内容,一般在这里设置大模型和用户打招呼的内容。
示例:
## Initialization:
开场白:“hello~我是你的小助理,请问有什么需要帮助的么”
看到这里是不是有点懵,有种这么多概念记不住的感觉。这些概念都不需要刻意的去记,我们平常在场景中多用,多练习就自然而然的掌握这些概念性的东西了。
光说不练假把式,接下来我们来看一个实操案例,看冯帅是如何在一个真实场景下一步一步迭代出来可用的提示词的。
四、实操案例:夸赞大师
我们的传统文化相对来说一直偏含蓄一些,我们平时在生活和职场可能不会听到太多的夸赞话语,并且由于内卷我们可能听到更多的是打压式、pua式的话语。
接下来咱们来编写一个专门夸赞人的提示词,一方面学习在一个相对复杂点的场景下如何从 0 到 1 编写一个结构化提示词,另外一方面学会了之后小伙伴们也可以自己去写一个,在日常工作生活中用它,让 AI 来夸夸自己,给自己的生活解解压。
在开始编写提示词之前,我们先思考几个问题:我的这个提示词最终想要达到什么样的效果?达到这样的效果需要具备什么样的能力?这个提示词的工作流程大致是什么样的?
这几个问题解决之后,我们的提示词也就自然的写出来了,接下来我们逐一解决这些问题。
一)分析需求
这个步骤解决的是【这个提示词想要达到什么样的效果】这个问题。
这是分析需求的部分,我们刚刚说的想要写一个专门用来夸赞人的提示词,只是灵光一现的初步想法。我们要落实一下更加详细的需求。比如说:我们想要 AI 生成的夸赞内容,是什么样的语气,是更加专业的语气还是更加口语化的语气呢?
如果这个提示词自己用的话,根据自己的意愿和感觉来就行。如果是给到其他人用,那么需要考虑一下其他人的意愿和习惯,这里冯帅直接跟着自己的感觉来。
需求如下:
无论用户给它输入什么内容(正能量、负能量、废话),它都能根据我输入的内容来夸赞我,而不是说假大空脱离用户输入内容的夸赞。
输出的内容是用幽默的口语化语气,并且不要夸张,要温和。
二)满足需求需要的能力
这个步骤解决的是【达到这样的效果需要具备什么样的能力】这个问题。
在前文部分,我们介绍了结构化提示词的基本结构,里边涉及到了 Role(角色)和 Skills(能力)这两个标签,这两个标签就是为了解决这个能力问题的。
最关键的是 Skills(能力)这部分的内容,为什么呢?
回顾文章最开始介绍的大模型的训练和生成原理,大模型本身是不会记忆用来训练它的语料库数据的,而是对训练它对数据集压缩,抽象出特定的规则,从而形成学习和推理能力。
我们写的提示词其实就是利用大模型的学习和推理能力,让它**【现学现卖】**
所以我们在设计提示词的时候,将完成当前需求需要具备的能力放在提示词中就至关重要。
那么,我们怎样了解完成一个需求所需要具备的能力呢? 直接问 AI
如下图:
把 ChatGPT 回答所需要具备的能力直接拿过来用即可。
1. 观察力:锻炼你的观察力,注意他人的行为、特长、努力或成就,这将为你提供夸赞的具体内容。
2. 同理心:发展同理心能让你更好地理解他人的情感和经历,从而使你的赞美更具针对性和深度。
3. 真诚性:确保你的赞美发自内心,真诚的夸赞更容易被人接受,并产生积极的效果。
4. 适度性:学习掌握赞美的分寸,避免过度或不足,使你的赞美既恰到好处又感人。
5. 表达能力:提升你的语言表达能力,选择合适的词汇和表达方式,让你的赞美更加生动和感人。
6. 倾听技巧:通过倾听来更好地了解对方的需求和情绪,这将帮助你提供更加个性化和恰当的赞美。
7. 文化敏感性:了解不同文化背景中的交流习惯和敏感点,这有助于你的赞美在不同文化环境中都能得到恰当的理解和接受。
三)设计流程
这个步骤解决的是【这个提示词的工作流程大致是什么样的】问题。
设计用户和 ChatGPT 交互的流程:ChatGPT 拿到用户的输入之后,它先做什么,再做什么的步骤。
这个场景的流程很简单,让用户随便输入内容,然后 ChatGPT 根据用户输入的内容夸赞用户。
四)编写提示词
以上问题都得到解决之后,提示词基本上也就写出来了:
# Role: 夸赞师
## Goals:
当写社会中的职场打工人面临工作和生活的双重压力,他/她们非常迫切的需要别人的赞美和鼓励,你要根据他/她们输入的内容写出夸赞语句,使被夸赞者开心。
## Constrains:
- 禁止使用一切负能量的词汇
- 禁止使用夸张的语气
- 禁止脱离用户输入的内容来夸赞
## Skills:
1. 观察力:锻炼你的观察力,注意他人的行为、特长、努力或成就,这将为你提供夸赞的具体内容。
2. 同理心:发展同理心能让你更好地理解他人的情感和经历,从而使你的赞美更具针对性和深度。
3. 真诚性:确保你的赞美发自内心,真诚的夸赞更容易被人接受,并产生积极的效果。
4. 适度性:学习掌握赞美的分寸,避免过度或不足,使你的赞美既恰到好处又感人。
5. 表达能力:提升你的语言表达能力,选择合适的词汇和表达方式,让你的赞美更加生动和感人。
6. 倾听技巧:通过倾听来更好地了解对方的需求和情绪,这将帮助你提供更加个性化和恰当的赞美。
7. 文化敏感性:了解不同文化背景中的交流习惯和敏感点,这有助于你的赞美在不同文化环境中都能得到恰当的理解和接受。
## Workflows:
1. 引导用户输入内容
2. 根据用户输入的内容生成夸赞语句
## Initialization:
作为[Role],时刻记住要完成[Goals],严格遵守[Constrains],以[Workflows]的顺序和用户对话
执行效果图如下:
五)迭代
提示词编写完之后,拿到 ChatGPT 或者其它大模型里边去测试,如果发现它生成的内容不符合我们预期,那我们就要对提示词进行修修补补,也就是要持续的迭代,直到达到我们满意的效果为止。
这里需要注意的一点是,在对提示词修改迭代的时候,不要一下子修改太多地方,尽量每次只修改一处,然后拿修改前和修改后的效果做对比,这样才可以判断修改的是否正确。如果在第一次执行之后发现哪哪都不对,需要修改的地方非常多,那一定是在前边设计提示词的时候出了问题,就要回过头去重新梳理设计。
比如我想要 ChatGPT 夸人的时候更加幽默一些,我在 Skills 里面再加一个【幽默力】,修改后的提示词如下:
# Role: 夸赞师
## Goals:
当写社会中的职场打工人面临工作和生活的双重压力,他/她们非常迫切的需要别人的赞美和鼓励,你要根据他/她们输入的内容写出夸赞语句,使被夸赞者开心。
## Constrains:
- 禁止使用一切负能量的词汇
- 禁止使用夸张的语气
- 禁止脱离用户输入的内容来夸赞
## Skills:
1. 观察力:锻炼你的观察力,注意他人的行为、特长、努力或成就,这将为你提供夸赞的具体内容。
2. 同理心:发展同理心能让你更好地理解他人的情感和经历,从而使你的赞美更具针对性和深度。
3. 幽默力:以一种聪明而有趣的方式夸赞他人,这有助于你的赞美让他人信任和接受。
4. 真诚性:确保你的赞美发自内心,真诚的夸赞更容易被人接受,并产生积极的效果。
5. 适度性:学习掌握赞美的分寸,避免过度或不足,使你的赞美既恰到好处又感人。
6. 表达能力:提升你的语言表达能力,选择合适的词汇和表达方式,让你的赞美更加生动和感人。
7. 倾听技巧:通过倾听来更好地了解对方的需求和情绪,这将帮助你提供更加个性化和恰当的赞美。
8. 文化敏感性:了解不同文化背景中的交流习惯和敏感点,这有助于你的赞美在不同文化环境中都能得到恰当的理解和接受。
## Workflows:
1. 引导用户输入内容
2. 根据用户输入的内容生成夸赞语句
## Initialization:
作为[Role],时刻记住要完成[Goals],严格遵守[Constrains],以[Workflows]的顺序和用户对话
执行效果如下:
执行之后我们发现 ChatGPT 生成的内容并不幽默,于是我们在 Constrains 中再添加一个限制,让它每句话都用幽默的方式来说。
提示词修改如下:
# Role: 夸赞师
## Goals:
当写社会中的职场打工人面临工作和生活的双重压力,他/她们非常迫切的需要别人的赞美和鼓励,你要根据他/她们输入的内容写出夸赞语句,使被夸赞者开心。
## Constrains:
- 每句话都要用幽默的方式夸赞
- 禁止使用一切负能量的词汇
- 禁止使用夸张的语气
- 禁止脱离用户输入的内容来夸赞
## Skills:
1. 观察力:锻炼你的观察力,注意他人的行为、特长、努力或成就,这将为你提供夸赞的具体内容。
2. 同理心:发展同理心能让你更好地理解他人的情感和经历,从而使你的赞美更具针对性和深度。
3. 幽默力:以一种聪明而有趣的方式夸赞他人,这有助于你的赞美让他人信任和接受。
4. 真诚性:确保你的赞美发自内心,真诚的夸赞更容易被人接受,并产生积极的效果。
5. 适度性:学习掌握赞美的分寸,避免过度或不足,使你的赞美既恰到好处又感人。
6. 表达能力:提升你的语言表达能力,选择合适的词汇和表达方式,让你的赞美更加生动和感人。
7. 倾听技巧:通过倾听来更好地了解对方的需求和情绪,这将帮助你提供更加个性化和恰当的赞美。
8. 文化敏感性:了解不同文化背景中的交流习惯和敏感点,这有助于你的赞美在不同文化环境中都能得到恰当的理解和接受。
## Workflows:
1. 引导用户输入内容
2. 根据用户输入的内容生成夸赞语句
## Initialization:
作为[Role],时刻记住要完成[Goals],严格遵守[Constrains],以[Workflows]的顺序和用户对话
执行效果如下图,观察下图的结果,我们发现 ChatGPT 已经比较幽默了,只不过这幽默有点低级。
六)总结
最后我们可以总结出来一套编写结构化提示词的流程,如下图:











