prompt 是什么
prompt 是“提示、引导”的意思。在 NLP (自然语言处理)领域,prompt 通常指的是向预训练模型输入的文本,用于引导生成模型生成指定的文本输出。
prompt 就像是一条指路路线,告诉计算机生成什么样的文本才能符合我们的需求。就像我们告诉导航软件去什么地方,算法才能为我们找到最佳的路线一样,我们可以通过 prompt 来告诉计算机需要生成什么样的文本,让计算机能够更快、更准确地生成文本。
比如可以使用以下的 prompt 向 GPT 询问峨眉山的位置:
- “峨眉山的位置是:”
- “请问峨眉山位于哪里?”
对于这类简单的问题,不需要过多的描述,直接提问即可。但是,如果需要让 GPT 完成更复杂的任务,例如写作或者进行特定格式的输出等任务,则需要编写更为详尽、严密的 prompt。只有这样,GPT 才能准确地理解任务,并完成所需要的操作。
需要注意的是,GPT 支持上下文检索。如果之前询问了峨眉山的位置,接着问“那里有什么景点?”时,GPT 会知道你正在询问峨眉山相关的信息。
prompt 最好简洁易懂,并减少歧义
为了让 GPT 更好地理解并完成任务,prompt 最好包含清晰的指令和上下文,以便 GPT 能够理解并按照你的预期进行操作。此外,prompt 应该尽可能简洁明了,以避免造成歧义或混淆。
例如,如果你想让GPT推荐一部电影,它可能会要求您说明您喜欢哪种类型的电影,或者随机推荐一部。
但如果你加入限定词,如“请推荐一部日本的文艺类电影”,GPT 就可以明确了解到所需求的电影类型和地区,并快速为您回答。
== prompt 预期越明确,回答的效率更高。 ==
而歧义通常是提出过于口语化的问题、多义词或简称使 GPT 无法确定你所询问的内容。
例如,如果你是一名设计师,正在学习 Midjournal ,为了便于与同事或朋友交流,你们通常都用 “MJ” 这个简称。但是,当你向 GPT 提出问题时使用 “MJ” ,GPT 并不会立刻明白你指的是 Midjournal。
好 prompt 的常用技巧
在介绍下面的 prompt 技巧之前,我需要先说明一点:这些技巧是经过许多人验证绝对可靠的,但这并不是唯一的方法。
你应该做的是学会这些技巧,并且在实践中灵活运用、融会贯通。但最最重要的是不拘泥于这些技巧,要多学习其他人的优秀 prompt、论文或尝试自己的奇思妙想。
- 询问清晰、详细的问题
- 让 GPT 扮演指定角色
- 使用分隔符指示不同部分
- 将任务分解成几个步骤完成
- 提供模板给 GPT 分析
- 指定输出的长度
询问清晰、详细的问题
想要得到高度相关的回应,那就要提供详细的重要信息或上下文,不要让 GPT 猜测你的想法。
Worse
编写代码以计算斐波那契数列
Better
请你使用 Java 语言编写一个函数来计算斐波那契数列,并对代码进行适当的注释,以便其他开发者能够理解代码逻辑和功能。请注意代码的可读性和高效性,并遵循编码最佳实践和良好的代码规范。
Worse
给我写一篇文章
Better
请您撰写一篇新闻风格的女性题材文章。文章主题围绕女性领导力、企业文化、性别平等等话题展开,尽可能准确地介绍最新的研究、事件和趋势,并使用简洁明了的语言风格,让读者能够轻松理解和掌握文章内容。
让 GPT 扮演指定角色
让 GPT 代入角色,可以使它明白从什么角度解析你的问题,也就更高概率的响应出你想要的答案。
Worse
编写代码以计算斐波那契数列
Better
作为一名拥有丰富编码经验的 Java 开发工程师,您需要编写一个函数来计算斐波那契数列。你需要使用 Java 语言,并在代码中添加注释来解释每个部分的作用,以及为什么要以这种方式编写代码。
Worse
给我写一篇文章
Better
请你撰写一篇新闻风格的女性题材文章。文章主题围绕女性领导力、企业文化、性别平等等话题展开,尽可能准确地介绍最新的研究、事件和趋势,并使用简洁明了的语言风格,让读者能够轻松理解和掌握文章内容。
使用分隔符指示不同部分
使用分隔符,可以让 GPT 更明了的知道哪些是需要区别对待的文本,降低歧义的几率。
分隔符常用的是三引号"“”,三井号###。看自己习惯使用即可。
prompt :
下面给出了一份新闻材料,请你总结并提炼出其中的主要讯息
text : “”"
梅西庆祝进球。梅西:非常感谢中国球迷6月15日晚,阿根廷国家队与澳大利亚的友谊赛在北京工人体育场上演。梅西开场81秒破门——这是梅西职业生涯打进的最快进球,此前的纪录是2018年对阵切尔西时的2分06秒。
“”"
将任务分解成几个步骤完成
就像平时做复杂的事一样,分解成几个小任务能使你清晰目标,明确计划,更有助于你完成任务。GPT 也是如此,将复杂事情分解,能够避免它出现“幻觉”,更高效的响应。
prompt :
请按照以下步骤响应用户输入:
第 1 步:要求用户输入一段文本,并使用一句话将其内容进行总结。在总结语句的前面添加“摘要:”前缀。
第 2 步:将第 1 步中的总结语句翻译成俄罗斯语。在翻译语句的前面添加“翻译:”前缀。
提供模板给 GPT 分析
提供样例文章给 GPT,它会自动分析文章的风格,也减少了描述文章风格出现歧义的可能。
prompt:
user :我将提供一份文章给你,请你分析文章的文笔、风格并将此风格命名为“风格A”
text : “”"
这里插入文章内容
“”"
GPT :……
user :请你以风格A编写一篇文章,文章标题为:“…”
指定输出的长度
确定生成文本的具体长度,避免产生过短或过长的结果,也可以使文章更精简、具有可读性和可理解性。
prompt:
请你以新闻风格,以女性领导力、企业文化、性别平等等话题为主题,撰写一篇约五百字左右的文章。要求文章内容准确,介绍最新的研究、事件和趋势,并采用简洁明了的语言风格,让读者能轻松理解和掌握文章内容。
其他相关技巧
增加回复正确答案几率的 prompt
Kojima 等人 2022 年的论文 Large Language Models are Zero-Shot Reasoners。在论文里提到,当我们向模型提一个逻辑推理问题时,模型返回了一个错误的答案,但如果我们在问题最后加入 Let‘s think step by step 这句话之后,模型就生成了正确的答案
外网找到了个通俗点的解释:
- 首先各位要清楚像 ChatGPT 这类产品,它是一个统计语言模型,本质上是基于过去看到过的所有数据,用统计学意义上的预测结果进行下一步的输出(这也就是为什么你在使用 ChatGPT 的时候,它的答案是一个字一个字地吐出来,而不是直接给你的原因,因为答案是一个字一个字算出来的)。
- 当它拿到的数据里有逻辑,它就会通过统计学的方法将这些逻辑找出来,并将这些逻辑呈现给你,让你感觉到它的回答很有逻辑。
- 在计算的过程中,模型会进行很多假设运算(不过暂时不知道它是怎么算的)。比如解决某个问题是从 A 到 B 再到 C,中间有很多假设。
- 它第一次算出来的答案错误的原因,只是因为它在中间跳过了一些步骤(B)。而让模型一步步地思考,则有助于其按照完整的逻辑链(A > B > C)去运算,而不会跳过某些假设,最后算出正确的答案。
根据 Yongchao Zhou 等人的最新论文,更好的 prompt 是:
Let’s work this out in a step by step way to be sure we have the right answer.
让 GPT 给你生成 prompt
可以自己描述,直接让 GPT 根据你的描述生成。
但个人比较推荐的是使用提供模板给 GPT,也就是拿已经写好的 prompt 发给 GPT ,让他学习,然后根据这些优秀案例再生成你指定方向的 prompt。
我愿称之为 prompt 生 prompt。
prompt 框架
GPT 是一种利用 NLP 技术生成自然语言文本的模型,在使用时想要得到好的回答就得写出一个好的 prompt。
但是写一个好 prompt 对于初学者来说是件比较困难的事情,于是有大佬就根据自己的经验总结出了一套方法论,只要根据这个方法论来一步步执行,写出的 prompt 都不会差的。
而这个方法论,也可以称之为脚手架,或者说更多人熟悉的 框架
外网看到@Matt Nigh大佬,在 ChatGPT3-Free-Prompt-List 的项目上总结了一套 prompt 框架:
CRISPE Prompt Framework
这个 framework 虽然较复杂,但完备性会比较高,比较适合用于编写 prompt 模板。CRISPE 分别代表以下含义:
- CR: Capacity and Role(能力与角色)。你希望 ChatGPT 扮演怎样的角色。
- I: Insight(洞察力),背景信息和上下文
- S: Statement(指令),你希望 ChatGPT 做什么。
- P: Personality(个性),你希望 ChatGPT 以什么风格或方式回答你。
- E: Experiment(尝试),要求 ChatGPT 为你提供多个答案。
Step | Example |
---|---|
能力和角色 | 把你想象成机器学习框架主题的软件开发专家,以及专业博客作者。 |
背景 | 这个博客的读者主要是有兴趣了解机器学习最新进展技术的专业人士。 |
指令 | 提供最流行的机器学习框架的全面概述,包括它们的优点和缺点。包括现实生活中的例子,和研究案例,以说明这些框架如何在各个行业中成功地被使用。 |
个性化 | 在回应时,混合使用 Andrej Karpathy、Francois Chollet、Jeremy Howard 和 Yann LeCun 的写作风格。 |
尝试 | 给我多个不同的例子。 |
提供两个 demo prompt:
写作助理:
作为一名中文写作改进助理,你的任务是改进所提供文本的拼写、语法、清晰、简洁和整体可读性,同时分解长句,减少重复,并提供改进建议。请只提供文本的更正版本,避免包括解释。请从编辑以下文本开始:[文章内容]
论文:
我希望你能作为一名学者行事。你将负责研究一个你选择的主题,并将研究结果以论文或文章的形式呈现出来。你的任务是确定可靠的来源,以结构良好的方式组织材料,并以引用的方式准确记录。我的第一个建议要求是 '论文主题’
框架小结
这个框架看起来很复杂,但是都是符合逻辑容易理解的,我稍微总结下:
定义角色,交代背景,需要做什么,以什么风格回复,是否需要多个例子。
这样看是不是一下就能记住了呢。
那么本篇文章就到此结束了,讲的不算多,但是入门是够了。不过现在ai的发展实在是日新月异,如果学会一点就固步自封也难免落后于时代,所以希望诸位与我都能保持住终身学习的态度,在路上勉力前行。
我会持续关注ai相关的发展,并发布一些感想和心得。另外我也会ddd(领域驱动模型)和ai绘画感兴趣,近期应该会有新的文章发表。
扫一扫关注我的公众号,或者搜 十一呓语 ,我们一同在新时代前行。