跳到正文
返回

提示词为什么能调出模型的能力?

8分钟阅读

同一份更新记录,交给模型说“帮我总结一下”,往往会得到一段面面俱到的概括;改成“写给正在上传文件的用户,只说这次更新会怎样影响他”,重点就会转向断线以后还能不能继续上传。材料没变,模型也没换,几句话却改变了它处理材料的方式。提示词工程要解释的,就是这种变化为什么能够发生。

预测文字,也在学习文字背后的关系

语言模型在预训练中反复做一件事:根据前面的内容,预测接下来出现什么。这个目标看起来很窄,材料却把它推向了很宽的世界。要接上一段程序,需要知道变量和操作之间的关系;要续写一道题的解答,需要跟上前面的条件;要补完一场争论,需要辨认双方在争什么。文本里到处都是人做事留下的痕迹,预测任务让模型有机会从这些痕迹中学到规律。

比如,记住“杯子掉下来会摔碎”可以接好一句话,学到物体会下落、材料会破裂的关系,则能帮助处理许多不同的句子。相似的规律在大量语境里反复出现,共用一套内部表示比逐句记忆更有用。模型由此获得了可以迁移和组合的知识。我们觉得它有时“像人一样”,常常就来自这种组合:它能把见过的关系用到一个没有原样见过的问题里。

训练材料同时包含很多不同的做事方式。产品公告挑选用户关心的变化,技术文档交代条件和接口,审稿意见追问证据,教程把中间步骤摊开。它们可能讨论同一件事,却选择了不同的信息、顺序和判断标准。模型学到的因此是一片相互交叠的行为可能性。眼前究竟沿哪种方式继续,要由当前的上下文来参与决定。

提示词改变了这次计算的条件

不过,能够续写许多文本,还不等于习惯按用户的要求做事。指令跟随也需要学习:InstructGPT在预训练模型上使用人工示范进行监督微调,再利用人类对回答的评价继续训练。预训练积累的知识与关系,由此更容易被组织成符合要求的回应。我们日常给出的提示,正是在调用这样一个已经学过如何接受任务的模型。

