4、零样本与少样本提示:Zero-shot、Few-shot、思维链(Chain-of-Thought)提示

好,咱们今天聊一个非常核心的话题——怎么让大模型在没有训练数据的情况下,也能干好活。

说白了,就是「零样本」和「少样本」提示。我刚开始接触这个领域时,总觉得这俩概念有点玄乎。后来在项目里踩了几次坑,才真正理解它们的威力。

4.1 零样本提示:让模型「无师自通」

零样本提示,英文叫 Zero-shot Prompting。意思很简单:不给任何例子,直接让模型干活

你想想看,这其实挺反直觉的。我们平时教人做事,总得给几个示范吧?但大模型不一样,它预训练阶段已经「见过」海量数据了。你只要把任务描述清楚,它就能直接推理。

核心要点:零样本提示的成功,完全取决于任务描述的清晰度。

举个例子。我让模型做情感分类:

提示词:
请判断以下评论的情感是「正面」还是「负面」。
评论:这家餐厅的服务太差了,等了一个小时才上菜。

输出:
负面

看到了吗?没有给任何示例,模型直接给出了正确答案。这就是零样本。

我个人习惯在零样本提示里加一个「角色设定」。比如:

你是一位资深的情感分析师。请判断以下评论的情感倾向。
评论:这家餐厅的服务太差了,等了一个小时才上菜。
输出:

加了角色后,模型的输出质量会明显提升。我在项目中遇到过,不加角色时模型偶尔会输出「中性」,加了角色后几乎不会出现这种情况。

小技巧:零样本提示中,尽量使用「请」「输出格式为」等指令性词汇。避免模糊表达,比如「你觉得呢」这种。

4.2 少样本提示:给模型「打个样」

少样本提示,Few-shot Prompting。就是给模型提供几个输入输出的示例,让它照着这个模式来。

为什么要用少样本?因为有些任务太特殊了,模型在预训练时没见过。或者,你需要模型输出某种特定格式。

我记得有一次做数据清洗,需要把非结构化的文本转成 JSON。零样本提示下,模型输出的字段名总是对不上。后来我给了两个示例,效果立竿见影。

提示词:
请将以下文本转换为JSON格式,包含字段:姓名、年龄、职业。

示例1:
文本:张三,28岁,程序员
输出:{"姓名": "张三", "年龄": 28, "职业": "程序员"}

示例2:
文本:李四,35岁,设计师
输出:{"姓名": "李四", "年龄": 35, "职业": "设计师"}

现在请转换:
文本:王五,42岁,产品经理
输出:

模型会严格按照示例的格式输出。这里有个关键点:示例的数量和质量

示例数量 效果 适用场景
1-2个 基本可用,但格式可能不稳定 简单任务,格式要求不严格
3-5个 效果稳定,格式一致 大多数任务,推荐使用
6个以上 边际效益递减,可能增加Token消耗 复杂推理任务

避坑指南:我曾经给过8个示例,结果模型开始「学习」示例中的噪声模式,反而降低了准确率。少样本不是越多越好,3-5个通常是最优解。

4.3 思维链提示:让模型「边想边说」

思维链,Chain-of-Thought,简称 CoT。这是目前最火的提示技术之一。

它的核心思想很简单:不要只让模型输出答案,让它输出推理过程

为什么会这样?因为大模型本质上是一个「下一个词预测器」。如果你直接问它答案,它可能跳过中间步骤,直接猜一个。但如果你让它一步步推理,它就能沿着逻辑链条走,准确率大幅提升。

看个对比:

普通提示:
问:小明有5个苹果,小红给了小明3个,小明又给了小刚2个。小明现在有几个苹果?
答:6个。

思维链提示:
问:小明有5个苹果,小红给了小明3个,小明又给了小刚2个。小明现在有几个苹果?
让我们一步步思考:
1. 小明最初有5个苹果。
2. 小红给了小明3个,所以小明现在有5+3=8个。
3. 小明给了小刚2个,所以小明现在有8-2=6个。
答:6个。

看到了吗?同样的答案,但思维链提示让模型「暴露」了推理过程。这在复杂任务中尤其重要。

关键发现:思维链提示不仅提高了准确率,还让模型的错误变得「可解释」。你可以从推理过程中定位问题出在哪一步。

我在项目中用过一次思维链做数学应用题。零样本下准确率只有40%,加了「让我们一步步思考」后,准确率直接跳到75%。嗯,这个提升幅度让我印象深刻。

4.4 三种提示的实战选择

好,现在你知道了三种方法。但什么时候用哪个?我总结了一个简单的决策流程:

  1. 先试零样本:如果任务简单,模型能直接理解,零样本就够了。省Token,速度快。
  2. 零样本不行,上少样本:给2-3个示例,看看效果。如果格式或内容有偏差,调整示例。
  3. 需要推理,用思维链:数学、逻辑、多步推理任务,直接上CoT。别犹豫。

个人经验:我习惯在少样本提示中也加入思维链。比如,示例里不仅给输入输出,还给出推理步骤。这样模型既学到了格式,又学到了推理方式。效果往往1+1>2。

4.5 避坑与进阶技巧

最后,分享几个我踩过的坑:

  • 示例不要「太完美」:我曾经给的都是完美示例,结果模型遇到一点噪声就崩了。后来我故意在示例里加了一些「不完美」的情况,模型的鲁棒性反而提升了。
  • 思维链不要「太长」:CoT的推理步骤建议控制在3-5步。太长了模型容易「走神」,输出无关内容。
  • 零样本的「角色」要具体:不要说「你是一个助手」,要说「你是一位资深的数据分析师,擅长处理金融数据」。越具体,模型越能进入状态。

好了,这一章的内容就到这里。零样本、少样本、思维链,这三种提示技术是每个提示工程师的「基本功」。你想想看,掌握了它们,你就能让大模型在绝大多数任务上直接干活,不需要微调,不需要标注数据。这效率,是不是很爽?

下一章,我们会聊更高级的调优策略。到时候见。