ChatGPT如何写好Prompt编程示例详解
作者:艺述论 时间:2022-06-30 03:55:24
引言
现在已经产生了一种新职业:Prompt Engineer(提示指令工程师),可见 Prompt 是多么重要,且编写不易。
ChatGPT的产出,一半决定于它的实力,一半决定于你给它的指令,即Prompt。如果你在试用ChatGPT时,发现它比较弱智,没有大家传诵的那么智能,多半原因是你比较”弱智“,不知道如何编写它能清晰理解的指令。
这篇文章一起探讨下,小白如何写好 Prompt。
好的 prompt 具有的设计原则
清晰,切忌复杂或歧义,如果有术语,应定义清楚。
具体,描述语言应尽量具体,不要抽象活模棱两可。
聚焦,问题避免太泛或开放。
简洁,避免不必要的描述。
相关,主要指主题相关,而且是整个对话期间,不要东一瓢西一瓤。
但这些原则比较抽象,不具有具体的指导意义,只能先做为整体的要求了解。
好与坏的举例:
# 有效 Prompt
你能总结一下《锻炼的好处》一文的要点吗? # 聚焦、相关
巴黎最好的素食餐厅有哪些? # 具体、相关
# 无效 Prompt
你能告诉我关于这个世界的什么? # 宽泛、开放
你能帮我做作业吗? # 开放
你好 # 无目的、不聚焦
编写良好prompt的四种基础模式
四种基础模式:
By example (示例模式)
在这种模式下,我们给模型提供一些示例文本,模型需要生成与示例文本类似的文本。 这种模式通常用于生成类似于给定示例的文本,例如自动生成电子邮件、产品描述、新闻报道等。 示例文本可以是单个句子或多个段落,具体取决于任务的要求。
示例中有什么格式或规律,让AI自己发现。
By instruction template (指令模板)
在这种模式下,我们给模型提供一些明确的指令,模型需要根据这些指令生成文本。 这种模式通常用于生成类似于技术说明书、操作手册等需要明确指令的文本。 指令可以是单个句子或多个段落,具体取决于任务的要求。
在给出prompt的时候,同时给出指令模板,约束输入和输出的互动格式。
By specific (特定指令)
在这种模式下,我们给模型提供一些特定信息,例如问题或关键词,模型需要生成与这些信息相关的文本。 这种模式通常用于生成答案、解释或推荐等。 特定信息可以是单个问题或多个关键词,具体取决于任务的要求。
这些问题或关键词一定是AI可以理解和接受的,是预置的已经存在的。
By proxy(代理模式)
在这种模式下,可以充当了一个代理,代表某个实体(例如人、角色、机器人等)进行操作或交互。 代理模式的核心思想是引入一个中介对象来控制对实际对象的访问,从而实现一定程度上的隔离和保护。 诸如于在 ChatGPT 中,"act as xxx" 可以让 ChatGPT 充当一个代理,扮演某个角色或实体的身份,以此来处理与该角色或实体相关的任务或请求。
这4个基础模式都很历害,它们可以推导出很多东西,包括下面的prompt编写模板。
编写一个合格的prompt的要点
让AI扮演角色
提供要执行的任务
给出完成任务的步骤
围绕任务提供上下文
陈述具体目标,给出具体要求
要求格式化输出
明确指定语言风格
让AI站在角色的角度
马上给出具体的样例
下面分别看,这些要点都指什么。
让AI扮演角色
你想让它扮演一个什么样的角色,它便站在这样的角色的立场思考。
举例:你是...
你是一家顶级市场研究公司的才华横溢的分析师...
我希望你充当...
我希望你充当 JavaScript Console...
这种角色扮演ChatGPT竟然也毫不示弱,估计让它扮演一只小狗也可以。
此外还有:
我想让你扮演一个脱口秀喜剧演员...
我想让你扮演讲故事的角色...
我想让你扮演一个小说家...
我想让你充当书面作品的标题生成器...
至于说,ChatGPT能扮演什么,不能扮演什么,没有人知道,或许你能想到的它都能扮演,或许它只能扮演好一部分角色,但至少上面提供的角色,它都能很好的扮演,且已经有人分享过相关的prompt。
结论:无论写什么Prompt,开头第一句先描述一下我们想让ChatGPT充当什么角色。如果没有这样的角色,就杜撰一个,次数多了它可能也猜到是什么了。
明确提供要执行的任务
可以查到已经支持的任务有:文本分类、实体标注、信息抽取、翻译、生成、摘要提取、阅读理解、推理、问答、纠错、关键词提取、相似度计算。
这些单词在Prompt中都可以光明正大地出现,它们都有人使用过,ChatGPT都会理解得很好。
它有十大类基本能力:
文本生成: ChatGPT 可以生成各种格式的文本,例如写故事、写新闻文章或诗歌、写代码等。
自动摘要: ChatGPT 可以将一段很长的文本摘要成一个较短的版本。
自然语言理解 (NLU): ChatGPT 可以理解文本的含义,可用于情感分析、命名实体识别和文本分类等任务。
语言翻译: ChatGPT 可以针对语言翻译任务进行微调,将文本从一种语言翻译成另一种语言。
对话生成: ChatGPT 可以生成类似人类的对话,使其适用于聊天机器人和虚拟助手应用程序。
文本转语音: ChatGPT 可以针对文本转语音任务进行微调,将文本转换为口语。
图像字幕: ChatGPT 可以针对图像字幕任务进行微调,它可以为图像和视频生成字幕。
阅读理解: ChatGPT 可以针对阅读理解任务进行微调,它可以根据给定的文本回答问题。
问答: ChatGPT 可以根据给定的上下文或知识库回答问题。
文本补全: ChatGPT 可以根据给定的上下文或提示来完成给定的文本。
这十大项,及它们的子项,都是它可以执行的任务。
例如第一项能力中的:写故事、想故事、编故事,字词可以稍有差别,但都可能作为任务使用。
每一个prompt,都应该至少有一个清晰的任务。 这很重要!
举例:
我希望你充当 JavaScript console。我将键入命令,您将回复 JavaScript console 应显示的内容...
在这里“您将回复 JavaScript console 应显示的内容”,“回复内容”便是给AI的明确的任务。
再举一个例子:
我想让你扮演一个小说家。您将想出富有创意且引人入胜的故事...
在这里“您将想出富有创意且引人入胜的故事”,“想故事”便是任务。
再举例:
我想让你扮演一个脱口秀喜剧演员。我将...,您将...,根据这些话题创建一个例程...
在这里,“创建例程”便是任务。什么是例程?别担心AI看不懂,多给它几个样例,它自然就懂了。它以于自己要完成的任务,一半靠理解,一半猜测,本质上都是基于概率的推测。
再举例:
我想让你扮演讲故事的角色。您将想出引人入胜、富有想象力和吸引观众的有趣故事...
这里的任务是什么?“想出故事”对不对?
给出完成任务的步骤
步骤是一个大于1的待办事项,且有先后依赖关系和前后次序。
举例:
我希望你充当 JavaScript console。我将键入命令,您将回复 JavaScript console 应显示的内容...
这里的步骤是:
我将键入命令
你将回复内容
这就是完成任务的步骤,是人类与AI共同协作完成的。
再举例:
请做一个实体抽取任务,从下面这段话中提取出人名和地名,并用json格式输出:
刘亦菲( Crystal Liu,1987 年 8 月 25 日-[1])为 华裔美籍的女演员...
在这里:
提取出人名和地名
用json格式输出
就是任务步骤。
再举例:
我想让你扮演一个脱口秀喜剧演员。我将为您提供一些与时事相关的话题,您将运用您的智慧、创造力和观察能力,根据这些话题创建一个例程...
在这里:
你瘵为你提供..话题
你运用..创建例程
就是一个任务步骤。
围绕任务提供上下文
描述上下文是为了让AI更加清晰地理解我们的意图,是代替多次互动效果的。
举例:
...根据目标受众,您可以为讲故事环节选择特定的主题或主题,例如,如果是儿童,则可以谈论动物;如果是成年人,那么基于历史的故事可能会更好地吸引他们等等...
在这里:
如果是儿童,则可以..
如果成年人,那么..
这便是一种上下文环境的描述,它代表的是一种文字的正则表达式。
陈述具体目标,给出具体要求
举例:
我想让你充当书面作品的标题生成器。我会给你提供一篇文章的主题和关键词,你会生成五个吸引眼球的标题。请保持标题简洁,不超过 20 个字,并确保保持原意...
在这里,“请保持标题简洁,不超过 20 个字,并确保保持原”就是具体的,对生成目录的要求。
再举例:
...你可以选择任何类型,如奇幻、浪漫、历史小说等,但你的目标是写出具有出 * 节、引人入胜的人物和意想不到的高潮的作品...
在这里:
“可以选择任何类型,如奇幻、浪漫、历史小说等”这是Option标准
“写出具有出 * 节、引人入胜的人物和意想不到的高潮”是对目标提出的3个明确的要求
再举例:
写一篇简短的文章,说明为什么文案写作是 2023 年的一项基本技能。
使用这些策略:
- 使用具有说服力的语言
- 提出问题以在段落之间过渡
- 用证据和例子支持要点
- 直接与读者对话
对于多项要求,也可以使用任务的输入格式。不仅输出格式可以指定,输入格式也可以预先告知AI,方便AI理解。
要求格式化输出
举例:
创建关于使用 Notion 作为内容创建者保持井井有条的主题的思维导图,列出中心思想、主要分支和子分支。
在这里,列出“中心思想、主要分支和子分支”,就是人类指定的输出格式。
下面是一些较用通用的格式描述:
要求其改变输出:大纲;思维导图;要点;
有说服力的文章;
少于 280 个字符的文本块;
使用结构:1)什么,2)为什么,3)如何做。
这些字眼在Prompt中都可以出现。
明确指定语言风格
举例:
就如何使用 ChatGPT,创建更有效的内容,提供最讽刺、嘲讽的建议。
这里的“讽刺、嘲讽”便是语言风格,注意语言风格可以要求极致,例如使用“最”,但不能相互矛盾,例如在同一个prompt中,要求AI同时使用专业且诙谐的语言风格,虽然有时候它俩未必100%矛盾,但这种指定可能会让AI无视你指定的风格,因为它无法完成。
让AI站在人物的角度,而非上帝视角
举例:
主题:企业家的生产力
对于上述主题,从每个具有不同观点角色的角度编写多个观点。对于每个观点,用角色自己的声音写,使用那个人会使用的短语...
马上给出具体的样例
举例:
...我的第一个要求是“我需要一个关于毅力的有趣故事“...
在这里,“我需要一个关于毅力的有趣故事“,就是第一个输入的样例。样例是互动真正开始的地方,前面的内容都是为此准备的。
再举例:
...我的第一个要求是“我要写一部以未来为背景的科幻小说”...
在这里,“我要写一部以未来为背景的科幻小说”,就是一个样例。
小结
Prompt编写”博大精深“,看起来简单,其实没那么简单,要不为什么instagram上有人可以靠出售Prompt赚钱。能够交易的,尤其是可以复制的文本,它一定具有不扉的价值。但其实经过上面的研究,发现它也没有那么难,对于个人来讲,只需要研究某个垂直细分领域的Prompt如何编写就可以了,这其实又不难。
来源:https://juejin.cn/post/7212924329427451962