能力如何形成知识从训练而来,回答随提示展开
  1. 预训练:网络文本等大量材料;预测文字,学习关系
  2. 指令跟随训练:指令示范与反馈;学会按要求回应
  3. 本次提示:目标 · 读者 · 材料 · 示例
  4. 模型:世界知识与指令跟随
  5. 回答:信息取舍与表达随条件变化
    看图中的关系

    训练形成知识与指令跟随能力;本次提示决定这些能力面对什么问题、依据什么条件。

    点选节点查看含义。每个视角展开对应文章的概念。

    “写给正在上传文件的用户”把读者的处境放进了上下文,“只说这次更新会怎样影响他”又给出了筛选信息的标准。模型接下来生成文字时,会同时利用更新记录和这些要求。换一种要求,候选表达的概率分布就跟着变化。这个过程通常没有改动模型的权重;发生变化的是同一套参数面对不同输入时的计算。

    下面把同一份材料放在三种提示下。切换时,留意每次留下了哪些事实、删掉了哪些细节,以及句子准备让谁采取行动。组件里的回答是为说明关系而写的示例,但这正是提示词要改变的东西:模型对任务的理解,会体现在它对信息的取舍上。

    材料相同,任务不同切换提示词,对照留下的事实和答案的组织方式。
    更新记录:上传支持断点续传。失败的数据块最多重试三次。设置页面更换了布局。
    提示词

    总结这份更新记录。

    回答示例

    本次更新支持断点续传,失败的数据块最多重试三次,并调整了设置页面布局。

    提示词补充了什么

    覆盖材料中的变化。

    回答是人工编写的可能输出示例;组件不调用模型,也不测量真实概率。

    常见的提示方法,究竟改变了什么?

    把提示词看成“为这次计算补充条件”,很多技巧就能放回同一张图里。它们有的缩小任务的解释空间,有的给出可模仿的关系,有的安排中间工作,还有的增加寻找好答案的机会。判断一种方法是否值得用,要看它补上的条件,是否正是当前任务缺少的东西。

    • 角色与目标:给出判断的立场。 “你是一位产品经理”能带来一些常见的注意方向,但产品经理也会写需求、排优先级、做汇报。继续说明“读者刚遇到上传失败,需要决定重试还是等待”,才把这些可能性收束到眼前的工作。角色名可以简写读者、责任与取舍标准,但这些含义需要明确。

    • 示例:把模糊标准变成可以辨认的关系。 “简洁、准确、专业”仍容许许多写法;给出一条“发生了什么变化 → 谁受影响 → 接下来怎么办”,就示范了信息怎样连接。GPT-3 的少样本实验展示了模型只读输入中的示例、无需更新参数就能适应任务的现象。示例尤其适合传递难以穷尽的风格与边界:放一个合格样本,再放一个看似合格却遗漏关键条件的样本,差别往往比十条形容词更清楚。

    • 约束与分隔:说明哪些内容各司何职。 把背景、待处理材料、交付要求分开,能减少模型把材料里的话当成要求、把例子当成事实的机会。标签、标题、代码围栏都能完成这份工作,没有哪套符号天然更聪明。要求 JSON 则是在限定交付接口;如果下游程序依赖它,仍应使用支持的结构化输出约束并校验结果。提示里写出的边界,首先是给模型理解的边界。

    • 拆解与中间产物:为后续计算造一个落脚点。 比较两种方案时,先形成比较维度,后面的判断就能逐项利用它;写报告前先核对事实表,也能让正文有稳定的依据。有效的是这些中间结果保存了后面要用的关系。把任务切成十步却不增加有用信息,只会多制造九次衔接,还可能提前锁死一条本该随着发现而改变的路线。

    “一步一步想”,为什么有过那么大的作用?

    早期模型经常需要从问题直接跳到答案。把推导示例放进输入,会让它更容易生成一条带中间步骤的解答;已经生成的步骤又成为后续计算的条件。思维链提示的重要性,就在于展示了中间计算可以被语言承载。这种提示为模型提供了一种把多步关系展开、继续利用的做题方式。

    另一些方法把力气花在选择上。让模型生成几个方案再比较,或者让不同解法对答案投票,都在扩大搜索。自一致性方法就通过采样多条推理路径、汇总答案来改善表现。让模型反思也属于这条思路,但一句“再检查一下”只提供了再次判断的机会。给出反例、执行测试、核对原始材料,才能为这次判断增加新证据;五个答案如果共享同一个误解,多数票也会一起错。

    到了现在,许多推理模型已经在训练中学会了分配中间计算,智能体模型也学会了查资料、调用工具和利用失败。过去需要提示才能出现的行为,成了模型的默认做法。OpenAI 的推理模型使用建议因此建议直接、清楚地表达任务,指出反复要求逐步思考可能没有帮助,甚至妨碍表现。我们应该保留“用中间工作支撑复杂判断”这个原理,重新判断究竟有多少步骤还需要人替模型安排。

    今天,提示词应该把什么讲清楚?

    提示词工程的热度退下去后,留下了一项很实际的工作:把通用能力接到一个具体人的意图上。模型越来越知道通常该怎么做,却仍然不知道你把什么结果看得最重要、可以接受哪些取舍,以及希望把多大的决定权交给它。当前厂商的建议也在更多讨论这些协作条件,例如自主推进与指令优先级,以及按具体模型调整引导力度。同一套强提醒,换到已经很主动的模型上,可能造成过度执行。

    1. 结果与取舍。 最终交付给谁,用来做什么,哪些要求冲突时应优先满足哪一项。对一篇文章,“让读者理解为什么这样做”与“覆盖所有知识点”,会引出完全不同的写法。

    2. 事实与权限。 哪些材料是当前依据,哪些内容只是例子;模型可以去哪里调查,可以自行修改什么,什么决定需要交还给人。材料会变化时,给出查阅入口和核实要求,比把旧答案长期写死在提示里更有效。

    3. 完成条件与交付方式。 写出代码之后是否需要运行验证,文章要进入哪个文件,最终反馈要保留哪些证据。把这些条件讲清,可以让模型自行选择过程。只有某种过程本身影响质量时,才额外固定它,例如写作时先构思一段的句子,再把这段写入文件。

    回到上传公告,可以这样交代:

    根据这份更新记录,写一段给上传失败用户看的说明,放进帮助页草稿。读者要能判断现在该重试还是等待。保留影响这个判断的限制条件;发现材料缺失时查对应文档,不猜测产品行为。措辞参考已有帮助页。完成后检查每条产品承诺能否在材料里找到依据,并给出草稿位置。

    这段提示没有替模型编排所有动作,却已经确定了信息取舍、证据、风格、产物与完成标准。任务比较简单时,还可以更短;模型反复在某个地方误解时,再补一个有针对性的例子。

    旧技巧可以据此重新筛一遍:明确目标、提供相关例子、划清材料层次、产出有用的中间结果,仍然有价值;反复强调身份、许诺奖励、为每个任务强制长篇推导,则不值得作为默认仪式保留。长提示也完全可以有用,只要它的长度来自真实的任务条件。真正该删的是那些已经被模型学会、与本次工作无关,或者彼此冲突的提醒。

    最后,提示的质量要放回任务里检验。拿几类真实例子,保留一批容易误解的边界情况,比较修改前后的结果;模型升级后,再看看旧提醒是否还在帮忙。一次惊艳的回答不足以证明模板有效,某句提示失效也未必说明能力消失。先分清是目标没讲清、材料没给够,还是模型确实不会。前两类问题还能继续通过输入改善,而当材料来自一个持续变化的世界时,提示词就要与下一篇要谈的上下文工程接起来了。