第4章:少样本与上下文
有时候,仅仅告诉 AI "做什么"还不够,你需要告诉它"怎么做"。本章将教你如何通过提供示例(少样本学习)和背景信息(上下文),让 AI 精准理解你的意图。
4.1 零样本(Zero-shot)
零样本学习是指不给 AI 任何示例,直接提出问题或任务。这是最基础的交互方式,也是你在使用 ChatGPT 等工具时最常用的方式。
请将以下句子翻译成英文:
"今天天气真好,我想去公园散步。"
零样本学习的优点:
- ✅ 简单快捷,不需要准备示例
- ✅ 适合通用、标准化的任务
- ✅ 适用于 AI 已经训练得很充分的领域
零样本学习的局限:
- ❌ 对于特殊格式或风格要求,可能输出不符合预期
- ❌ 需要多次尝试才能得到满意结果
- ❌ 难以控制输出的具体形式
4.2 少样本(Few-shot)
少样本学习(Few-shot Learning)是指在提示词中提供 1-3 个示例,让 AI 通过观察这些示例来理解你想要的输出格式、风格和规则。
请判断以下句子的情感倾向(正面/负面/中性):
示例1:
输入:这部电影真的太精彩了,强烈推荐!
输出:正面
示例2:
输入:产品质量一般,没有什么特别的。
输出:中性
示例3:
输入:等了两个小时,服务态度还很差,太失望了。
输出:负面
现在请判断:
输入:虽然价格有点贵,但是物有所值,包装也很精美。
输出:
为什么少样本有效?
少样本学习之所以有效,是因为 AI 模型具有以下特性:
| 机制 | 说明 | 效果 |
|---|---|---|
| 模式识别 | AI 会从示例中提取输入和输出之间的对应关系 | 学会任务规则,应用到新输入 |
| 风格模仿 | AI 会学习示例的语气、用词和表达方式 | 输出风格与示例保持一致 |
| 格式复制 | AI 会观察输出的结构和格式 | 遵循相同的格式规范 |
4.3 如何构造少样本示例
构造有效的少样本示例是一门艺术,以下是几个关键原则:
4.3.1 输入→输出的配对
每个示例都应该清晰地展示"给定什么输入,应该产生什么输出":
示例N:
输入:[具体的输入内容]
输出:[期望的输出内容]
你也可以根据需要使用其他标签,如:
问题:→答案:原文:→改写:用户:→回复:
4.3.2 示例要典型
选择的示例应该具有代表性,能够覆盖主要的场景和边界情况:
任务:将客户的非正式反馈转换为正式的客服回复
请将以下客户的非正式反馈转换为正式的客服邮件:
示例1(标准情况):
输入:东西收到了,还不错
输出:尊敬的客户,感谢您购买我们的产品。很高兴得知您
对商品满意,如有任何需要,欢迎随时联系我们。
示例2(负面反馈):
输入:这个颜色和图片差太多了,我要退货
输出:尊敬的客户,非常抱歉给您带来了不好的购物体验。
关于您反映的颜色差异问题,我们深表歉意。您可以申请
退货退款,具体操作流程如下:...
示例3(需要补充信息):
输入:什么时候能发货?
输出:尊敬的客户,感谢您的咨询。您的订单预计将于
[日期]发货,快递单号为[单号],您可以通过[链接]查询
物流信息。如有其他问题,欢迎随时联系客服。
4.3.3 示例之间用分隔符区分
使用清晰的分隔符可以让 AI 更好地区分不同示例:
---
示例1:
输入:...
输出:...
---
示例2:
输入:...
输出:...
---
4.3.4 示例数量的选择
| 样本数 | 名称 | 适用场景 |
|---|---|---|
| 1个 | One-shot | 简单任务,格式明确的情况 |
| 2-3个 | Few-shot | 大多数任务,推荐数量 |
| 5+个 | Many-shot | 复杂任务,需要展示多样性的情况 |
4.4 少样本完整示例
下面提供几个实际可用的完整示例,你可以直接复制修改使用。
示例1:非正式语言转正式邮件
请将以下句子转换为正式邮件用语:
示例1:
输入:老板,明天我要请假
输出:尊敬的领导,您好!因个人原因,我想申请明天([日期])
一天的假期。手头的工作已安排妥当/已与同事交接,期间如有
紧急事项,您可以通过电话联系我。望批准,谢谢!
示例2:
输入:客户说要退货
输出:关于您提出的退货需求,我们已收到并会尽快处理。请您
提供订单号,我们将安排快递员上门取件。退款将在收到退货后
3-5个工作日内原路退回。如有任何疑问,欢迎随时联系客服。
示例3:
输入:会议改到下午3点
输出:各位同事,原定于上午的会议现调整至今天下午3点举行,
地点不变。请大家知悉并准时参加。如时间冲突无法参会,
请提前告知。谢谢配合!
现在请转换:
输入:这个方案不行,重做
示例2:文本风格转换
请将以下文字转换为幽默风趣的风格:
示例1:
原文:今天下雨了,我没带伞
转换:天空突然开启了"泼水模式",而我,一个自信满满的
"免伞星人",此刻正接受着大自然免费的全方位淋浴服务。
示例2:
原文:这个项目 deadline 快到了,我们要加班
转换:命运的齿轮开始转动,deadline 这个老朋友又来敲门了。
看来今晚要和办公室的灯光来一场浪漫的约会了~
示例3:
原文:网速很慢,视频加载不出来
转换:这网速仿佛在重温拨号上网时代的优雅与从容,视频
加载的进度条像是在进行一场马拉松,而我,只能静静地
做一名合格的观众。
现在请转换:
原文:早上闹钟没响,我迟到了
示例3:数据格式转换
请将以下自然语言描述转换为 JSON 格式:
示例1:
输入:张三,男,28岁,软件工程师,月薪15000
输出:
{
"name": "张三",
"gender": "男",
"age": 28,
"occupation": "软件工程师",
"salary": 15000
}
示例2:
输入:苹果iPhone 15,价格5999元,库存100台,颜色有黑色、白色、蓝色
输出:
{
"product": "苹果iPhone 15",
"price": 5999,
"currency": "CNY",
"stock": 100,
"colors": ["黑色", "白色", "蓝色"]
}
现在请转换:
输入:北京市朝阳区建国路88号,张三收,邮编100000,
电话13800138000
4.5 上下文学习技巧
除了示例,提供适当的上下文信息也能显著提升 AI 的表现。上下文学习(In-context Learning)是指在提示词中加入背景信息、相关文档或历史记录。
4.5.1 提供背景文档
当任务涉及特定领域的知识时,提供相关文档可以让 AI 更准确:
请根据以下公司规章制度,回答员工的问题。
【公司请假制度】
1. 事假:需提前3天申请,每年不超过10天
2. 病假:需提供医院证明,带薪3天/月,超出按事假处理
3. 年假:入职满1年享有5天,满5年享有10天
4. 婚假:10天,需提前1个月申请并提供证明
5. 丧假:3天,直系亲属去世
员工提问:我刚入职半年,下周要结婚,能请几天假?
4.5.2 提供历史对话
在多轮对话中,提供之前的对话记录可以保持连贯性:
以下是我之前和您的对话:
用户:我想买一台笔记本电脑,主要用于编程
AI:推荐考虑 MacBook Pro 或 ThinkPad X1 Carbon,
都有很好的键盘和性能。
用户:MacBook 会不会太贵了?
AI:确实价格较高,入门款 M3 MacBook Air 9999元起。
如果预算有限,可以考虑联想小新 Pro,性价比更高。
基于以上对话,请回答:
用户:小新 Pro 续航怎么样?
4.5.3 提供相关数据
对于数据分析类任务,直接提供数据可以获得更准确的结果:
请根据以下销售数据,分析各产品线的表现:
【2024年第一季度销售数据】
产品A:销售额 120万,销量 3000件,退货率 2%
产品B:销售额 80万,销量 2000件,退货率 5%
产品C:销售额 200万,销量 1500件,退货率 1%
产品D:销售额 60万,销量 4000件,退货率 8%
请分析:
1. 各产品线的表现如何?
2. 有哪些值得关注的问题?
3. 给出改进建议。
4.6 高级技巧
4.6.1 负样本示例
除了展示"应该怎么做",有时也需要展示"不应该怎么做":
请将以下句子改写得更加简洁,以下是示例:
正确示例:
输入:由于天气原因,原定于明天的户外活动将延期举行
输出:明天户外活动因天气延期
错误示例(不要这样写):
输入:由于天气原因,原定于明天的户外活动将延期举行
输出:因为天上下雨了,所以明天的活动不办了
(错误原因:过于口语化,信息不完整)
现在请改写:
输入:鉴于当前的市场形势,公司决定推迟新产品的发布计划
4.6.2 思维链示例
对于需要推理的任务,展示思考过程会很有帮助:
请解决以下数学问题,并展示思考过程:
示例:
问题:小明有15个苹果,给了小红5个,又买了8个,还剩几个?
思考:
1. 小明原有15个苹果
2. 给了小红5个后,剩下 15 - 5 = 10个
3. 又买了8个,现在有 10 + 8 = 18个
答案:18个
现在请解决:
问题:一个长方形长12厘米,宽8厘米,它的面积是多少?
如果周长增加10厘米,长不变,新的宽是多少?
4.6.3 组合使用角色设定和少样本
将第3章和第4章的技巧结合使用,效果更佳:
你是一位资深的文案编辑,擅长将复杂的商业语言转换为
通俗易懂的内容。请参考以下示例风格:
示例1:
原文:本公司致力于为客户提供优质的产品和服务
改写:我们只想做一件事:让好产品走进千家万户
示例2:
原文:该解决方案可显著提升企业运营效率
改写:用了这套方案,效率提升肉眼可见
现在请改写:
原文:通过数字化转型,企业可以实现降本增效的目标
4.7 常见错误与解决方法
| 常见错误 | 问题表现 | 解决方法 |
|---|---|---|
| 示例不一致 | AI 的输出风格不统一 | 检查示例之间是否存在矛盾,确保格式一致 |
| 示例太少 | AI 没有学会正确的模式 | 增加示例数量,特别是复杂任务 |
| 示例过于简单 | 遇到复杂输入时表现不佳 | 示例应涵盖不同难度和场景 |
| 上下文过长 | 超出 token 限制或干扰理解 | 精简上下文,保留关键信息 |
| 最后示例不完整 | AI 没有输出或输出异常 | 确保最后一个示例在"输入:"处结束,让 AI 补全输出 |
4.8 实战练习
-
任务1:关键词提取
从文章中提取3-5个关键词。请设计2-3个示例。示例输入:"人工智能正在改变我们的生活方式,从智能家居到自动驾驶,AI技术无处不在。"
-
任务2:语气判断
判断客户留言的语气是"满意"、"抱怨"还是"咨询"。请设计示例覆盖三种情况。 -
任务3:代码注释
为 Python 函数添加中文文档字符串。请设计包含简单函数和复杂函数的示例。
本章小结
📝 核心要点回顾
- 零样本适合简单任务,少样本适合需要控制格式或风格的任务
- 构造少样本示例时,要注意输入输出配对、典型性、分隔符
- 一般使用 2-3 个示例效果最好,称为 Few-shot Learning
- 上下文学习通过提供背景文档、历史对话、相关数据来提升效果
- 可以组合使用角色设定 + 少样本,获得更好的输出质量
🎯 学习建议
少样本学习是一种"授人以渔"的技巧——你不是在告诉 AI 每一步怎么做,而是在展示"什么样的输入对应什么样的输出"。多加练习,你会越来越擅长设计有效的示例。