1. 什么是Prompt?
了解 Prompt定义、Prompt engineering定义、Prompt的使用场景。
2. 清晰明确的指令
写好Prompt最核心的原则是尽可能清晰、明确地表达自己的需求。
假设我们有一个任务:我现在要去天津旅游,想要GLM-4给我一份旅游攻略
第一步:说清楚:大语言模型没有办法洞察用户的内心,所以要确保Prompt能够清晰明确地表达意图。
第二步:做强调:可以重点突出我们想去的地方,对一些我们希望固定输出的内容进行强调,或者输入一些细节。
第三步:定人设:可以给大模型预设定一个人设,假设它是某个相对应场景非常专业的人士,这样子可以使得输出的结果更加精确。
第四步:追问细节:目前大多数模型都有长记忆的回答功能,我们可以根据它的回答在细节上进行追问。
3. 增加样本提示
(1)零样本提示(Zero-Shot Prompt)
零样本提示是最简单的提示词结构,上述例子讲解的都是零样本提示的编写规则,只需要尽量清晰地描述任务。
(2)单样本提示(One-Shot Prompt)
在Prompt中除尽量清晰地描述任务外,添加一个示例样本(加入一个示例的输入和输出对)。这些样本可以用来引导模型模仿特定的行为和语言风格。
(3)少样本提示(Few-Shot Prompt)
顾名思义,就是在Prompt中添加几个样本提示,即加入两个及以上几个示例的输入和输出对,对于更复杂的任务,可以添加多个示例。
4. 善用分隔符
使用分隔符标示不同的输入部分,使用清晰的提示语法(包括标点符号、标题和节标记)有助于传达意图,并且通常使输出更易于解析。
5. 思维链提示
要求模型分步骤解答问题,还要求其展示其推理过程的每个步骤。通过这种方式,可以减少不准确结果的可能性,并使用户更容易评估模型的响应。
6. 撰写优质Prompt的原则总结
撰写优质Prompt最核心的原则就是尽可能清晰、明确地表达自己的需求(类比产品经理向程序员提需求)。细分下来,具体原则包括:
- 清晰的指令
- 提供上下文和例子
- 善用符号和语法
- 让模型一步一步地思考
- 激励模型反思和给出思路
- 给容错空间
- 让模型给出信息来源
任务实现
1. 什么是Prompt?
Prompt定义:涉及传递给语言模型,以及实现所需任务的指令和上下文,驱动大模型进行图文表达的文本描述。
Prompt engineering定义:是一项通过优化提示词和生成策略,从而获得更好的模型返回结果的技术。
Prompt的使用场景:主要分为语言对话和文生图两种常见类别。如下图所示:
文心一格:文生图 Prompt:“请以刺猬形象为原型,生成一个企业IP形象”
文心一言:文生文 Prompt:“请帮我写一首关于夏天的七言绝句”
2. 清晰明确的指令
写好Prompt最核心的原则是尽可能清晰、明确地表达自己的需求。
假设我们有一个任务:我现在要去天津旅游,想要GLM-4给我一份旅游攻略
第一步:说清楚:大语言模型没有办法洞察用户的内心,所以要确保Prompt能够清晰明确地表达意图。Prompt="给我一份去天津三天两晚的旅游攻略"。
第二步:做强调:可以重点突出我们想去的地方,对一些我们希望固定输出的内容进行强调,或者输入一些细节。Prompt="给我一份去天津三天两晚的旅游攻略,我特别想去看大爷跳水和吃煎饼果子"。
第三步:定人设:可以给大模型预设定一个人设,假设它是某个相对应场景非常专业的人士,这样子可以使得输出的结果更加精确。Prompt="你是有10年资历的携程旅行资深规划师,拥有给2000名私人用户进行短程旅游的规划经验,行程的规划更加细致,现在给我一份去天津三天两晚的旅游攻略,我特别想去看大爷跳水和吃煎饼果子"。
第四步:追问细节:目前大多数模型都有长记忆的回答功能,我们可以根据它的回答在细节上进行追问。Prompt=“五大道是一个错综复杂的地方,请给我设计一条路线以便我能够在3个小时之内游览完整个五大道的景点”。
优秀的Prompt=清晰性+强调具体性+目标导向的问题+赋予角色+适当的上下文
“你是有10年资历的携程旅行资深规划师,拥有给2000名私人用户进行短程旅游的规划经验,行程的规划更加细致,现在给我一份去天津三天两晚的旅游攻略,我特别想去看大爷跳水和吃煎饼果子。五大道是一个错综复杂的地方,请给我设计一条路线以便我能够在3个小时之内游览完整个五大道的景点。
3. 增加样本提示
(1)零样本提示(Zero-Shot Prompt)
零样本提示是最简单的提示词结构,上述例子讲解的都是零样本提示的编写规则,只需要尽量清晰地描述任务。
(2)单样本提示(One-Shot Prompt)
在Prompt中除尽量清晰地描述任务外,添加一个示例样本(加入一个示例的输入和输出对)。这些样本可以用来引导模型模仿特定的行为和语言风格。如输入:
“whatpu” 是一种生长在坦桑尼亚的小型毛茸茸的动物。使用 whatpu 这个词的一个例子是:
我们在非洲旅行,看到了这些非常可爱的 whatpu。
“farduddle” 的意思是快速跳跃。使用 farduddle 这个词的一个例子是:
下图是使用文心一言生成的示例,可以看到,通过仅提供一个例子,模型已经学会了如何执行任务:
(3)少样本提示(Few-Shot Prompt)
顾名思义,就是在Prompt中添加几个样本提示,即加入两个及以上几个示例的输入和输出对,对于更复杂的任务,可以添加多个示例。如输入:
模仿以下风格
1、三杯鸡在锅中欢跃,是岁月的篝火,是浪漫的乐章。
2、炖排骨的滋味,是冬日的棉被,是乡土的回响。
3、红烧勤鱼的鲜香,是海洋的密语,是大海的情书。
生成新的句子。
下图是使用文心一言生成的示例:
4. 善用分隔符
使用分隔符标示不同的输入部分,使用清晰的提示语法(包括标点符号、标题和节标记)有助于传达意图,并且通常使输出更易于解析。
如下面的例子,在信息源之间添加了分隔符""",此外,章节标题或特殊变量以大写形式呈现以区分它们。
您将阅读一篇新闻,然后给这篇新闻取一个标题。
"""
5月份,全国规模以上工业增加值同比增长5.6%,环比增长0.30%。分三大门类看,采矿业增加值同比增长3.6%,制造业增长6.0%,电力、热力、燃气及水生产和供应业增长4.3%。装备制造业增加值增长7.5%,高技术制造业增加值增长10.0%,增速分别快于全部规模以上工业1.9和4.4个百分点。分经济类型看,国有控股企业增加值增长3.6%;股份制企业增长6.4%,外商及港澳台投资企业增长2.5%;私营企业增长5.9%。分产品看,3D打印设备、新能源汽车、集成电路产品产量同比分别增长36.3%、33.6%、17.3%。1-5月份,全国规模以上工业增加值同比增长6.2%。5月份,制造业采购经理指数为49.5%,企业生产经营活动预期指数为54.3%。1-4月份,全国规模以上工业企业实现利润总额20947亿元,同比增长4.3%。
"""
下图是使用文心一言生成的结果:
5. 思维链提示
要求模型分步骤解答问题,还要求其展示其推理过程的每个步骤。通过这种方式,可以减少不准确结果的可能性,并使用户更容易评估模型的响应。
作为一个 AI 助手,你的任务是帮助用户解决复杂的数学问题。对于每个问题,你需要首先独立解决它,然后比较和评估用户的答案,并最终提供反馈。在这个过程中,请展示你的每一步推理过程。我有一个数学问题需要帮助:"""问题是:一个农场有鸡和牛共 35 头,脚总共有 94 只。鸡和牛各有多少头?我的答案是鸡有 23 只,牛有 12 头"""。
下图是来自文心一言的回答,可以看到其分步骤解答了问题,且答案也是正确的。
6. 撰写优质Prompt的原则总结
撰写优质Prompt最核心的原则就是尽可能清晰、明确地表达自己的需求(类比产品经理向程序员提需求)。细分下来,具体原则包括:
- 清晰的指令:足够清晰明确地说明希望模型为你返回什么,最后更加细致地说明需求,避免模糊表达。
- 提供上下文和例子:给出较为充分的上下文信息,让模型更好地理解相关背景。如果能够提供示例,模型能表现更好(类似传统LLM中的in-context learning)。
- 善用符号和语法:使用清晰的标点符号,标题,标记有助于转达意图,并使输出更加容易被解析
- 让模型一步一步地思考:在这种方法中,模型逐步进行思考,并呈现出涉及的步骤,这样做可以降低结果的不准确的可能性,并对模型响应的可解释性有很大的帮助。
- 激励模型反思和给出思路:可以在prompt中用一些措辞激励模型给出理由,这样有助于我们更好地分析模型生成结果,同时,思维过程的生成,也有助于其生成更高质量的结果。
- 给容错空间:如模型无法完成指定的任务,给模型提供一个备用路径,比如针对文本提问,可以加入如果答案不存在,则回复“无答案”
- 让模型给出信息来源:在模型结合搜索或者外部知识库时,要求模型提供他的答案的信息来源,可以帮助LLM的答案减少捏造,并获取到最新的信息。