首页Home 产品Products 服务Services 案例Work 知识库Blog 关于About 联系Contact
KNOWLEDGE · 2026-09

少样本示例(Few-Shot)提示词实战:3 个例子稳定大模型输出

Few-shot prompting in practice: 3 examples for stable outputs

#提示词工程 #Few-Shot #大模型 #结构化输出

同样的任务,普通提示词输出飘忽不定,加上三五个示例后立刻稳定——这是 Few-Shot(少样本)提示词最直观的威力。原理并不神秘:大模型在预训练阶段就是从海量「输入→输出」示例里学会任务的,你在提示词里给示例,等于把任务映射回它最熟悉的形态。本文讲透 Few-Shot 的三个作用、示例选取三原则,并给出三套经过实战验证、可直接复制的模板与检查清单。

为什么几个例子比一大段指令更有效

零样本指令(Zero-Shot)要求模型「先理解规则再执行」;Few-Shot 则是直接给「照着做」的样例。两者的差距体现在三个层面:

  • 格式层面:示例直接定义了输出结构,模型照抄格式的成功率,远高于「请按以下 JSON 格式输出」这类文字描述
  • 风格层面:示例隐含了语气、详略与术语习惯,这些特征很难用规则穷举,但样例一看就懂
  • 推理层面:带推理过程的示例(配合思维链使用效果更佳)示范了解决问题的路径,而不只是最终答案

一句话概括:指令规定「不能做什么」,示例规定「输出应该长什么样」。对追求稳定交付的 Agent 任务,示例是性价比最高的约束手段。

示例选取三原则

原则一:覆盖边界,不只给标准答案

模型最容易在边界情况翻车。所以示例里至少要有一个「难例」:格式特殊、输入残缺、意图模糊或包含陷阱。一个处理过边界的示例,胜过三个顺风顺水的标准答案。

原则二:正反对照,明示不该做什么

在输出类任务中,给出「错误示例 + 错在哪」往往比三条正确示例更能压低错误率,尤其是格式类错误。注意两点:反例数量要少于正例;反例必须放在示例列表末尾,避免模型反向学到错误模式。

原则三:难度递进,从简单到复杂

示例顺序影响学习效果。先给简单样例建立基本格式,再给复杂样例展示处理手法,最后放反例收尾。这与人类学习新技能的认知顺序一致,模型同样受用。

实战模板一:稳定输出 JSON

结构化输出是 Agent 场景的刚需。下面的模板用「代码块包裹 + 三个正例 + 一个反例」锁定格式,比任何格式说明都可靠:

任务:把用户反馈整理成 JSON,字段:id、category、sentiment、summary。
示例:
输入:App 打开就闪退,气死了
输出:{"id": 1, "category": "bug", "sentiment": "negative", "summary": "App 启动即闪退"}
输入:希望能支持深色模式,晚上用太刺眼
输出:{"id": 2, "category": "feature_request", "sentiment": "neutral", "summary": "请求支持深色模式"}
输入:充值后余额没到账,联系客服也没回复
输出:{"id": 3, "category": "billing", "sentiment": "negative", "summary": "充值未到账且客服无响应"}
注意:category 只能是 bug / feature_request / billing / other 之一。
反例(错误):
输入:谢谢你们,很好用
输出:{"id": 4, "category": "praise", "sentiment": "positive"}(错误:category 枚举外 + 缺少 summary)
正确:{"id": 4, "category": "other", "sentiment": "positive", "summary": "整体满意"} 
现在处理:输入:账号密码都对,但一直提示登录失败

模板要点:枚举值在示例后单独用一行「注意」重申,反例放在最后并给出错误原因,最后用「现在处理:」显式交接任务。这套结构在大多数模型上都能把 JSON 解析失败率压到接近零。

实战模板二:文案风格迁移

风格是最难用规则描述的东西,但三个示例就能锁定。给客服话术或产品文案做风格统一时,用这个模板:

任务:把技术描述改写成「朋友式的产品文案」,语气亲切、短句为主、不使用术语。
示例:
技术:该模块通过 WebSocket 实现实时数据推送
文案:数据一到,秒级送达,不用刷新页面
技术:系统支持基于角色的细粒度权限控制
文案:谁看什么、能改什么,你说了算
技术:已完成数据库层的读写分离优化
文案:人多了也不卡,读写在后台各自忙活
现在改写:技术:本平台采用端到端加密传输协议保障数据安全

要点:正例之间保持同一种语气与句式节奏,难度不递增也没关系(风格任务的关键是「一致性」而非「复杂度」)。若目标风格更具体(如「小红书风」「学术风」),把示例换成对应风格的成品即可。

实战模板三:代码生成带约束

让模型写代码时,Few-Shot 能同时约束「用的库」「命名风格」和「错误处理」,比在提示词里写十条规则更省 token、更有效:

任务:写 Python 函数实现给定需求。约定:只用标准库、函数名用 snake_case、必须处理输入为空的情况。
示例:
需求:计算列表平均值
代码:
def avg(nums):
    if not nums:
        return 0.0
    return sum(nums) / len(nums)
需求:统计字符串里每个字符出现次数
代码:
def char_count(s):
    counts = {}
    for ch in s:
        counts[ch] = counts.get(ch, 0) + 1
    return counts
现在写:需求:把字典按 value 降序排序,返回前 k 个键

模型会从示例里学到「先判空、用标准库、带类型直觉」的隐性规范,输出风格与示例高度一致,大幅减少 review 成本。

常见错误与避坑

  • 示例与任务领域不一致:给代码任务塞文案示例,等于没给示例,务必同领域、同难度
  • 示例太长挤占上下文:每个示例控制在 2~6 行,三个好例子胜过十个啰嗦例子
  • 反例放中间:反例位置不对会让模型学到错误模式,一律放最后
  • 忘记显式交接:示例结束后用「现在处理:」或「请输出:」收尾,防止模型把示例当任务执行
  • 示例顺序随意:不按难度递进排列,模型容易在简单任务上过度复杂化

Few-Shot 检查清单

  • 示例数量 3~5 个,至少包含一个边界/困难案例
  • 正例在前、反例在最后,反例标注错误原因
  • 示例与目标输出保持完全相同的格式与风格
  • 枚举、约束用一行「注意」单独重申,不依赖示例隐含
  • 结尾用「现在处理:/ 请输出:」显式交接新输入
  • 上线前用 5 组真实输入回归测试,确认输出格式稳定
给模型的示例,不是「参考答案」,而是「格式契约」: 三个好例子,胜过三百字规则。