提示词母体系列(1):做自己的提示词母体,不再手搓结构化提示词
一、叨叨两句
提示词母体我在去年 7 月份就开始研究了,一晃眼已经一年过去了。在很多文章里我也放过彩蛋,许多人向我反馈说拿到这些彩蛋模板后赚到了钱。然而,终究很少有人真正理解这个提示词母体到底是什么,一旦需求或模型发生变化,模板就不再适用了。
本着“授人以鱼不如授人以渔”的原则,这次我决定把如何构建模板的思路分享给大家。通过掌握这些方法和思路,大家可以根据不同的需求和模型变化,自主构建和调整模板,从而更好地应对各种挑战和机会。
二、结构化提示词的弊病和进化
在学习提示词的过程中,我们不可避免地会接触到结构化提示词。这种提示词虽然结构清晰,但编写起来相当耗时,并且需要不断调试,通常需要几个小时才能完成一个模板。如果追求专业性,投入时间进行编写是值得的,但如果是通用任务,这种投入就不太划算了。还有,在紧急任务面前,尤其是在移动环境中(如乘坐车辆或地铁时),马上手搓一个结构化提示词显得不太现实,没准等你搓完提示词,你要做的事早就凉了。在这种情况下,我和其他许多人一样,更愿意选择使用语音输入,然后根据模型的反馈,逐步微调指令,直至获得满意的结果。以上种种体现了结构化提示词在灵活性和即时性方面的局限。
在我最早接触结构化提示词时,我就在想,既然有这些弊病,是否可以通过自己的努力来摆脱这些弊病,在深入思考后,我构想了一个解决方案:开发一个提示词母体,它能够快速生成所需的提示词。这样一来,在紧急任务面前,可以立即创建一个结构化提示词,而无需耗费大量时间和精力。接着,我可以将这个提示词直接应用于模型,让它帮助我高效地完成手头的工作。这种方法让我能够灵活地应对各种任务,同时保持高效率。
三、提示词母体的好处
讨论再多不如实际体验来得有效。根据我的亲身体验,提示词母体带来了两大显著好处。首先,它极大地提高了效率,能在短短一个小时内帮助我构建起一个个性化的智能体矩阵,让我有更多时间去做其他事情。
其次,提示词母体的灵活性让我在任何需要的时候,都能在移动端上实现复杂提示词模板的构建(忽略我的口气词和结巴😂)。只需简单说出我的想法,模型便能迅速生成我期望的内容,这种即时性对于快节奏的工作流程来说是非常有效和宝贵的。
四、以模板为例,拆解构建思路
4.1 整体分析
现在,我们要开始授人以渔的环节了。首先,先来看一下整个提示词母体的模板。大家可以在这里看到整个模板分成了两大块,绿色部分是提示词母体的设定,而黄色部分是具体生成模板的设定。
为了更直观地展示这个思路,我画了一张图。通过观察这张图,我们可以看到提示词母体不仅是一个智能体的设定,它还具备持续生成提示词模板的能力(挂在了示例中)。进一步思考,我们会发现提示词模板的产出并不局限于一种格式。例如,如果你想生成 Co-Star 这种类型的提示词模板,就可以直接把 LangGPT 格式的模板删掉,换成 CO-Star 的。甚至你可以再挂载 N 个提示词模板,让它一口气全部输出,哪个好用用哪个。
让我们暂时放下对细节的延伸,集中注意力回到提示词母体的结构上。通过下方提供的简图,我们可以清晰地看到模板被划分为五个主要部分:角色设定、目标&约束、技能描述、工作流程以及具体示例。请注意,这个结构顺序不是随意排列的,这样的布局基于大模型的注意力机制,因为模型倾向于更多地关注提示词的开头和结尾部分,所以我将约束和具体示例分别放置在模板的头部和尾部,以规范模型的理解和输出内容。而模板的中间部分则包含了角色的技能、背景和工作流程,这些模块用来补充整个模板的内容,帮助减少幻觉,提升整个模板的健壮性。
4.2 角色/作者/描述
这个就不细讲了吧,实在没什么好讲的。
4.3 目标&约束
在了解了整个结构后,我们来细看一下目标与约束。将这两者结合在一起的原因在于:我们通常需要在特定的约束条件下实现目标,这与我们日常的语言逻辑相吻合。正如我们在描述任务时常常会先设定条件,然后再明确希望达成的结果,因此在模板中,我们首先列出约束条件,紧接着是目标。这样的顺序不仅符合我们的思维习惯,也有助于清晰地传达任务要求和期望成果。
构建约束条件时,特别强调了“充分理解<Example>中的例子”这一要求。这个约束条件的设置,实际上为了在模板的起始阶段就建立了与结尾的联系。通过确保对示例的深入理解,为整个任务的顺利进行和最终目标的达成奠定了基础。这种首尾相连的逻辑结构,有助于保持任务执行的连贯性和一致性。同时要求模型不要急切给出答复,也是为了确保在推理过程中尽量让模型腾出更多算力来处理当前任务,生成更高质量的内容。
4.4 背景
接下来,让我们看看背景模块。背景部分的作用在于向模型清晰地介绍“prompt template”是什么、“智能体”是什么,这可以视为对关键名词的详细阐释,确保模型能够准确把握任务的上下文和细节,避免模型进行无根据的猜测,从而产生错误的理解。
4.5 技能&工作流程
继续深入探讨,我们来到了技能与工作流程的部分。这两者紧密相连,根据以往经验和常识,缺乏必要的技能将直接影响到工作流程的执行。如果一个任务所需的技能没有被正确地设定和描述,或者工作流程超出了这些技能的范围,就可能导致执行过程中出现问题。因此,在编写提示词时,确保技能与工作流程的匹配是非常重要的,以避免因技能不足或不匹配而导致的模型幻觉。
让我们通过一个实例来具体说明。技能设定分为两个核心部分:首先是“智能体分析”,其次是“智能体模板构建”。当我们依据这两个技能点来审视整个工作流程时,可以清晰地看到,流程的前半部分是为了执行智能体分析而设计的,确保了对智能体的深入理解和分析(开场介绍依然使用了标签链接)。而流程的后半部分则是为了实现智能体模板的构建,确保能够根据分析结果来创建和优化模板。
不过,你也许会发现整个工作流程是抽象的,单靠这些内容不足以保证模型按预设指令输出,这时示例就派上用场了。
4.6 示例
正如之前所讨论的,这一部分其实和工作流程是相呼应的,示例中的每一步都对应了工作流程中的步骤,具象了流程中的每一步工作内容。示例的另一个作用是可以灵活适配和生成结构化提示词模板。它允许我们根据需要轻松地调整和替换模板组件。例如,当前示例中输出的模板是 LangGPT 的,你可以删掉它适配其它格式的结构化提示词,而不用去改动提示词的其他部分。
五、针对不同模型进行测试
都说光说不练假把式,这个提示词母体到底能不能用,或者说在国内的这些模型上能不能适配呢?我决定亲自试一试。我在扣子平台上测试了 6 个不同的模型,包括豆包、MiniMax、GLM、BaiChuan 等。这些模型都能够成功生成对应的提示词模板,验证了提示词母体的实际应用效果。
不过,尽管这些模型都能生成对应的提示词模板,但由于不同模型的能力各异,生成的质量也有所不同。对于一般性任务,这些模型生成的模板通常一次性就能满足需求,基本不需要再进行调整。然而,如果用于专业性任务,建议选择性能更好的模型,生成后再进行手动调整。
最后,在扣子平台上进行测试的过程中,我遇到了一个问题:豆包角色扮演模型似乎无法直接应用这个提示词模板。面对这种情况,我们应该如何调整策略?对于需要角色扮演功能的特殊模型,我们应该选择什么样的提示词来适配?这些问题,我将在拟人化提示词母体中继续探讨,敬请期待!
最后,如果有需要完整提示词的小伙伴,可以关注我领取,希望你喜欢这篇文章。