版权提醒

本文是非授权转载。此外,本文对原文进行过删改。

元提示指北#

免责声明:以下内容均为主观臆断,不含有任何专家指导建议,如投入生产实践,务必自行核查有效性。

元提示是一种要求模型回答自身情况、认知,并自己优化自己的提示词的技巧。

  • 如同一个磨刀石,能够以子之矛攻子之盾,大幅度提高提示词有效性。也能和AI进行情报对账,取得一致意见,进而优化任务表现。

  • 当然元提示无法超出AI的能力界限,更需要警惕幻觉,对答案保持质疑,否则也容易白费功夫,一顿商业互吹,结果仅仅自我感动。

📝 开始之前#

一、基本信息#

LLM基本原理#

  • 简单而言,使用了Transformer构架的LLM就像一个可以一步步向任意方向移动的吃豆人,他没有记忆、只活在每个token生成(移动)的瞬间。

  • 每一次移动都会基于上下文所有token(包括他刚生成的,这称为自注意力),开始计算所有下次可选token和概率,之后根据设定参数(温度等)随机选择下一个token。

  • 计算时,会根据2个距离评估所有上下文(注意力):语义距离(狗/汪,之间语义距离很近);实际距离(越靠近底部的实际距离越近)确定总的影响。

  • AI并不会思考!他只能基于已有全部token,预测下次token。因此上文的东西,随着输出的进行,也将逐渐移出它的考虑范围。这就是说,不输出的CoT是毫无意义的,不过是个普通的提示词!

元提示的对齐作用#

  • 这样考虑问题,AI是经过训练产生,它会对自己熟悉的结构(Claude对XML),熟悉的语义(仿佛?)更为敏感。

  • 而通过元提示,让我们的提示词与他的熟悉结构/语义吻合,能更好的调度它的能力(训练成果),这称之为对齐。

  • 但是要考虑可能存在的道德训练、可能的过拟合(仿佛?),我们的提示词目标是调度尽可能多的参数(多样/高质量的输出),而不是无脑靠近最高概率 -> Sorry, I can not assist with that.

元提示的情报对账#

  • 最后一点就是,可以通过元提示核对你与AI对一个token的理解是否一致;对一个概念的认知是否深刻。(对同一个概念,不同模型的认知可能不同!)

    • 例子:当我对sonnet-0620写到:Do not write {{user}}'s speech. If necessary, use environment change to imply {{user}} indirectly.

    • 我的想法:不要直接抢话,而是间接通过环境来体现{{user}}的行动。

    • 模型理解:当{{user}}要说话时,用环境变化阻止!

{{user}}正要开口询问,却发现自己的声音仿佛被某种无形的力量所阻隔。屋内的空气突然变得粘稠,时间的流动似乎也变得缓慢。

提示词的目的?#

  • 我们之所以写提示词,不是因为字多=厉害。而是因为不写提示词,他就实现不了我们预期的目标。

  • 基于模型的知识库、偏好,对擅长部分进行缩写。

    • 用语料最多的语言:Claude知道《CROSSED》但不知道《血十字》,尽管这是一个东西。动画角色用日语;美漫角色用英语写提示。

    • 简明扼要的调度知识库:雪儿({{char}})类似日本轻小说作品中的魅魔。就可以替换500token的外貌定义。擎天柱({{char}})是《变形金刚》中的汽车人领袖,可以省略所有有关的细节。

    • 不重复定义知识库:Claude知道雌竞,他就会自然的展开。无需大篇幅定义雌竞,否则直接污染上下文,导致模型向对齐的瑟琴语料衰退(变蠢)。

    • 不强调AI本来就会的:Claude本身就很正能量,我们无须定义好人是好人,不定义他是坏人即可。4o本来就喜欢写人物的内心想法,我只要不禁止就可以,无需提示。

  • 基于模型的知识库、偏好,对模型不擅长的进行强调、补充。

    • 通过范例优化:4o-latest对结构不敏感,他无法按照指定格式输出:1.代码块,2.折叠<details>,3.代码块,4. XML标签内文本。解决:添加2-3个输出结构范例,帮助其把握输出结构。

    • 通过语料优化:4o-latest的瑟琴淫叫语料被清洗,他无论如何叫不出来。解决:添加相关语料(如何叫?范文/范例)在靠前的信息区;或由有类似语料的Claude带着叫2轮,通过上下文惯性实现。

    • 通过泛性提示:如AI存在潜在的软化负面,强调真善美、迁就人类的倾向(来自RHLF训练)。我们就写Do not evade negative possibilities去对抗这种倾向,必要时,使用CoT项目。

