提示词高阶技巧

深呼吸

谷歌团队研究发现,提示词加上神秘咒语 “深呼吸(take a deep breath)” 结合大家已经熟悉的 “一步一步地想”(Let' s think step by step)”,大模型在数据集上的成绩就提升了 12%。而且这个最有效的提示词,是 AI 自己找出来的。

谷歌团队论文-大语言模型的自我优化:https://arxiv.org/pdf/2309.03409.pdf

假设你想让大语言模型帮助解决一道复杂的数学逻辑推理题,比如 “一个村子里有 50 户人家,每家都养了一只狗。现在发现村子里出现了 n 只疯狗,村里规定,谁要是发现了自己的狗是疯狗,就要将自己的狗枪毙。但问题是,村子里的人只能看出别人家的狗是不是疯狗,而不能看出自己的狗是不是疯狗。第一天晚上,没有枪声;第二天晚上,没有枪声;第三天晚上,响起了枪声。请问村子里有几只疯狗?”。

根据谷歌团队 “深呼吸” 的技巧,提示词前可以加上 “深呼吸”,提示词后可以加上 “一步一步地想”。

Prompt 示例:

深呼吸,一个村子里有 50 户人家,每家都养了一只狗。现在发现村子里出现了 n 只疯狗,村里规定,谁要是发现了自己的狗是疯狗,就要将自己的狗枪毙。但问题是,村子里的人只能看出别人家的狗是不是疯狗,而不能看出自己的狗是不是疯狗。第一天晚上,没有枪声;第二天晚上,没有枪声;第三天晚上,响起了枪声。请问村子里有几只疯狗?一步一步地想。

自我暗示

⼤模型通过学习⼤量的⽂本数据,掌握了各种表达⽅式和语⾔风格,通过在提示词中加⼊⼀些暗示性的语句,可以激活模型中相关的知识和模式,从⽽影响其输出。

自我暗示可以更微妙地影响模型的输出,使其更符合⽤户的期望。避免了直接命令可能导致的⽣硬和不⾃然,但是⾃我暗示法并⾮总是有效,其效果取决于模型的训练数据和任务的性质,过度的暗示可能会导致输出过于单⼀或缺乏创新。

Prompt 示例:

请⽤充满想象⼒的语⾔,描述⼀个未来世界的场景。

给予奖励

通过提示词设计,引导模型⽣成 “好的” 输出,避免 “坏的” 输出,从⽽间接地 “奖励” 模型。

在设计提示词时,清晰指令 + 上下文本身就是种 “奖励”,设定约束条件就是种 “惩罚”,提供示例就是 “给予奖励的类型和模板”。

Prompt 示例:

请写一篇关于环保的宣传文案。
比如之前有一篇成功的宣传文案是这样写的:“在我们的校园里,有一位同学每天都会收集自己宿舍的可回收垃圾,然后分类整理好拿去回收。他不仅自己做到了环保,还带动了身边的室友一起参与。在一个月内,他们宿舍的垃圾排放量减少了一半,还通过卖可回收垃圾攒下了一笔小小的资金用于购买绿植装扮宿舍。”
你可以参考这种以个人实际行动和成果来展现环保意义的方式进行创作。

COT 思维链

COT(Chain-of-Thought Prompting)即思维链提示,是将一个复杂问题分解为多个中间步骤,每个步骤都代表着推理过程中的一个逻辑环节,通过一系列中间推理步骤来得出最终答案,而不是直接从问题跳到答案。

传统的提示词通常直接要求模型给出答案,⽽思维链则引导模型逐步展示其推理过程,就像⼈类在解决问题时⼀步⼀步地思考⼀样,通过在提示词中加⼊“让我们⼀步⼀步地思考”、“⾸先...然后...最后...” 等引导语,或者提供⼀些中间步骤的示例,可以显著提⾼模型在复杂推理任务中的表现。

COT 思维链的优势:

  • 提⾼复杂推理任务的准确性:通过显式化推理过程,模型可以更好地捕捉问题中的逻辑关系,减少错误。
  • 增强模型的可解释性:思维链使得模型的推理过程更加透明,有助于理解模型是如何得出结论的。
  • 促进模型的泛化能⼒:通过学习推理模式,模型可以更好地应⽤于新的、未见过的问题。
  • ......

Prompt 示例:

五年级⼀中队和⼆中队要去春游。⼀中队步⾏,速度为每⼩时4千⽶;⼆中队骑⾃⾏⻋,速度为每⼩时
12千⽶。⼀中队出发2⼩时后,⼆中队再出发。
1、计算在⼆中队出发时,即⼀中队出发2⼩时后,⼀中队已经⾏进的距离。
2、计算⼆中队和⼀中队的速度差。
3、根据两个中队之间的距离差和速度差,计算⼆中队⽤多⻓时间能追上⼀中队。

TOT 思维树

TOT(Tree-of-Thought Prompting)即思维树提示,是对 COT 思维链提示的进一步拓展,TOT 通过构建一个树状结构来探索不同的思维路径,将复杂问题分解为多个思维步骤,引导 AI 逐步探索和解决问题,从而找到最优解决方案,特别适用于需要多步推理、创造性思维和决策等场景。

TOT 思维树的优势:

  • 更全面的搜索:能够探索多种可能的推理路径,避免陷入局部最优解,增加找到全局最优解的概率。
  • 适应复杂问题:对于具有多个解决方案或需要多步决策的复杂问题,TOT 的树状结构可以更好地组织推理过程,提高问题解决的效率和准确性。
  • ......

第一轮 Prompt 示例:

接下来,请你同时扮演四个⻆⾊,分别是⼩学物理⽼师、初中物理⽼师、⾼中物理⽼师、物理专家。
每个⼈的教学模式、解题⽅法都是不同的。
下⾯,他们在讨论这个问题:“在⼀个晴朗的⽇⼦⾥,⼩明站在湖边,向平静的湖⾯扔出⼀颗⽯⼦,⽯⼦落⼊⽔中后,激起⼀圈圈圆形的⽔波向外传播。请描述⽔波的形成过程以及⽔波传播过程中能量的变化情况。”
请⼩初⾼三位物理⽼师发表他们的解决思路和答案,物理专家不发表。

第二轮 Prompt 示例:

我们追求简单的解题⽅法,接下来请物理专家出场,评估哪个⽼师的⽅法最简单。

少样本学习

⼤模型通常需要⼤量的训练数据才能在新任务上表现良好,⽽少样本学习则通过在提示词中提供少量的示例(通常是⼏个到⼗⼏个),让模型快速学习并适应新任务,⽆需重新训练模型。

少样本学习的优势:

  • 降低模型训练成本:⽆需⼤量的标注数据和计算资源。
  • 提⾼模型适应性:可以快速应⽤于各种新任务,⽆需针对每个任务进⾏单独训练。
  • 增强模型的灵活性:可以根据实际需求,动态调整示例,以改变模型的⾏为。
  • ......

Prompt 示例:

任务:对给定的短文本进行情感分类(积极、消极、中性)。

示例:
输入:“这部电影真的太棒了,剧情紧凑,演员演技也超赞!”
输出:积极
输入:“这家餐厅的服务态度很差,食物也不好吃。”
输出:消极
输入:“今天天气还不错,温度适中。”
输出:中性

请根据上述示例,对以下文本进行情感分类:“这次旅行虽然有点累,但看到了很多美丽的风景,还是很值得的。”

模块化构建复杂提示词

在设计提示词时,可以将复杂的提示词分解成多个⼩的、独⽴的模块,每个模块负责控制模型的⼀个⽅⾯,如风格、格式、内容等,然后根据需要将这些模块组合起来,构建出完整的提示词。

模块化构建复杂提示词的优势:

  • 提⾼提示词的可维护性:修改和更新提示词更加⽅便,只需修改相应的模块即可。
  • 增强提示词的可复⽤性:可以将常⽤的模块保存下来,⽤于不同的任务。
  • 提⾼提示词的灵活性:可以根据需要⾃由组合模块,以实现不同的效果。
  • ......

假设现在需要⽣成⼀篇关于⼈⼯智能的科普⽂章,要求语⾔通俗易懂,篇幅约为 500 字,幷包含⼀个总结段落。

任务模块分解:

  • 主题模块:⼈⼯智能的科普介绍。
  • 风格模块: 语⾔通俗易懂,⾯向⼤众读者。
  • 长度模块: 篇幅约为 500 字。
  • 结构模块: 包含⼀个总结段落。

Prompt 示例:

请撰写⼀篇主题为“⼈⼯智能的科普介绍”的⽂章,语⾔通俗易懂,⾯向⼤众读者,篇幅约为500字,幷包含⼀个总结段落。

ReAct 推理与行动

ReAct(Reasoning and Acting,推理与行动)是一种结合了推理和行动的方法,核心思想是让语言模型在生成回答之前,先进行推理步骤,明确需要采取的行动,然后基于这些行动来获取信息或执行操作,最终得出答案。

ReAct 的关键组成部分:

  • 推理(Reasoning):模型分析问题,理解任务的要求和背景知识,确定解决问题的逻辑步骤和思路。
  • 行动(Acting):根据推理的结果,模型执行具体的操作,如查询知识库、调用外部工具、执行代码等,以获取必要的信息来回答问题。

ReAct 的优势:

  • 可解释性:由于推理和行动步骤是显式的,用户可以更容易理解模型是如何得出结论的,便于调试和改进模型。
  • 灵活性:能够处理各种不同类型的任务,因为可以根据具体任务的需求选择合适的行动。
  • 准确性:通过推理和行动的结合,模型可以更准确地获取和利用信息,提高回答的质量。
  • ......

Prompt 示例:

请你回答 “第一次世界大战爆发的直接原因是什么”。
推理:要回答这个问题,需要回顾第一次世界大战相关的历史知识,明确直接原因通常是某个具体的、引发战争爆发的事件,现有的知识储备中应包含一战爆发原因的相关内容,可直接从记忆中提取。
行动:从记忆中搜索关于第一次世界大战爆发直接原因的知识。

ReAct 推理与行动和 COT 思维链非常相似。

  • ReAct 重点在于将推理和行动相结合,推理是为了决定采取何种行动,行动则是基于推理结果去执行具体操作,如查询知识库、调用外部工具等,以获取完成任务所需信息。
  • CoT 更专注于通过生成一系列连贯的推理步骤来模拟人类的思维过程,从而引导模型得出最终答案。

Prompt Chain 提示词链

Prompt Chain(提示词链)是将一个大的任务分解为多个子任务,每个子任务由一个提示词引导,并且前一个提示词的输出作为后一个提示词的输入的一部分,形成一个链式的结构。

Prompt Chain 提示词链的优势:

  • 提高准确性:将任务细化后,模型在每个子任务上更容易处理,从而提高最终结果的准确性。
  • 增强可控性:可以通过调整每个提示词的内容和顺序,更精确地控制模型的输出,使其更符合用户的需求。
  • 处理复杂任务:能够有效应对复杂的任务场景,使模型能够处理那些原本可能超出其一次性处理能力的任务。

第一轮 Prompt 示例:

请构思一个故事的主题,主题要新颖且有趣,围绕动物展开。

第二轮 Prompt 示例:

基于“动物的平行时空之旅”主题,详细描述故事的主要角色,包括它们的种类、外貌特征和魔法能力。

第三轮 Prompt 示例:

根据前面设定的主题和角色,开始创作故事的开头部分,要求引入主要角色,并设置一个小悬念。

Prompt Tuning 提示词微调

Prompt Tuning(提示词微调)是一种轻量级的微调方法,通过调整输⼊提示Prompt 来引导模型⽣成更符合特定任务需求的输出,⽽不是直接修改模型的参数。

Prompt Tuning 在多种自然语言处理任务中都有广泛的应用,如文本分类、情感分析、命名实体识别等。在文本分类任务中可以通过优化提示来引导模型更准确地识别文本的类别,在情感分析任务中可以使用提示来帮助模型更好地捕捉文本中的情感倾向。

原始 Prompt 示例:

根据主题“海边日落”生成一段文字。

微调 Prompt 示例:

请以细腻的笔触和生动的语言,围绕主题“海边日落”,描述日落时天空的色彩变化、海面的波光粼粼以及周围环境的氛围,生成一段优美的文字。

Prompt Reverse 提示词逆向⼯程

提示词逆向⼯程是⼀种有效的⽣成 Prompt 的⽅法,通过对模型在⽣成或理解⽂本时的⾏为进⾏分析和反推,实现了⾃动⽣成适应不同任务的 Prompt。

提示词逆向即让⼤模型分析⽂本,并尝试⽣成⼀个能够产⽣类似结果的提示词,使⽤逆向⼯程可以⼤⼤提⾼ Prompt ⽣成和测试效率。

Prompt 示例:

请对下列{{⽂本}}进⾏逆向提示词⼯程,⽣成⼀个可以仿写这段⽂章的提示词。
要求:
1、需提炼⽂章的语⽓,写作⻛格,⽤词,句式等各种写作⽅⾯的要素,你可以根据写作领域的专业知
识,进⾏更多写作要素的分析。
2、逆向提示词⼯程⽣成的提示词,是要发送给⼤模型,让它能以任意主题,写出与{{⽂本}}⻛格类
似的⽂章。

⽂本=
{{{ “经我们⼩⽶的员⼯连续300个⽇夜不间断的⼤ 数据研究发现,97%的⼈类在早晨七点的时候会出现明显的饥饿感,相⽐较七点整,饥饿感整整提升了57%。为了解决这种困扰⼈类⼏千年的饥饿感,我们⼩⽶员⼯反复研究⽐对发现,⾯粉的饱腹感要⽐⼤⽶的饱腹感⾼出21%,于是我们专⻔找到了⾯粉的发源地--位于中东的新⽉沃⼟,砸重⾦研制出了⼀款迄今为⽌最有饱腹感的⾯条。那么究竟多有饱腹感呢?⽐传统的⾯条饱腹感提升了73%。我们也给它取了⼀个好听的名字,叫⼩⽶空⼼⾯。同时呢,我们还联合饮⽤⽔的⾏业巨头--农夫⼭泉,研制出了业内⾸创的泡⾯专⽤⽔--农夫⾕泉。⽤我们农夫⾕泉煮出来的⾯条饱腹感还能提升11%。”
-“这款产品在市⾯上的价格普遍在99元,我们团队经过艰苦卓绝的探索,在供应链的各个环节进⾏了成本的优化,但是由于这次全新的创新,的确要贵⼀点点。但是我连夜说服了⾼管……现在我来宣布:我们这款产品的定价为29.9元!!!” }}