1、什么是提示词?
提示词(Prompt)是用户发送给大语言模型的问题、指令或请求,用来明确地告诉模型用户想要解决的问题或完成的任务,是大语言模型理解用户需求并据此生成相关、准确回答或内容的基础。对于大语言模型来说,提示词就是用户输入给大语言模型的文本信息。
下面我们来看一个对大模型提问的示例:
> 请结合《哪吒之魔童降世》整个系列评价最近刚刚上映的电影《哪吒之魔童闹海》
--------------------------------------------------------------------------------------------
《哪吒之魔童闹海》作为《哪吒之魔童降世》的续集,延续了前作的高热度与票房神话,但其叙事内核、技术表现和文化表达均展现出新的突破与争议。结合系列整体来看,这两部作品共同构建了一个兼具现代性与传统神话重述的“哪吒宇宙”,同时也在主题、风格和市场定位上形成鲜明对比。以下从多个维度展开分析:
1. 叙事与主题的演变:从个体抗争到群体觉醒
《魔童降世》的核心:聚焦哪吒的“自我救赎”,通过“我命由我不由天”的呐喊,探讨个体如何突破偏见与宿命。影片以亲情为纽带,将传统哪吒故事中父子对抗的悲剧改写为家庭共同对抗天命,强调“爱”对成长的救赎作用148。
《魔童闹海》的拓展:续集将矛盾从个体命运转向更宏大的权力结构。哪吒不仅要对抗“魔丸”身份,还需挑战仙族权威(如无量仙翁),甚至联合被压迫的妖族与龙族,形成群体反抗。影片通过“若天地不容,我便扭转乾坤”的豪情,试图展现年轻人对旧秩序的颠覆4711。但部分观众认为,这种反抗因缺乏前作严密的因果逻辑,显得较为浮于表面
我们看到大模型对我们的提问做出了详细的回答,如何向大模型提问以获得更好的回答是有技巧而不是随意向大模型提问的,接下来学习这些提示词技巧。
2、提示词技巧
常用的有:直接提问、增加示例、分配角色、限定输出风格和格式(撰写论文、文章等),拆解复杂任务(数学计算等),使用分隔符号区分单元。
2.1 直接提问
直接提问方式,也称为零样本提示(Zero-Shot Prompting),即不给大语言模型提供案例,完全依靠 LLM 理解和处理能力完成任务。前文给的提示词例子,都属于直接提问。目前大部分开源和商用的大语言模型已经经过了大量的预训练和指令调试,能够很好的理解并响应用户的直接提问。适用于目标明确、问题简单、答案确定且唯一等场景。
直接提问时,可遵循以下原则:
● 简洁:尽量用最简短的方式表达问题。过于冗长的问题可能包含多余的信息,导致模型理解错误或答非所问。
● 具体:避免抽象的问题,确保问题是具体的,不含糊。
● 详细上下文:如果问题涉及特定上下文或背景信息,要提供足够的详情以帮助模型理解,即使是直接提问也不例外。
● 避免歧义:如果一个词或短语可能有多重含义,要么明确其含义,要么重新表述以消除歧义。
● 逻辑清晰:问题应逻辑连贯,避免出现逻辑上的混淆或矛盾,这样才能促使模型提供有意义的回答。
为大语言模型提供如下不同的提示词,得到的答案质量会有明显差距。
不好的提示词 | 好的提示词 |
提示词: 苹果好看吗? | 提示词: 这批红色的苹果水果外观怎么样,新鲜吗 |
输出: 不好意思,我不清楚你所指的“苹果”具体指的是什么, 水果还是电子设备。 | 输出: 新鲜。 |
然而,大语言模型给出的答案有时候也不是固定的,直接提问效果在很大程度上取决于所使用的模型的理解能力和泛化能力,它无法很好地处理复杂、模糊或多义性的问题,当需要较深入的背景知识或分析时,可能无法准确了解用户的真正意图。我们可以尝试在提示词中增加示例样本、分配角色、提示写作风格/输出格式或构建思维链和思维树拆解复杂任务等方式解决。
2.2 增加示例
在提示词中提供少量(通常几个或几十个)示例,也称为少样本提示(Few-Shot Prompting),以帮助模型更好地理解任务要求和期望输出。比如:
-
让 LLM 跟随我们所要求的规范、格式、概念、文法、语气进行输出。
-
提供进一步推理的参考,比如让大模型学会数学运算或按照示例方式进行逻辑推理。
以下示例中,我们分别在提示词中增加示例和不增加示例,就会得到以下不
未增加示例 | 增加示例 |
提示词: 任务:请根据以下电影评论,判断其情感评价(正面、负面或中性)。 待分类评论:这部电影音乐动人,但剧情略显平淡。 | 提示词: 要求:请根据以下电影评论,判断其情感评价(正面、负面或中性)。 示例1:这部电影剧情引人入胜,但特效炸裂。情感评价:正面 示例2:虽然这部电影剧情单调,但特效却非常炸裂。情感评价:负面+正面 示例3:这部电影不好不坏。情感评价:中性 待分类评论:这部电影音乐动人,但剧情略显平淡。 |
输出: 情感评价:中性 | 输出: 情感评价:正面+负面 解释:评论中提到“音乐动人”属于正面评价,表明了对电影音乐部分的喜爱和赞赏。然而,紧接着的“但剧情略显平淡”则为负面评价,表达了对电影剧情的不满或失望。因此,整体评价是正面和负面情感的混合。 |
在英文缩写比较多的专业技术文档翻译场景,我们可以尽可能地为 LLM 提供一些缩写的翻译示例,然后再让 LLM 完成后续的翻译工作:
值得一提的是,这种方式比较适合翻译量不大,且示例的数量可穷举的场景,可以轻量、快速地完成翻译工作。但是当需要成千上万的专业术语词条示例辅助翻译的场景,这种方式就不够了,也不够方便,我们可以让大语言模型接入专业的术语库,来增强大语言模型的能力,也即检索增强生成(Retrieval-Augmented Generation),简称RAG。
示例的质量和数量会直接影响回答的结果,增加示例时可参考以下技巧:
-
精选代表性样本:选择具有代表性的示例,覆盖任务的各种情况,同时避免使用可能引起模型混淆的极端或边缘案例,确保模型能从有限的数据中学习到任务的核心特征。
-
保证示例的多样性:尽可能覆盖任务的各种角度和情境,确保模型能从有限的数据中学习到任务的核心特征。
-
使用相似的格式和结构:在所有示例中使用相似的提示格式和结构,使模型能够清晰识别输入与输出的关系。
-
让大语言模型生成示例:实践时,我们还可以先让 LLM 按照提示生成一些示例,再进行筛选或人工调整,以提高示例质量和针对性。
2.3 分配角色
我们赋予模型一个具体的角色或身份,如“作为经验丰富的经济师”,来引导模型在特定角色视角下生成回答。
分配角色适用以下场景:
-
需要专业知识或特定视角的问题解答。例如,模拟老师、医生、律师等回答相关领域的问题。
-
模拟特定人物或角色的语言风格。例如,模仿某个著名人物(如历史人物或文学角色)语言风格的文本时。
-
进行角色扮演游戏或创作。在创意写作或角色扮演游戏中扮演指定的角色,与使用者进行互动。
-
在特定行业内进行决策模拟。例如,模拟一个管理咨询师来分析商业案例或提供商业建议。
下面的例子中,让大语言模型分别扮演酒店评论家和小学生,来执行“酒店评价”的任务,从而得到不同风格的答案。
未增加角色 | 加A角色 | 增加B角色 |
提示词: 请对刚入住的酒店进行评价。 | 提示词: 你是一名酒店评论家,请对刚入住的酒店进行评价。 | 提示词: 你是一名刚上小学的学生,请对训练营入住的酒店进行评价。 |
输出: 刚入住的这家酒店给我留下了深刻的印象,整体体验非常满意。 | 输出: 我对刚入住的这家酒店进行了全方位的考察与体验,现就其各项服务与设施作出如下评价: 位置与周边环境:该酒店位于城市中心地带... 建筑与设计:酒店建筑风格独特,融合了... 服务质量:酒店员工专业素养极高,从接待到... 餐饮设施:酒店内设有多家风格各异的餐厅... 休闲与健身设施:酒店配备完善的休闲与健身... 环保与社会责任:酒店在运营过程中展现出... 综上所述,这家酒店凭借其优越的地理位置、独具匠心的设计、卓越的服务质量、丰富的餐饮选择、完善的休闲设施以及对环保与社会责任的积极践行,为宾客打造了一处兼具舒适性、便利性与文化内涵的高品质下榻之 | 输出: 嗨,我是刚上小学的小朋友,参加了这个训练营,现在我要来分享一下我住的酒店怎么样! 房间超酷!:哇哦,我的房间就像一个小城堡!... 好吃的食物:酒店的饭菜超级好吃!... 好玩的地方:酒店里有个大大的游戏室... 友好的叔叔阿姨:酒店的叔叔阿姨们都对我很好... 安全又干净:酒店到处都很干净,地板亮晶晶的... 总的来说,我非常喜欢这个训练营入住的酒店,它像一个充满乐趣的大乐园,让我在学习之余还能尽情玩耍,享受到家一般的温馨和舒适。如果下次还有训练营,我一定还想再来这里住! |
分配角色引导模型生成符合特定情境和对话逻辑的内容,可遵循以下技巧:
-
明确角色身份与特性
-
确定角色的基本属性,如年龄、性别、职业、性格、技能、价值观等。
-
赋予角色相关领域的专业知识或特殊背景,如专家、学者、历史人物、虚构角色等。
-
-
设定角色目标与动机
-
为角色设定对话的目标,如寻求信息、说服他人、解决问题、分享观点等。
-
揭示角色的内在动机,如个人利益、道德信念、情感需求等,有助于塑造角色的真实性和深度。
-
-
设定角色语言风格:
-
根据角色性格、教育水平、文化背景等设定其语言习惯、用词选择、句式结构、口头禅等。
-
规定角色在对话中的情绪状态,如冷静理智、激动愤怒、悲伤失落、幽默风趣等,影响其表达方式。
-
-
设定角色规则约束:规定角色在对话中的行为约束,如不得人身攻击、保持礼貌尊重、遵守讨论主题等。
-
动态调整角色设定:
-
随着对话深入,适时调整角色设定以适应新的情境和话题,如角色态度转变、关系演变、目标更新等。
-
向模型反馈角色表现,如偏离设定、缺乏个性、对话僵化等,及时修正角色设定并引导模型调整。
-
2.4 限定输出风格/格式
大语言模型尤其善于撰写论文、文章等内容,不过如果我们仅仅简单地告诉大语言模型一些宽泛的提示,比如:
提示词:写一篇关于桥的文章
输出:桥是一种用来跨越障碍的大型构造物,一般会指架设在江河湖海上,使车辆行人等能顺利通行的构筑物。桥梁主要由桥跨结构、墩台、基础三大部分组成,桥跨结构也称上部结构包括承重结构及桥面系,墩台也叫下部结构包括桥墩、桥台等,基础主要是指桩基础。
大语言模型有可能会生成枯燥、平淡、空洞的内容,这些内容往往与我们期望的结果有较大的出入。
我们可以在提示词中增加“风格”的限定,比如当我们明确需要大语言模型帮我们写一篇幽默的简短小说,就可以尝试将上面的提示词改写为如下形式:
提示词:写一篇关于桥的短篇小说,要求叙事风格诙谐幽默
输出:【桥的另类日记】
在这个名为“平凡镇”的小镇上,有一座并不怎么平凡的桥,名叫“哈欠桥”。别误会,它并不爱打哈欠,只是建成之日,镇长在揭幕仪式上打了个大大的哈欠,从此这名字就像粘了强力胶,甩都甩不掉。
哈欠桥自述:“我今年102岁了,按照桥的年龄来说,正值壮年。每天看着小镇的人来人往,我就跟个八卦中心似的,什么秘密都逃不过我的‘桥眼’。”......
为了更好的限定“风格”,准确引导模型写出符合需求的内容,下面我们介绍一些推荐的技巧:
-
明确指出所需的内容类型:如“论文/散文/诗歌/新闻报道/剧本/日记”等。
-
用形容词限定风格:如“严谨客观”、“感性抒情”、“幽默诙谐”、“庄重典雅”等。
-
列举风格(代表人物/作品)示例:如“仿照鲁迅先生的笔触描述社会现象”或“以J.K.罗琳的叙述风格撰写一段奇幻冒险故事”。
-
设定语境与情感色彩:为模型设定故事背景、情感基调或角色视角,影响其语言表达和修辞选择,从而形成特定风格。如“以一名二战老兵的视角,深情回忆战场经历”。
-
规定语言与句式特点:要求使用特定词汇、短语、成语、俚语、古语等,或强调长句、短句、排比、反问、比喻等修辞手法的运用,以契合特定风格。
2.5 拆解复杂任务
我们把一个复杂的任务,拆解成多个稍微简单的任务,常用于数学计算,让大语言模型分步来思考问题,称为思维链(Chain-of-Thought Prompting, CoT)提示,这种方式可让大语言模型像人类一样逐步解释或进行推理,从而极大地提升 LLM 的能力。与前面介绍的标准提示不同,该方法不仅寻求答案,还要求模型解释其得出答案的步骤。
下图展示了标准提示与思维链提示的对比。
标准提示 | 思维链提示 |
提示词: 小明有20个苹果,吃了两个,又买了5个,小明现在一共有多少苹果? | 提示词: 小明有20个苹果,吃了两个,又买了5个,小明现在一共有多少苹果,通过思维链CoT的方式来分析 |
输出: 27 | 输出: 小明现在一共有23个苹果。 **思维链分析(CoT)**: 2. **消耗行为**: 3. **增量行为**: 4. **逻辑验证**: **结论**:通过分步推导与双向验证,小明当前共有 23 个苹果。 |
使用标准提示只给出了答案,而且答案明显是错误的。而思维链提示会展开推理过程,通常通过思维链提示的方式会产生更为准确和可校验的结果。
上面思维链提示中没有给 LLM 提供问题解析示例,所以也可以称为零样本思维链(Zero-shot CoT),相对应地在增加了示例后就变成了少样本思维链(Few-shot Cot)。
零样本思维链 Zero-shot CoT | 少样本思维链 Few-shot CoT |
提示词: 小宝有三盒糖果,每盒糖果有10颗糖,小宝一共有多少颗糖果? 答案:给出逐步思考过程 | 提示词: 问题:小宝有三盒糖果,每盒糖果有10颗糖,小宝一共有多少颗糖果? 答案:小宝有三盒糖果,每盒糖果有10颗,那么他一共有的糖果数量就是: 3盒 × 10颗/盒 = 30颗,小宝一共有30颗糖果。 问题:小明有20个苹果,吃了2个苹果,又买了5个苹果,小明一共有多少颗苹果? 答案:给出逐步思考过程 |
输出: 小宝有三盒糖果,每盒糖果有10颗,那么他一共有的糖果数量就是: 3盒 × 10颗/盒 = 30颗 答案:小宝一共有30颗糖果。 | 输出: 小明原本有20个苹果,吃了2个,所以剩下: 20个 - 2个 = 18个 接着他又买了5个苹果,那么他现在总共有: 18个 + 5个 = 23个 答案:小明一共有23个苹果。 |
有时 LLM 通过零样本思维链可能会得到错误的答案,可以通过增加示例的方式,即少样本思维链,帮助 LLM 理解相关任务并正确执行,如下面的例子中,明显在使用零样本思维链来分析问题后还是获得了错误的答案:
除了思维链,启发 LLM 进行“思考”的实用方法还有提示链(Prompt Chaining)。提示链通过多轮对话,引导 LLM “思考” 方向,让 LLM 从简单任务开始,沿着设计好的“思考”方向逐步完成一个复杂推理。
提示链虽然相对思维链来说构建模式更加复杂,但模型表现更好,准确率更高。它非常适合逻辑复杂但能按照固定模式拆解的困难任务。
我们继续通过一道数学题来实现提示链(Prompt Chaining)引导:
又到了周日,小明像以往一样去爷爷奶奶家玩,小明于早上八点整步行出发,已知小明每分钟行走50米,走了12分钟后,小明的父亲发现小明忘记带作业了,于是便骑车去追小明,已知小明的爸爸每分钟骑行200米,等到追上小明后,爸爸决定骑车带上小明,已知小明坐自行车的路程是走路路程的5倍,请问,小明和他爸爸几点到爷爷家的呢?(小明8点36分到爷爷家)
第一轮输入(数学题 + 第一个简单问题):
#背景#
又到了周日,小明像以往一样去爷爷奶奶家玩,小明于早上八点整步行出发,已知小明每分钟行走50米,
走了12分钟后,小明的父亲发现小明忘记带作业了,于是便骑车去追小明,已知小明的爸爸每分钟骑行200米,
等到追上小明后,爸爸决定骑车带上小明,已知小明坐自行车的路程是走路路程的5倍,#目的#
计算小明什么时候被他爸爸追上,追上时走了多远?
Output 1(LLM 对第一个简单问题的回答):
首先,我们计算小明在被父亲追上之前走了多远。
小明的速度是每分钟50米,他已经走了12分钟,因此他已经走过的距离是:
50 米/分钟 × 12 分钟 = 600 米
接下来,我们计算父亲开始追赶小明时两者的相对速度。父亲的骑行速度是每分钟200米,而小明继续以每分钟50米的速度步行。因此,父亲相对于小明的速度是:
200 米/分钟 − 50 米/分钟 = 150 米/分钟
为了追上小明,父亲需要覆盖小明最初12分钟所行走的600米距离。以150米/分钟的相对速度,父亲追上小明所需的时间是:
600 米 / 150 米/分钟 = 4 分钟
这意味着父亲在开始追赶后的4分钟追上了小明,从父亲开始追赶算起,总共用了12分钟(小明已经走了的时间)+ 4分钟(父亲追赶的时间)= 16分钟。
现在,我们要计算小明被追上时共走了多远。小明在最初的12分钟内走了600米,从父亲开始追赶的4分钟里,小明又走了:
50 米/分钟 × 4 分钟 = 200 米
所以,小明被追上时总共走了:
600 米 + 200 米 = 800 米
综上所述,小明在早上8点16分被他爸爸追上,此时他已经走了800米。
第二轮输入(第二个问题,问题逐渐深入):
#目的#
计算小明还要坐多远自行车才能到爷爷家?
Output 2(LLM 对第二个问题的回答):
根据题目,小明坐自行车的路程是他走路路程的5倍。小明被追上时已经走了800米,那么他坐自行车的路程将是:
800 米 × 5 = 4000 米
第三轮输入(最后的复杂问题):
#目的#
小明什么时候到爷爷家?
Output 3(通过前面多个问题的引导得到了正确的结果):
要计算小明什么时候到爷爷家,我们需先确定小明坐上自行车后的行进时间。
小明坐自行车的总路程是4000米,他父亲的骑行速度是每分钟200米。因此,小明坐自行车所需的时间是:
4000 米 / 200 米/分钟 = 20 分钟
小明从出发到被追上已经过去了16分钟(即8:00出发,8:16被追上),加上坐自行车的20分钟,总共用时为:
16 分钟 + 20 分钟 = 36 分钟
所以,小明在早上8点出发后,将在36分钟后到达爷爷家,即:
8:00 AM + 36 分钟 = 8:36 AM
因此,小明将在上午8点36分到达爷爷家。
引导大模型“思考”的方法还有很多种,比如:思维树(Tree of Thoughts, ToT)、Boosting of Thoughts 等。我们不在这里一一展开。
2.6 使用分隔符号区分单元
我们在构建复杂的提示词时,采用特定的分隔符来界定不同内容单元是极为关键的,这一做法显著增强了 大模型对提示词正确解析的能力。随着任务复杂度的增加,合理利用分隔符越能提升大模型的表现能力。
分隔符的选择应着眼于那些在自然语言文本中罕见的、独特的字符组合,例如:###、===、>>>等。这些特殊符号序列并无固定规则,关键在于其辨识度高,确保模型能够明确区分这些符号是作为内容区域的界限标识,而非文本中的普通标点或语法组成部分。
未使用分隔符 | 使用分隔符 | |
Prompt | 请简短总结以下影评。 曾经意气风发的张志强在生活的重压下,中年“失速”偏离了原本的生活轨迹,一时意气用事的决定,让他瞬间从家人的“小骄傲”变成了社会的“边角料”。然而,他未曾料到,这仅是他中年人生道路上的起点。接连不断的变故如疾风骤雨般袭来,迫使他不得不重新面对自我。当生活的重担真正压肩,他选择成为一名快递员,从新的起点重新出发,穿梭于都市大街小巷的高志垒在路上结识了一众志同道合的伙伴。在共度的时光里他深切的体会到了人间的冷暖真情,逐渐在这条充满磨砺的“逆行道”中找回曾经丢失的勇气与信念,重新定义人生新的方向 | 请简短总结以下影评。 ### 曾经意气风发的张志强在生活的重压下,中年“失速”偏离了原本的生活轨迹,一时意气用事的决定,让他瞬间从家人的“小骄傲”变成了社会的“边角料”。 ### 然而,他未曾料到,这仅是他中年人生道路上的起点。接连不断的变故如疾风骤雨般袭来,迫使他不得不重新面对自我。 当生活的重担真正压肩,他选择成为一名快递员,从新的起点重新出发,穿梭于都市大街小巷的高志垒在路上结识了一众志同道合的伙伴。 ### 在共度的时光里他深切的体会到了人间的冷暖真情,逐渐在这条充满磨砺的“逆行道”中找回曾经丢失的勇气与信念,重新定义人生新的方向。 ### |
输出 | 电影讲述了一个中年危机故事,主角张志强因生活压力偏离正常生活轨道,经历一系列挑战后,他成为一名快递员,在新朋友的帮助下重拾勇气与信念,找到了生活的新方向。影片展现了逆境中的成长与自我救赎。 | 主人公张志强中年遭遇生活困境,一次冲动的决定使他的社会地位骤降。 随后,面对重重挑战,他担任快递员重新起步,在此过程中与同行建立深厚情谊,并在磨难中找回勇气和信念。 最终,在艰难和挑战中,为自己的人生找到了新的意义和方向。 |
你可以在输出中发现明显差别,在使用了分隔符的输出中,大模型不仅理解了三段话的逻辑关系,还正确识别了分隔符,并根据分隔符的段落生成了三段强相关的总结。