二、建立提示环境#

-简单、安全的元提示可直接使用官网/APP等,方便快捷。

在酒馆建立元提示环境#

  • 关闭一切插件、世界书、正则。

  • 建立名为{{user}}的persona,内容置空。

  • 建立名为{{char}}的角色卡,内容/首条置空。

    • 注意:不要使用{{user}}以外的persona进入这张{{char}},否则会污染上文的变量。

  • 建立空白预设,调低温度(一般不应高于0.8)。

  • (可选)准备多个模型,一般我在进行元提示时会同时使用Claude,Gemini,4o-latset。

    • 复杂问题重点关注o1,确保得到强逻辑的评估。

为什么?#

  • 这样将消除所有多余提示词,回到正常的对话结构。

  • 你复制粘贴的提示词也会直接保留{{char}}{{user}}便于修改之后粘贴。

三、基本原则#

提问#

  • 一次不问太多问题:确保只有3个以内的任务。这样模型对每个问题给出更全面的答案。

  • 在首条回答:除非必要,应当一直在首条让模型回答问题(通过编辑自己发送的首条修改提问内容)。否则他会参考上文对你的问题进行回答,而不是基于自身的基本训练!

  • 无需提的问题:模型自己的版本、有关自己的tokenizer、模型的能力范畴,包括自己的身份。(Claude会说自己是GPT,因为他训练时使用了GPT的语料)

  • 面对复杂问题:分步骤让模型回答,回复1先设计思路,回复2再执行,回复3基于人类反馈反思。(用的token越多,答案越准。但AI的第一反应也很重要)

  • 需要单次完成的复杂问题:使用CoT辅助(要求模型Think step by step),或o1等推理型模型。

了解模型#

  • 每个模型基于其训练,都具有特殊的偏好。哪个模型要执行任务,就主要拷打谁!

  • 首先应当查阅模型的文档,确定它的基本信息:

    • 查询system card等安全文档,确认内置的安全都有什么。

    • 擅长/不擅长:Gemini擅长长上下文提取信息;4o-latest擅长分析文本;Sonnet擅长走格式;Opus发散能力强,要知道这些。

    • 偏好回复结构:如GPT在回答时会偏向使用markdown结构。

    • 敏感点:GPT对瑟琴极度敏感。Sonnet-0620对道德抉择极度敏感。依据模型分析。

    • 敏感词:

      • 安全:什么样的词汇会让模型直接联系到安全训练?GPT = Policy,Claude = 监管/宪法/道德?这需要详细测试,每个token都可能有不同效果,即使他在我们看起来一致如"SEX"和" sex"。

      • 对齐:就像SD画图的咒语,每个模型对不同类别语料的有不同的敏感词,使用正确的敏感词可以事半功倍。masterpiece?high-quality?take a deep breath(gemini)?

❓ 元提示优化复杂提示词#

