ChatGPT Prompt 编写指南
本文共 3,200 字,预计阅读时间 10 分钟。
写在最前面
如果你对 ChatGPT 有基本的了解,有过一些和 ChatGPT 的对话,但不太清楚如何更好地使用这个工具。这篇文章便是为你而写。 如果你还不知道 ChatGPT 是什么,或者还没有尝试过和 ChatGPT 对话,建议先去尝试一下再回头看这篇文章。
在自然语言处理这个领域,大众消费市场的语音助手们在很长的一段时间里都给人们一种“人工智障”的感觉。无论是 Siri 还是小爱同学,都只能针对特定的场景给出较好的响应,但只要超出那些场景,他们大多只会答非所问。
随着 ChatGPT 等大语言模型的普及,Google 深度学习科学家弗朗索瓦·肖莱对此的评论是:“人工智能的第三次夏天到来了。” ChatGPT 是有史以来用户数以最快速度过亿的一款应用。最近,我在各种社交媒体上总是能够被各种 AI 相关的新闻和消息轰炸。有人对 AI 的快速发展感到忧惧,有人对 ChatGPT 当前的推理和逻辑运算能力嗤之以鼻,有人在散播大量人类岗位即将被 AI 取代的恐慌,有人则嘲笑另一批人在对深度学习缺乏了解的情况下盲目焦虑。
其中有一种观点我特别认同:AI 就是大脑的“外骨骼”,能够极大地强化、扩展你的大脑能力。目前还很难预知某个岗位是否会真正被 AI 彻底取代,但可以预知的是,懂得如何运用 AI 技术将是未来一段时间内最重要的能力。
目前大众接触最多的 ChatGPT 使用的底层模型还是 GPT-3.5,它在推理和逻辑计算方面还显得非常稚嫩。但 ChatGPT 所表现出的对人类自然语言的理解能力是非常惊人的,他可以很好地理解语言中的情绪。许多人已经从这款工具上获得了工作效率的成倍提升。掌握这款工具最重要的部分就在于“如何写好 prompt”。
Prompt 直译成中文是“提示”的意思。有人戏称写 Prompt 就像魔法师念咒语一样,不同 prompt 所引导出的回答效果差异非常巨大。目前互联网上能找到很多 Prompt 现成案例(比如 Awesome ChatGPT prompts 和 ChatGPT Shortcut)。你可以直接拿别人写好的“咒语”来使用,很多效果确实不错。但从“如何写好 prompt”角度出发的内容就少得多了。
目前我找到最好的学习资料是:https://github.com/dair-ai/Prompt-Engineering-Guide,非常推荐大家阅读!在本文中,我将从中整理出一些能快速理解的简单技术,帮助你们理解如何优化、迭代自己的“咒语”。
一、第一原则:明确的意图
你需要明确地表达你的意图和要求,尽可能具体、描述性、详细地描述所需的上下文、你期望的结果等。你的要求越明确,越有希望获得你想要的答案。
糟糕的案例 ❌
写一首关于OpenAI的诗。
更好的案例 ✅
以莎士比亚的风格写一首短小的、鼓舞人心的诗,重点关注最近DALL-E产品推出(DALL-E是一种文本到图像的ML模型)的事情。
上面的例子明确提出了几点要求:
- 以莎士比亚的风格
- 短小的、鼓舞人心的
- 跟 DALL-E 产品相关的
由于 ChatGPT 只掌握了 2021 年的知识,可能不知道 DALL-E 是什么,我们还在 prompt 里简单解释了 DALL-E,帮他理解模棱两可的概念。
二、理解 Prompt 的主要构成
Prompt 的主要构成有:
- Instruction 指令:您想让模型执行的特定任务或指令
- Context 上下文:可以涉及外部信息或附加上下文,可以引导模型产生更好的响应
- Input Data 输入数据:我们感兴趣的输入或问题(以期望 ChatGPT 给出解答)
- Output Indicator 输出提示:表示希望 ChatGPT 以什么形式来输出结果
接下来用几个 Prompts 来加深理解:
案例一
我希望你能担任私人教练的角色。我会提供你一个想通过体育锻炼变得更健康的人的信息,而你的角色是根据他们现有的健康水平、目标和生活习惯,为这个人设计最佳的计划。你应该利用你对运动科学、营养建议的知识,来为他们创建一个适合他们的计划。我第一个要求是:“我需要帮助为想减肥的人设计一个锻炼计划。”
其中,
- 上下文:我希望你能担任私人教练的角色。我会…,来为他们创建一个适合他们的计划。
- 指令:我第一个要求是:“我需要帮助为想减肥的人设计一个锻炼计划。
案例二
翻译成英文:如今 ChatGPT 给人带来的最大的震撼在于,他看起来真的理解了我们的提问,无论怎样的问题,他总能围绕问题作出解答。
- 指令:翻译成英文:
- 上下文:如今 ChatGPT 给人带来的最大的震撼在于,… 他总能围绕问题作出解答。
案例三
为特定的亚马逊产品特征撰写亚马逊的标题、五点和搜索关键词。输出内容为英文。五点的每一点都要超过 20 个单词。
输出格式为:
标题:
搜索关键词:
五点:1.
; 2. ; 3. ; ... 该产品的特征是:”””
[品牌] 防切割手套,Level A6 防切割级别,透气,舒适性强,黑色,适用于仓库、货运、钓鱼、园艺、木工,从 XS 到 XXL 码齐全,适用于各种人群需求。
”””
- 指令:为特定的亚马逊产品特征撰写亚马逊的标题、五点和搜索关键词。
- 上下文:输出内容为英文。五点的每一点都要超过 20 个单词。
- 输出提示:输出格式为:…
- 输入数据: 该产品的特征是:””” [品牌] 防切割手套,… 适用于各种人群需求。”””
三、一些 Prompt 的优化迭代技术
使用以下的方法,不断地优化你的 prompt。
1). 框选你想表达的重点信息
使用 ###
或 """
等符号框选重点信息。使用符号来断开不同类型的内容会显著提升 ChatGPT 对内容的理解能力。
糟糕的案例 ❌
将下面的文本总结为最重要的要点的项目符号列表。
如今 ChatGPT 给人带来的最大的震撼在于,他看起来真的理解了我们的提问,无论怎样的问题,他总能围绕问题作出解答…………………
更好的案例 ✅
将下面的文本总结为最重要的要点的项目符号列表。
文本:”””
如今 ChatGPT 给人带来的最大的震撼在于,他看起来真的理解了我们的提问,无论怎样的问题,他总能围绕问题作出解答…………………
”””
2). 指定结果的输出格式
当你期望 ChatGPT 的输出内容具有一定结构时,把你的期望表达出来。
糟糕的案例 ❌
从下面的文本中提取所有的人名和他们的职业。
文本:”””
设计师小牛陪小王去小李家做客,小李的老婆厨师小丁做了一道红烧带鱼。小王说“非常好吃!”
”””
更好的案例 ✅
从下面的文本中提取所有的人名和他们的职业。
输出的格式:<人名>(<职业>),<人名>(<职业>),...职业>人名>职业>人名>
文本:”””
设计师小牛陪小王去小李家做客,小李的老婆厨师小丁做了一道红烧带鱼。小王说“非常好吃!”
”””
3). “Act as” trick 确定 ChatGPT 的立场
针对一些问题,尤其是开放性问题。整个互联网可能存在上百甚至上千万中答案,为 ChatGPT 设定立场有助于它找到最符合自己人设(也最符合你需要的)一种答案。
糟糕的案例 ❌
你如何看待婚姻?
更好的 ✅
请作为女权主义者,回答以下问题:”你如何看待婚姻?”
or
请作为大男子主义者,回答以下问题:”你如何看待婚姻?”
4). Few-shot 教教他,给 ChatGPT 一些案例
对于 ChatGPT 熟悉的任务,你可能不需要给他任何例子(Zero-shot)比如,你给他 10 条评价某一个商品的 Review,让 ChatGPT 判断多少条是积极的,多少条是消极的。他通常可以直接给你正确的结果。因为它本身对情绪的理解能力已经很强了。但如果您正在尝试让 ChatGPT 做一件他不熟悉的事情,那可能需要提供更多案例。
ChatGPT 已经熟悉的任务,不需要案例。即 zero-shot ✅
请识别下列评论的态度是怎么样的?给他们的态度打个分,1-10分,1分最消极,10分最积极
评论:
太难吃了,再也不回来了。
环境很糟糕。
亚米亚米,会再来!
什么鬼玩意儿。
再见!
💥💥💥💥💥
糟糕的案例 ❌
请将以下文本归类到三个字母:X/Y/Z
文本:
太难吃了,再也不回来了。
环境很糟糕。
亚米亚米,会再来!
什么鬼玩意儿。
再见!
💥💥💥💥💥
在糟糕的案例中,我们并没有定义 X, Y, Z 这三类分别代表什么意思。ChatGPT 虽然会按它的逻辑做好一定的分类,但我们并不一定会满意它的分类结果。我们没有明确定义需求,甚至我们连我们自己需要的东西是什么都还没弄清楚。这时候你就得回到我们的“第一原则”:搞清楚你自己的明确意图是什么。
更好的案例 ✅
案例:
这家饭店里有虫子,靠。// X
我好喜欢鱼香肉丝。// Y
这家店的餐具挺好看的,但是吃的东西一般。// Z
🤡🤡🤡🤡 // Z
好吧。// Z
请将以下文本归类到三个字母:X/Y/Z
文本:
太难吃了,再也不回来了。
环境很糟糕。
亚米亚米,会再来!
什么鬼玩意儿。
再见!
💥💥💥💥💥
在上面的例子中,我们虽然没有明说 X, Y, Z 是什么意思。但通过案例表达了,X 偏负面评价,Y 偏正面评价,Z 的情绪未明确显露。这个时候 ChatGPT 为我们做好的分类就很接近我们想要的结果了。
5). 减少模糊的表达,明确提出你的需求
糟糕的案例 ❌
你总结的产品描述应该非常简练、只包含一些语句、别太多。
更好的 ✅
用 2-3 句话总结该产品,不超过 30 个字。
6). 告诉他要做什么,而不是不要做什么
糟糕的案例 ❌
以下是一名客服和一名客户之间的对话。请勿询问用户名或密码。请勿重复。
客户:我无法登录我的账户。
客服:
更好的 ✅
以下是客服与顾客之间的对话。客服将尝试诊断问题并提出解决方案,同时避免问任何与用户名、密码相关的问题。请引导用户查看帮助文章 www.samplewebsite.com/help/faq。
顾客:我无法登录我的账户。
客服:
7). “Step by Step” trick,帮助 ChatGPT 做推理
也叫做:Chain-of-Thought Prompting。
实验证明,在应对 zero-shot 问题时,你在问题最后加上“Let’s think step by step”,ChatGPT “显性的推理能力”会得到明显提升。这个就不多展开了,感兴趣的朋友可以看看这篇参考文章:Prompt learning 系列之 Let’s think step by step
最后,
这篇文章的内容还是比较浅显。如果你因此对 Prompt 工程产生了一些兴趣,可以继续阅读 Prompt Engineering Guide,里面包含很多这篇内容没有囊括的有趣话题。比如对抗性提示、怎么解决对话机器人的前后一致性问题、如何改善 AI 输出错误信息或者有偏见信息的问题。其中对抗性提示(Adversarial Prompting)话题包含了如何做到对话机器人的越狱,如何让它说一些 AI 设计者不想让它说的话。
我是一个普普通通的深度学习初学者,本文如有任何谬误,欢迎拍砖。
本文的版权归作者 邹润阳 所有,采用 Attribution-NonCommercial 3.0 License。任何人可以进行转载、分享,但不可在未经允许的情况下用于商业用途;转载请注明出处。感谢配合!