同一个大模型,加不加几个例子成绩差一截:few-shot(少样本)一次讲明白(2026入门)

同一个大模型,加不加几个例子成绩差一截:few-shot(少样本)一次讲明白(2026入门)

你肯定见过这样的对话:让 AI「帮我写个周报」,它洋洋洒洒写了一堆,风格浮夸,全是套话。你把上周写得最好的那份周报贴上去,说「照这个风格写」,它的输出立刻收敛,像换了个人。

这个过程里没有人训练模型,也没有改任何设置。你只是给了它几个例子。

这就是 few-shot(少样本提示)。它的英文直译是「少样本学习」,但注意,它不是训练,不更新任何参数,本质上是把例子写进提示词里。今天这篇把它的来龙去脉讲清楚,最后给你什么时候用、怎么用的实操判断。

先说 zero-shot、one-shot、few-shot 三个词

这三个词出自同一篇论文,好东西是配对出现的,一起讲。

  • zero-shot(零样本):只给任务描述,一个例子都不给。「把这句话翻译成英文」。
  • one-shot(单样本):给一个例子。「参照这条已分类的记录,给新记录分类」。
  • few-shot(少样本):给几个例子,一般两到十个。「这是三条已经分好类的记录,照着分下面这条」。

区分它们还有一个更直白的维度:解决同一个任务,你也可以用几百上千条数据去微调(fine-tuning)模型。few-shot 和微调的本质区别是改不改参数。few-shot 只改本次对话里的提示词,关掉窗口就结束;微调会真实改动模型权重,训练完就固化了。

源起:GPT-3 那篇论文

这个概念是 OpenAI 的 GPT-3 带火的。2020 年 5 月发布的论文 Language Models are Few-Shot Learners(arXiv 编号 2005.14165)里,GPT-3 只靠提示词里的几个示例,在翻译、问答、算术、乱序词还原这些任务上就拿到了和当时精调后模型相当的成绩。

Raffel 等人在 T5 论文(arXiv 1910.10683)里也做过验证:不用改参数,靠输入侧的格式和少量样本,模型就能在多种 NLP 任务上拿到接近精调的效果。

在 2020 年,这件事的冲击力在于:以前的 NLP 模型每做一个新任务,都要收集几千上万条标注数据再训练一轮。GPT-3 证明大模型可以不做这个,一张「提示词 + 示例」的说明卡就够了。这也是今天所有提示词工程的地基。

为什么加例子有效?

流行模型里现在主流的 Transformer 架构里有一种机制,能让模型对提示词里刚出现的内容做「临时照抄」,不需要长时间记忆。所以当你给出两类已分好类的样本,模型就能自动提取出分类维度,把新样本归到对应的那一类去。

举个真实场景:你要按内部流程给客服消息分类,在提示词里贴了两条已分类的历史工单,一条标「账号问题,转 A 流程」,一条标「其他投诉,转 Z 流程」。模型遇到新消息时,会自动对齐你给的分类维度,而不是自己发明一套标签。

还有一个细节很实用:格式比内容更重要。给定样本的格式,比如字段分隔、开头的方法名,模型会保持和样本一致而不是自创字段。所以写示例时结构要清晰,正确空行,字段命名和正式系统保持一致。

什么时候用:三种状态,对应不同打法

不用死记概念,用场景判断。

任务描述清楚,输出自由度大(写文案、解释概念、翻译),先用 zero-shot 试。这类任务模型见得太多,加例子收效少。例外是风格:需要特定口吻、特定结构时,一个真实的好例子胜过十段形容词式的要求。

任务有固定输出格式(分类、抽取、版本响应、改写成表格),few-shot 明显更稳。示例的存在让模型在格式上和自己「对齐」,而不是各任务之间的「自由发挥」。

任务本身有大量特殊性(高度定制的行业术语、内部流程、非公开的结构),few-shot 能撑,但撑不动就找微调。经验法则是:同一条提示词每天要用几百次,值得微调;偶尔用一次的,few-shot 就够。

怎么写例子才有效

几个实践中被反复验证的写法。

  • 例子要覆盖有代表性的情况,尤其是边界 case。三个全是最简单的正面例子,模型遇到复杂情况就露馅。
  • 格式必须自始至终一致。模型会优先抄例子,包括例子的错误。所以自己先把例子检查一遍。
  • 保证例子的正确性。模型对例子里的错误很敏感,标注错了反而把模型带偏。
  • 控制平衡数量,两到五个通常够用,例子每多加一个的效果都会递减,而上下文窗口和费用是实打实涨的。
  • 想让它解释一下:给例子时连推理过程一起给(「这条是故障反馈,因为用户提到了崩溃」),效果比只给答案更好。这个思路的正式名字是思维链(CoT),2022 年 Google 的论文(arXiv 2201.11903)做过系统验证,值得单独写一篇。

一个能直接抄的模板

把上面的要点落成一个可复用的结构,按这个顺序写进提示词:

任务描述:一句话说明要做什么、输出格式是什么。
示例 1:输入 + 正确输出(带代表性)
示例 2:输入 + 正确输出(不同类别或边界情况)
(可选示例 3)
新输入:真实要处理的内容。

示例之间用统一的分隔符隔开,模型对结构的对齐比对文字的理解更直接。分类任务里,如果类别多,记得每个类别至少出现一个例子。

收个尾

few-shot 本质上是在向模型提供「任务说明书 + 表填好的样例」。给不给出样例,模型答不答得对、答得稳,差别确实存在。而这也正是提示词工程最有性价比的地方:不用训练,不加装任何东西,把例子写对就能做到。下次遇到模型输出不稳定,先别调 temperature,回头看看,你给了几个例子。

发表评论