4、零样本与少样本提示:Zero-shot、Few-shot、Chain-of-Thought (CoT) 原理与实战

好,咱们今天聊点硬核的。

零样本、少样本、思维链——这三个词,你肯定听过。但说实话,很多人只是知道概念,真到用的时候,还是懵的。

我刚开始做提示词工程时,也踩过不少坑。有一次,我让模型直接回答一个复杂的逻辑推理题,结果它给我编了一堆看似合理、实则完全错误的答案。后来我才明白——不是模型不行,是我没给它「思考的脚手架」。

今天,我就把这三板斧的原理和实战技巧,掰开了揉碎了讲给你听。

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

零样本提示,说白了就是——不给任何例子,直接让模型干活。

你可能会问:「这能行吗?」

嗯,大部分时候是行的。因为大模型在预训练阶段已经见过海量数据,很多任务它天生就会。比如:

用户:将以下句子翻译成英文:「今天天气真好。」

模型直接输出「The weather is nice today.」——这就是零样本。

核心要点:零样本提示的关键在于「指令清晰」。你给的任务描述越明确,模型的表现越好。

我在项目中遇到过一种情况:让模型做情感分类,只写「判断这句话是正面还是负面」。结果模型输出了一堆「这句话是正面的,因为...」——它把分类做成了分析。后来我改成「只输出一个词:正面或负面」,效果立竿见影。

实战技巧:零样本提示时,尽量用「命令式」语气。比如「列出」「总结」「翻译」「分类」,而不是「你能帮我...吗?」

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

零样本搞不定怎么办?那就给几个例子。

少样本提示,就是在 prompt 里塞几个输入-输出的示例,让模型照着你的路子走。

举个例子,我想让模型做「反讽检测」——这个任务比较刁钻,零样本经常翻车。于是我给了两个例子:

示例1:
输入:你真是太「准时」了,迟到了两小时。
输出:反讽

示例2:
输入:这道菜味道不错,我吃了三碗饭。
输出:非反讽

现在,判断下面这句话:
输入:你的方案「太棒了」,老板看完直接扔进了垃圾桶。
输出:

模型输出「反讽」——正确。

关键原则:少样本不是越多越好。我个人的经验是,3-5个高质量示例,远胜于10个凑数的。每个示例要覆盖不同的变体,而不是重复同一个模式。

你想想看,如果你给模型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个。

看到了吗?模型通过「自言自语」的方式,把推理过程写出来,答案自然就对了。

核心原理:CoT 相当于给模型提供了一个「工作记忆区」。模型在写中间步骤时,每一步都在为下一步提供上下文,这样就不会忘记前面的信息。

4.4 三种方法的实战选择

你可能会问:「那我到底该用哪一种?」

我个人的习惯是这样的:

任务类型 推荐方法 原因
简单分类(情感、主题) 零样本 模型预训练中已覆盖,无需示例
格式转换(JSON、表格) 少样本 给1-2个格式示例,模型就能对齐
逻辑推理(数学、编程) CoT 需要展示步骤,避免跳跃式错误
复杂任务(多步决策) 少样本 + CoT 既给示例,又要求推理,效果最佳

我的经验:遇到新任务时,永远先试零样本。如果不行,加1个示例。还不行,加CoT。不要一上来就堆例子——成本高,而且可能引入噪声。

4.5 实战案例:用CoT解决数学应用题

我记得有一次,我需要让模型自动批改小学数学题。直接问「这道题对不对」,模型经常被带偏。后来我用了CoT,效果好了很多。

题目:一个长方形长8厘米,宽5厘米,求周长。
请一步步推理,最后给出答案。

模型输出:
第一步:长方形周长公式是 2 × (长 + 宽)
第二步:长 = 8厘米,宽 = 5厘米
第三步:长 + 宽 = 8 + 5 = 13厘米
第四步:2 × 13 = 26厘米
答案:26厘米

你看,模型把公式、代入、计算每一步都写出来了。如果某一步错了,我也能定位到具体问题。

注意事项:CoT 不是万能的。对于需要「直觉判断」的任务(比如审美、幽默),CoT 反而可能让模型过度分析,导致结果变差。这时候,零样本反而更好。

4.6 进阶技巧:Few-shot CoT

把少样本和思维链结合起来,就是 Few-shot CoT。

什么意思?就是给几个示例,每个示例都包含完整的推理过程。模型看了之后,不仅学会了「输出格式」,还学会了「思考方式」。

示例1:
问:小明有10元,买笔花了3元,买本子花了4元,还剩多少?
推理:10 - 3 - 4 = 3元
答:3元

示例2:
问:小红有15个糖果,分给5个朋友,每人分几个?
推理:15 ÷ 5 = 3个
答:3个

现在,请回答:
问:一个班级有40人,男生占3/5,女生有多少人?
推理:

模型会接着写:「40 × (1 - 3/5) = 40 × 2/5 = 16人」——完美。

核心价值:Few-shot CoT 是目前最稳定的提示策略之一。它既给了模型「参考案例」,又给了「推理路径」,双保险。

4.7 总结与建议

好了,咱们来捋一捋今天的内容:

  • 零样本提示:适合简单任务,指令要清晰,不要啰嗦。
  • 少样本提示:适合格式敏感或边缘案例多的任务,示例要精不要多。
  • 思维链:适合逻辑推理类任务,让模型「边想边写」。
  • Few-shot CoT:最强组合,适合复杂多步任务。

最后说一句:这些方法不是互斥的。实际项目中,我经常混合使用。比如先给一个CoT示例,然后让模型零样本推理——这叫「预热」。效果往往比纯零样本好很多。

嗯,今天就到这儿。下一章咱们聊聊「角色扮演提示」——怎么让模型扮演一个特定角色,输出更符合场景的内容。到时候见。