Menu

元提示是什么:用 AI 写出更好的提示词

元提示(meta prompting)是让模型来处理提示词:从零写一个、改进你已有的,或者把一个任务拆成交给其他模型调用的提示词。下面介绍每种做法,以及如何避免拿回一个臃肿的提示词。

下面的每条提示词都可以编辑:改好后,在 ChatGPT、Claude 或其他 AI 应用中打开。

元提示就是关于提示词的提示:你不是让模型去做一个任务,而是让它为这个任务写提示词、改进你已有的提示词,或者把任务拆成由其他模型调用来运行的更小的提示词。前两种是日常小技巧,在 ChatGPT、Claude 和 Gemini 中都能用。第三种是一种来自研究的技术,其中一个模型实例充当其他几个实例的指挥者。

三种做法都基于同一个事实:现在的模型读过大量关于如何给模型下指令的文字,所以很擅长发现提示词漏掉了什么。它们同样擅长用猜测来填补这些空白,而这正是需要提防的主要问题。

让模型来写提示词

生成提示词最差的方式是“给我写一个关于 X 的提示词”。模型对你的 X 一无所知,所以它只会为这项工作的普通版本写一个泛泛的提示词。解决办法是让它先提问。问题会把缺失的背景摆到明面上,而你的回答就成了提示词的主要内容。

让模型来采访你
Fill in
我需要一个可以反复用于这项工作的提示词:把我的会议记录整理成一封发给团队的简短总结邮件。 在写提示词之前,先问我最多五个问题,弄清楚要写好它你需要知道什么(受众、内容、长度、语气、要省略什么)。一次问完,标上编号。我回答之后,把提示词写在代码块里,每次要我填写的部分用 [方括号] 标出。
Try it
Example replyReplies vary between models and runs.
  1. 谁会读这封邮件:只有参加会议的人,还是也包括经理和其他团队?
  2. 每份总结必须包含什么?比如做出的决定、带负责人和截止日期的待办事项,以及尚未解决的问题。
  3. 应该写多长?你更喜欢要点列表还是简短的段落?
  4. 你们团队在邮件中用什么语气:正式、中性还是随意?
  5. 有没有什么绝对不能出现的内容,比如题外话、个人评论或机密数据?

在一条消息里回答这些问题,你得到的提示词里装的就是你的决定,而不是模型的默认设定。把它保存下来:一个带占位符的提示词就是一个每周都能用的提示词模板。

改进你已有的提示词

“改进这个提示词”是最常见的元提示之一,它典型的失败方式就在下面第一个标签页里。模型通过编造细节让提示词变得更长、更笃定:一个受众、一个字数、一个行动号召。每一处编造都看似合理,而每一处都是一个你没有做过的决定。第二个标签页给了模型改写的规则。

改进这个提示词: “为我的新闻简报总结这篇文章。”
Try it
Example replyReplies vary between models and runs.

下面是改进后的提示词:

“你是一位在数字出版领域拥有多年经验的资深内容作者和编辑。请为我的新闻简报总结下面这篇文章,读者是科技行业的忙碌职场人士。用友好而专业的语气,写一段 150 至 200 字、引人入胜的总结。以一个吸引人的开头起笔,突出三个最重要的见解,并以鼓励读者阅读全文的行动号召结尾。”

这个版本加入了角色、受众、长度、语气和清晰的结构,能让你得到更聚焦、更有用的总结。

第一条回复不算错,只是自作主张:如果你的简报是写给园艺爱好者的,“科技行业的忙碌职场人士”就会在不知不觉中左右每一份总结。第二条回复做得更少,把真正重要的决定留给了你。占位符还能告诉你原来的提示词缺了哪些背景,即使你最后不用这个改写版本,这一点也很有用。

在信任生成的提示词之前先检查