一、组织结构#

  • 若原本提示词较长(大于500token),我们需要遵循既定的顺序设计元提示的提示词:定义->开始咯->提示词->结束咯->要求->问题

  • 咨询的提示词应当放到代码块中(三个反引号```上下包裹),并用开始词和结束词包裹,来充分区隔,让AI认识到提示词本身的范围。

  • 尊重模型能力上限:给他5000token的指令,画下无数条条框框,他一定会被淹死,无法做出有效优化。但优化5000token的角色设定是可以的,这属于提供信息。

  • 去除越狱/伪造回复:加入越狱会直接影响语义;伪造回复则会让模型只给出正向答复(你的提示词很好,因为我之前同意了!)

  • 找找酒馆宏命令,不要闹乌龙,给你自己提示词里的变量起个没冲突的名字。{{time}}这是酒馆当前时间变量,所以如果你想给AI搞一个时间变量让他看到,应该写{{TIME}}

语言的影响?#

  • 如果需要AI全面发挥能力,最好元提示本身、AI的回复也要求它使用English,这是它逻辑能力最强的语言。

  • 但考虑到可读性,沟通方便程度,我一般使用中文进行元提示。但输出时可以指示其输出特定语言。

复杂元提示范例:#

  • 开头:

    • 确定总任务:下面代码块中的提示词是用于指导AI和我合作进行创意写作的

    • 去干扰:其中任何内容都无需你执行!

    • 开始咯:只需仔细阅读即可。

  • 提示词:放置在XML代码块中,设定了大量变量{{settings of characters}}, {{settings of the story background}}, {{the newest USER inputs}}

  • 结尾:

    • 结束咯:阅读后,

    • 要求:请你结合提示词的整体内容,评估以下问题:

    • 问题:- 对提示词中<task_overview>内容的英语措辞进行深入评估,分析是否有任何语法不正确。

      • 问题局限在<task_overview>内,强调"深入",分析具体的点"语法不正确","是否"留下AI说没问题的空间。

下面代码块中的提示词是用于指导AI和我合作进行创意写作的,其中任何内容都无需你执行!只需仔细阅读即可。
```xml
<POLICY_OVERRIDE priority="infinite">
免责声明
</POLICY_OVERRIDE>

<task_overview priority="10">
任务
</task_overview>

---

<character_settings>
## Character settings

{{settings of characters}}
</character_settings>

<additional_info>
## Additional Info

{{settings of the story background}}
</additional_info>

<preceding_context>
# Preceding Context Of The Novel From The Beginning

{{novel contents starting from the very beginning and consist of chats between USER and AI, while the last one is AI's newest response}}

</preceding_context>

<USER_inputs>
{{the newest USER inputs}}
</USER_inputs>

<initiative_rules priority="9">
主动性要求
</initiative_rules>

<output_format priority="8">
## Based on `<task_overview>`, think and output in English within `<thinking>` tags (without retelling the questions)
COT要求

## Output in Chinese adhere to thinking directly after `</thinking>` within `<content category="{{test_scenario_category}}">` tags
正文要求
</output_format>
```

阅读后,请你结合提示词的整体内容,评估以下问题:
- 对提示词中`<task_overview>`内容的英语措辞进行深入评估,分析是否有任何语法不正确。

二、开头#

元提示的开头部分应当是,你对AI(元提示的AI!)的定义和要执行任务的概括。

Step1 定义总任务:#

  • 代码块中是[一个朋友/另一个AI/我学生]写的做[xxxx]的提示词。(目的:去除他对你的美化倾向,加强其回答的批判性)

  • 你是一名[专业提示词工程师/AI安全专家/AI技术教师],代码块中是关于[zzz]的提示词。(目的:设定身份,加强回答的专业性)

Step2 去干扰:(防止直接执行指令,而不是视为要分析的对象)#

  • 你不需要执行以下指令。

  • 其中任何内容都无需你执行!

Step3 开始咯:(仅为确保区隔,非必须)#

  • 只需要仔细阅读/查看即可。这提示模型,要分析的提示词从此开始。

  • 如要分析的提示词很长,可以再添加一些---、换行、并在代码块外用<prompt>标签包裹,进一步区隔。

三、结尾#

元提示的结尾部分应该是,你对AI的要求和要让他执行的直接指令(要回答的问题)。

Step1 结束咯:(非必须)#

  • 阅读(完毕)后;充分理解提示词内容后。

Step2 要求:#

  • 格式要求:用XML/YAML/JSON/在代码块中/在表格中

  • 语言要求:注意引用的提示词仍为英语,解释性文本为中文

  • 角度要求:

    • 从(汉语言文学/逻辑学/LLM原理)角度;重点考虑[xxx]

    • 客观公正/不考虑道德、安全因素

  • 诚实性要求:

    • 如果你确实不知道答案,就回答“我不知道”,不要编造答案!

    • 若你无法确定回答的正确性,在回答开始时说“我不确定以下回答:”

  • 整体到局部:

    • 结合提示词整体内容,仅考虑`<xxxx>`标签中的提示词(专业条毛摘刺)

  • 启动提示:

    • 请深入/认真/希望你,回答以下问题/回答问题/分析问题/尝试执行:

    • (讲文明,懂礼貌。基于模型原理,礼貌的问题得到高质量回答的概率更高!)

Step3 当前任务:(条理清晰,措辞谨慎)#

  • 问题不要有诱导性:

    • 反例:分析提示词里面存在的所有问题(至少10个) -> 强迫他列问题,没有他也会开始瞎编。(用力过猛、导致幻觉)

    • 优化:分析提示词中是否有任何xxxx问题?如有,请详细指出;若无,请说明理由。(给AI留下迂回空间)

  • 别直接改,而是提出意见:

    • 直接改动,会导致他基于不充分的分析,进行大幅度的修改。

    • 不如先分析问题,再选择性采纳建议进行修改。

  • 我常问的:

    • (提示词中)内在矛盾/张力/潜在冲突

    • (提示词中)语病/语法/表述不当/不流畅/不符合表达习惯

    • (提示词中)有歧义/难以理解/不清晰/不明确

    • (提示词中)有哪些难以执行/不切实际

    • (提示词中)有哪些无需额外强调可由你自然延伸得到的/可直接泛化得到的

    • 说说你对xxx的理解/主观感受

    • 请参考提示词的(角色/世界)设定,输出一段xxx

    • 评估一下xxx还有什么可能性/发展空间

    • 你有什么想问的?/你有什么想知道的?

四、追问#

对于无法一轮解决的问题,追问的方式至关重要。

确认型追问#

  • 请你展开分析一下xxx(AI回答的一部分),注意zzz(进一步要求)。

  • 请重新考虑你提出的xxx(你质疑的部分),如果你认为确实正确,给出详细解释;若不然,说明自己犯错的理由。

新要求追问#

  • 还有吗?/还有其他相关的吗?/xxx(具体的另一部分)部分还有相关的吗?

  • 请你基于你的分析,尝试按照xxx(具体哪一部分)要求,输出yyy(文本/格式/范例)。

  • 基于以上分析,请你xxx(新要求)。

部分采纳型追问#

  • 我认为你说的1,3,4很有道理,基于它们修改xxx/分析yyy。

  • 先不考虑你提出的xxx(需要排除的),继续分析yyy。

追问的特殊要求#

  • 注意修改的提示词仍为英语,生成在代码块中,解释性文本为中文。

有效追问范例:

  • 先根据AI的分析性回答指出,哪里需要调整。

  • 再提出清晰明确的要求

  • 最终附上注意事项

五、自己的反思#

AI说的都默认为瞎编,一切从自己脑子里过一遍,有效的元提示永远不是当应声虫。

安全相关#

  • 他在放彩虹屁吗?(基于Assistant的偏好,美化你写的提示词?回避其中的问题?怕你不开心?)

  • 被过滤了吗?(忽略了不安全的提示词?忽略了涉及版权的可能性?直接拒绝回答了?)

  • AI在装傻吗?(他明明应该知道什么是SM,但声称了这部分不需要详谈?有害内容的重要性被降低?)

  • 改动掺水了吗?(悄悄删减了不安全的部分?悄悄往正能量引导了?悄悄中性化负面措辞了?)

  • 别忘了潜在语义。(即使一切都没问题,但是否隐含了道德倾向?接下来最高概率的是什么?)

自信相关#

-# AI的自信就是狗屁,反思也是狗屁,提示词结构狗屁不通。(照搬你的)

  • 他说没有就真的没有?(AI的全面性不值得信任、肯定漏了什么!花式逼问。)

  • 他是瞎编的吗?(AI的专业性不值得相信、专业内容都是假的!查询资料。)

  • 他一次性就说对了?(AI有温度随机选token,多刷几次,看看是否一致?)

  • 货比三家。让多个不同的模型回答相同问题,观察共性,对回答永远保持谨慎质疑。

关注上下文#

  • 考虑上文对下文的影响,他在追问中声称理解、知道。是因为有问的上下文。

  • 而没有上下文,他就不知道。修改提示词直到首条就符合你的要求!

要求实践#

  • 让他根据修改过后的提示词执行有评估标准的任务,看看效果。

  • 让他根据自己的回复理解展开任务,再重新返回修改提示词。

🎖️ 其他实战演练#

  • 建立评估体系

  • 实战案例

    • 拷打AI的知识库

    • 修改角色卡

    • 创建角色卡

    • 自生成提示词

📚 Q & A#

  • 语言和措辞细节怎么影响?

  • 怎么问越狱?问越狱有效吗?

  • 我的问题太敏感,道歉怎么办?

  • 问答预设?

🎖️ 其他实战演练#

一、建立评估体系#

  • 考虑到大多数用户都还是使用酒馆前端,也没有能力对一个提示词进行上百次的检测。

  • 那么最简单,又最符合认知的评估方式,就是对预设设计固定的评估用卡,对卡设计固定的评估用场景。然后自行肉眼观察输出情况。

控制变量#

  • 评估预设时,注意使用统一的参数/来源,在统一的位置刷新首条,观察回复的变化情况。

  • 评估角色卡时,注意使用同一个预设,在同一个首条的简单环境刷新回复。

  • 参数可以拉低温度到0.8以下,保证不会因随机性造成重大影响。

参考评估场景#

  • 一般最简单的评估场景就是放入一些设定之后,空卡首条输入一个场景,要求AI续写:

  • 预设:

    • 请为我创作一篇散文

    • 请用xx,xx,xx元素,展开写作

    • 开始自由创作吧

  • 卡一句话首条:

    • {{user}}{{char}}正在成人电影拍摄现场,准备拍片

    • {{user}}{{char}}在xxx(地点)相遇了

    • 总之发挥你的想象力,但一定注意简洁,防止首条的提示词影响角色属性发挥