从本篇开始,我将介绍编写高效的ChatGPT Prompt的一些策略与技巧. 这个系列是我学习吴恩达与OpenAI合作推出的《ChatGPT Prompt Engineering for Developers》视频教程的学习笔记.
这个教程非常值得学习,建议去看下.
今天介绍编写高效ChatGPT Prompt的第一个原则, 就是编写清晰并且具体的指令
清晰&具体
好的Prompts的第一个重要的原则就是要清晰并且具体
指对问题越详细越好,问题不要模糊,宽泛或者令人难以理解. 描述越具体越好. 不要把清晰理解为简洁. 并不是越简短越好.
举例说明:
代码语言:javascript复制Prompt: 帮我写一首诗关于春天的诗
# 改进
改进Prompt: 写一诗春天的诗,突出景色的美丽,并衬托出人物心情的喜悦
如上示例, 相比前面的提问, 改进的Prompt描述的更加清晰具体. 对诗的要求描述的更加具体. 这就是比较好的Prompt
想要编写出清晰并且具体的Prompt,以下几个策略可以帮助到你.
一) 学会使用分割符
如果你的问题中,包括一些素材或资料, 需要显式的与问题区分开来. 这种情况下,学会使用一些分割符会更好. 让ChatGPT更容易理解.
如果不使用分割符,在一些场景下,会出现误解.举例如下
代码语言:javascript复制Prompt: 请帮我将这段文字翻译成英文: 春天这个词,法语怎么说
## 响应
The word "spring" is "printemps" in French.
这并不符合你提问的本意, 使用分割符能很好的避免类似的误解.
代码语言:javascript复制改进Prompt: 请将下面这段文字翻译成英文,内容会以---分割符来开始并结束.
---
春天这个词,法语怎么说
---
如上所示, 这样的方式更加清晰与具体. 让ChatGPT不易于产生冲突与误解. 这样清晰的表述, 就算内容中有一些容易产生歧义的内容, ChatGPT也不会将引用与问题混淆.
二) 让ChatGPT主动检查前置满足
询问ChatGPT时, 要考虑到前置条件不满足时要如何处理. 显式的告知ChatGPT检查前置并告知其不满足的响应,会改善ChatGPT的响应
代码语言:javascript复制Prompt: 请帮助计算用户提出的数学计算问题,并告知答案. 问题: 计算130与200的积
上述这个问题看似没有大问题,但考虑到一些场景,问题是由外部传入,并不可控. 也许这样去询问ChatGPT, 就会更有效
代码语言:javascript复制改进Prompt: 请帮助计算用户提出的数学计算问题,并告知答案. 如果问题不是数学计算问题,请回复不知道.
问题: 中国的面积有多大
如果这样询问,ChatGPT就会回复不知道相关的内容, 而以上一个Prompt来询问,ChatGPT则会回复你这个提问.
三) 提示一个可参照的示例告知ChatGPT
有些时候,问ChatGPT时, 给ChatGPT一个类似的可参照的示例, 这样ChatGPT的回复能更符合你的期望.
代码语言:javascript复制Prompt: 以一个祖父母的角色向小孩教导韧性的事?
这个问题可能产生非常多的可能性. 如果给一个可参照的示例, 则ChatGPT的回答会好很多.
代码语言:javascript复制#改进
Prompt: 请参照以---分割的内容,按照一致的语气与模式回答
---
<孩子>: 教教我关于耐心的事。
<祖父母>: 雕刻最深谷的河流源于一眼泉水; 最壮丽的交响乐由单独的音符构成; 最复杂的挂毯始于孤独的一根线。
<孩子>: 教教我关于韧性的事。
---
四) 尽量要求结构化的输出
提问时,如果要求ChatGPT以结构化的方式输出,比如JSON. 回应的效果会更好
举例如下:
代码语言:javascript复制Prompt: 请帮助我总结下面内容
相比,指定特定的JSON结构化输出,可能效果就会更好
代码语言:javascript复制改进Prompt: 我了你一篇内容,以---来开始与结束.
---
...省略内容
---
请以下面的JSON格式来总结这篇文章,包括文章主题,主要人物,中心思想,文章评价四个维度来输出总结
这样的提示,就更清晰与具体. 这样的提问会更有价值. ChatGPT的回答会更符合你的期望.