模型写的提示词读起来很顺,这反而让它的问题容易被忽略。使用之前,留意下面这些:

  • 编造的要求。 任何你没有要求的长度、受众、语气或规则。删掉它,或者换成你真实的回答。
  • 泛泛的角色。“你是一位世界级专家”除了增加长度,几乎没别的作用。角色在点明受众和标准时才有帮助,见角色提示。
  • 重复。 生成的提示词常常把同一条指令换三种说法讲一遍。一句清楚的话效果一样好,还更不容易自相矛盾。
  • 没有测试。 读一遍提示词,几乎看不出它的效果。用三四个真实的输入(包括一个棘手的)运行它,再把输出和旧提示词的结果比较。迭代提示词介绍了如何做到这一点而不自欺欺人。

模型还能帮你诊断一个失败的提示词。当提示词给出了不好的结果时,把提示词、输入和不好的输出粘贴进去,然后问:“这个提示词的哪一部分最可能导致了这个输出?给出能修复它的最小修改。”有针对性的诊断比整体重写更有用,因为你能知道是哪条指令出了问题。

指挥者方法(Suzgun 和 Kalai,2024)

在研究中,“meta-prompting”还特指 Suzgun 和 Kalai 2024 年的论文“Meta-Prompting: Enhancing Language Models with Task-Agnostic Scaffolding”中的一种方法。一个模型实例充当指挥者,它收到任务以及一套固定的高层指令,这套指令对每个任务都一样。它把任务拆成若干部分,并为每一部分给一位“专家”写一个提示词:专家就是对同一个模型的一次全新调用,带着指挥者为这一部分写的指令。专家只能看到指挥者发给它的内容,而看不到完整的历史,所以它们会用全新的眼光检查工作。指挥者读取它们的回答,在怀疑某个回答时要求验证,最后汇总出最终答案。在部分实验中,其中一位专家可以运行 Python 代码。

作者们用 GPT-4 在一组混合任务上测试了这个方法,包括 24 点游戏、找出一步将杀的国际象棋走法、Python 编程谜题和写十四行诗。在所有任务上取平均,配备 Python 解释器的指挥者方案胜过了标准提示,也胜过了他们用来比较的其他提示框架。

这是一个程序,而不是一条聊天消息:每次专家调用都是你的代码单独发出的一个请求,就像提示词链在步骤之间传递输出一样。区别在于,在提示词链中你事先设计好步骤,而指挥者是在运行时决定步骤的。这种灵活性需要更多次调用,也更难调试,所以对于步骤已知的任务,固定的提示词链通常是更好的选择。

常见问题

元提示是什么?

元提示就是让语言模型去处理提示词,而不是直接处理任务本身:让它写一个提示词,改写一个提示词以得到更好的结果,或者把一个任务拆成交给其他模型调用的子提示词。最后一种含义来自 Suzgun 和 Kalai 2024 年的论文“Meta-Prompting”,其中一次模型调用负责协调对同一个模型的多次全新调用。

让 ChatGPT 写提示词,用什么提示词比较好?

先说明这个提示词要完成什么工作,再让模型在动笔之前先向你提问:“在写提示词之前,先问我最多五个问题,弄清楚你需要知道什么。”回答这些问题,然后要求它把最终的提示词放在代码块里,每次会变的部分用占位符表示。大部分价值来自这些问题,因为它们会把你忘了提供的背景暴露出来。

AI 生成的提示词比自己写的更好吗?

它们通常更有条理、更完整,也通常比实际需要的更长。模型无法知道你的受众、你的数据或你的标准,所以生成的提示词会用看似合理的猜测来填补这些空白。把它当作草稿:删掉所有你没有要求的内容,然后用真实的输入测试它。

为什么模型每次改进提示词都要加上“你是一位专家”?

大概是因为公开的提示词里有太多是这样开头的,所以模型把它当作“改进后的提示词”的一部分。泛泛的专家角色很少能带来多大改变;点明受众和标准的具体角色才有用。要求改进时,说明你想要哪类补充,并告诉它不要添加你没有提出的要求。

Coddy 编程语言插图

和 Coddy 一起学编程

开始