一个让你怀疑人生的实验
我们在500道不同难度的推理题上,对比了Zero-shot和Few-shot Prompt的效果。结果让人大跌眼镜:
- 在简单题上,Zero-shot准确率87%,Few-shot(3个示例)准确率91%——差异不大。
- 在中等题上,Zero-shot准确率62%,Few-shot准确率78%——显著提升。
- 在难题上,Zero-shot准确率31%,Few-shot(随机示例)准确率28%——反而下降了。
Few-shot在难题上比Zero-shot还差? 是的,这就是Few-shot的"示例污染"问题——不好的示例会把模型引导到错误的推理路径上。
Few-shot的底层机制:上下文学习
Few-shot Prompting利用的是大模型的"上下文学习"(In-Context Learning)能力——模型不需要微调,仅通过Prompt中的几个示例就能"学会"一个任务范式。
上下文学习的本质是:示例相当于在Prompt中构建了一个"任务模板",模型通过模式匹配来理解你想要什么,然后模仿这个模板来完成新任务。
但这里有一个关键陷阱:模型模仿的是"示例的格式和风格",而不是"示例的推理逻辑"。如果示例本身的推理逻辑有误,模型会忠实地模仿这些错误。
什么样的示例才是好示例
好示例的三个标准:
标准一:与目标任务高度相似。 示例和目标任务应该是同一类型的问题。如果你想测试数学推理,示例应该是数学题,而不是翻译示例。表面的相似性(相同的领域、相同的格式)比深层的相似性(相同的推理模式)更重要。
标准二:示例的难度匹配。 示例的难度应该略高于目标任务的难度,但不能太高。如果示例太简单,模型学不到有效的推理模式。如果示例太难,模型可能"学歪了"。
标准三:示例的多样性。 3个不同角度的示例,比3个相似的示例效果更好。多样性让模型理解"任务的核心要求是什么",而不是"模仿某个特定示例的格式"。
我们的反直觉结论
结论一:示例数量不是越多越好。 3个高质量示例和5个中等质量示例的效果几乎一样。超过5个示例后,边际收益递减,还可能因为Prompt过长导致模型"遗忘"前面的信息。
结论二:随机选择示例比"精心挑选"示例更危险。 随机选择示例可能导致"示例污染",尤其是在难题上。用Zero-shot先让模型自己尝试,然后根据它的弱点来设计示例,效果更好。
结论三:Zero-shot + 好的指令,经常优于Few-shot + 差的示例。 与其花时间找"完美的示例",不如花时间把指令写得更清楚。清晰的指令+Zero-shot,往往比模糊的指令+Few-shot效果更好。
结论四:2026年的模型已经足够强,Zero-shot在大多数任务上已经够用。 2023年的模型需要Few-shot来"理解任务",但2026年的模型(GPT-5、Claude 4 Opus等)在Zero-shot下的表现已经接近甚至超过了2023年Few-shot的水平。
决策框架:什么时候用Few-shot
用Few-shot的情况:
- 任务格式非常特殊(如特定的JSON结构、特殊的分析框架)
- 模型在Zero-shot下反复出错,需要"纠正"模型的行为
- 需要严格的一致性(如客服回复风格必须统一)
用Zero-shot的情况:
- 任务相对简单,模型能独立完成
- 你没有高质量的示例
- 你希望模型"自由发挥"(如创意写作、头脑风暴)
一个最终建议:先试Zero-shot,如果效果不好,再考虑加1-2个高质量示例。 不要一上来就用Few-shot,你可能会浪费token——甚至降低质量。