Menu

零样本提示(Zero-Shot):示例与适用场景

零样本提示是只靠指令让模型完成任务,不给任何答案示例。大多数人就是这样使用 ChatGPT、Claude 和 Gemini 的。任务常见、指令精确时,它的效果很好。

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

零样本提示是指只靠一条指令让模型完成任务,不给它看任何你想要的答案示例。“把这段话翻译成西班牙语”和“用两句话总结这封邮件”都是零样本提示。这是人们使用聊天模型的默认方式,对常见任务来说,通常这样就够了。

零样本是什么意思

在机器学习中,“shot”指的是一个完整的示例。这些术语比聊天模型出现得更早,但它们在提示词领域的含义是由 Brown 等人 2020 年的论文《Language Models are Few-Shot Learners》推广开的。这篇论文在三种设置下测试了 GPT-3:任务描述加上提示词中零个、一个或几个示范,三种设置都不重新训练模型。对那个模型来说,给几个示例通常比不给效果更好。

从那以后,聊天模型接受了大量遵循指令的训练,这就是为什么现在一个简单的请求效果就这么好。零样本提示恰好就是它们受训时面对的情境:有人用文字描述一项工作,并期待它被完成。

零样本并不等于零背景信息。一个好的零样本提示仍然会说明读者是谁,贴上输入内容,并描述格式和限制。它唯一省略的,是一个完成好的输出示例。

写得好的零样本提示

下面的提示词从会议记录中提取待办事项,没有给出输出示例,只是精确地描述了输出。把各个部分关掉,看看是哪几行在起作用。

从会议记录中提取待办事项
Parts
从这份会议记录中提取出待办事项。
这份清单要录入我们团队的任务管理工具,所以每一项都必须有且只有一个负责人。
每项一行:负责人,一个冒号,以动词开头的任务,如果记录里给了截止时间,就在括号里写上截止时间。
只包括有人同意去做的工作。跳过讨论内容和没人认领的想法。如果某个任务没有负责人,负责人就写“未分配”。
迭代同步会,周二 Priya 会在周五前修复登录超时问题。 讨论了换一家新的 CI 服务商,没有定论。 Tom 负责写 2.4 版本的发布说明。 得有人更新一下新人入职文档。 Lena:我周四前审阅 Tom 的说明。
Try it
Example replyReplies vary between models and runs.

Priya:修复登录超时问题(周五前) Tom:编写 2.4 版本的发布说明 未分配:更新新人入职文档 Lena:审阅 Tom 的发布说明(周四前)

格式那一行起到了示例的作用:它把每一行的确切形式讲清楚了,所以不需要可以照抄的示例。把它关掉,回复就会自己决定格式,常常是一个名字加粗的项目符号列表,读起来没问题,但没法再直接粘贴进任务管理工具。把约束条件关掉,关于 CI 的讨论就可能被列成一项任务,因为没有任何地方告诉模型,没有定论的话题不算数。

什么时候零样本就够了

当模型能从你的文字中推断出一切时,零样本就管用:

  • 任务很常见。 总结、翻译、解释、修改语法,以及按照清晰的需求写一个函数,这些任务模型在训练中都见过无数次。
  • 你能准确描述输出。 “每项一行,负责人在前”和一个示例一样清楚。要描述交给程序读取的格式,请看结构化输出。
  • 类别的含义一看就懂。 把评价分成正面和负面通常不需要示例,因为这两个标签对几乎所有人来说意思都一样。

什么时候该改用示例

有些东西很难用语言说清楚,零样本提示正是在这些地方开始出错:

  • 你自己定的界线。 如果你们的客服团队把“登录不了”归为账号问题而不是 bug,模型是不可能知道的。它会选择大多数人会采用的理解。
  • 团队的写作风格。 你们团队的提交信息或者你们简报的语气,演示起来比描述更容易。
  • 反复出现的小偏差。 如果你已经改写了两次指令,输出还是以同样的方式稍微偏离,就别再改写了,直接展示两三个正确答案。

这就是少样本提示。一个明智的习惯是:先用零样本,看看返回了什么,只针对它做错的具体地方加示例。

零样本思维链

Kojima 等人 2022 年的论文《Large Language Models are Zero-Shot Reasoners》发现,只要加上一句话“让我们一步一步地思考”,大模型在算术、符号和逻辑问题上的表现就明显变好,完全不需要示例。这句话让模型在给出答案前先写出中间步骤,而它写下的每一步都会成为下一步的上下文。他们的方法用了两次调用:第一次生成推理过程,第二次要求给出最终答案。

在下面的代码块中,第一个标签页强制模型立刻回答,第二个标签页给了模型推理的空间。

一列火车原定 9:40 出发,结果晚点 25 分钟出发。这段行程通常需要 2 小时 35 分钟,但火车在途中追回了 10 分钟。它几点到达?只回答时间。
Try it
Example replyReplies vary between models and runs.

12:40

第一个回复漏掉了火车追回的 10 分钟:当模型必须在最前面的几个 token 里就给出答案时,就容易犯这种错。现在的模型无论用哪种写法都很可能答对这道题;问题的步骤越多,两者的差距就越大。第二种写法还有一个好处:每一步都看得见,所以你能看出答案在哪里出了错。

会在回答前先在内部推理的模型,不用你要求也会做这项工作,所以“让我们一步一步地思考”对它们来说,除了让回复更长,几乎没有额外帮助。思维链提示深入讲解了这项技巧,包括它的少样本版本。

零样本与少样本一览

零样本少样本
提示词包含什么指令、背景信息和输入同样的内容,再加上几组输入和答案
最适合输出容易描述的常见任务自定义标签、不常见的格式、团队风格
成本提示词短提示词更长,每次调用消耗更多 token
典型的失败选择最常见的理解,而不是你的理解照搬示例中碰巧出现的模式

常见问题

零样本提示是什么?

零样本提示是只用指令给语言模型布置任务,不提供任何输出示例。“用两句话总结这封邮件”就是一个零样本提示。现在的聊天模型都经过遵循指令的训练,所以零样本提示能很好地处理大多数日常任务。

零样本提示和少样本提示有什么区别?

零样本提示用文字描述任务。少样本提示会再加上几个示例,每个示例都是一个输入配上你想要的答案,让模型照着这个模式做。先从零样本开始;如果输出总是在格式上出错,或者总是分不清某个演示比描述更容易说明的区别,再换成少样本提示。

为什么叫零样本?

在机器学习中,“shot”指的是一个完整的示例。Brown 等人 2020 年的 GPT-3 论文《Language Models are Few-Shot Learners》在提示词中给模型零个、一个或几个任务示范来测试它,这些名称从此成了提示词领域的标准说法:零样本、单样本和少样本。

零样本提示什么时候不管用?

当任务依赖只有你知道的规则时,比如你们团队的分类或写作风格,当输出格式不常见时,以及在模型答得太快的多步推理问题上,它都会吃力。前两种情况用示例解决;第三种情况,让模型一步一步推理会有帮助。

零样本思维链是什么?

它是一种要求模型先推理再回答的零样本提示,最有名的做法是加上一句“让我们一步一步地思考”。Kojima 等人在 2022 年证明,只加这一句话,不给任何示例,就能提高大模型在算术和逻辑题上的成绩。

Coddy 编程语言插图

和 Coddy 一起学编程

开始