Skip to content

少样本示例法

有时候,你想要的效果很难用文字描述清楚——比如一种特定的语气、一种独特的格式风格。这时候,直接给例子比反复描述更有效。这种方法叫做少样本学习(Few-Shot Learning)。

为什么示例比描述更有效?

一个真实的对比

想象你要教一个新员工写产品文案:

方式A:描述要求

"写一个有吸引力的产品标题,要突出卖点,语言要生动,格式要用竖线分隔..."

员工可能还是一头雾水:"什么样的才算有吸引力?"

方式B:给示例

看这几个例子:

  • 原标题:运动水壶 → 改写后:大容量运动水壶 | 健身房补水神器,一次喝够全天所需
  • 原标题:蓝牙耳机 → 改写后:主动降噪蓝牙耳机 | 沉浸式音质,通勤路上从此隔绝噪音

现在你来改写这个:保温杯

员工立刻就懂了!

少样本学习就是这样——用2-3个实际例子教会AI你想要的风格和格式。

少样本学习的基本模式

任务描述

【示例1】
输入:xxx
输出:xxx

【示例2】
输入:xxx
输出:xxx

现在请处理:
输入:yyy
输出:

AI会从示例中学习"输入→输出"的模式,然后应用到新输入上。

实战案例:产品标题改写

场景描述

你想让AI把电商产品标题改写成更有吸引力的版本。光靠描述很难说清楚那个"感觉"。

使用少样本学习

将电商产品标题改写为更有吸引力的版本。

【示例1】
原标题:男士黑色休闲裤
改写后:舒适弹力百搭休闲裤 | 男士通勤首选,一裤多穿不费心

【示例2】
原标题:蓝牙耳机降噪
改写后:主动降噪蓝牙耳机 | 沉浸式音质,通勤路上从此隔绝噪音

【示例3】
原标题:女士帆布包
改写后:复古帆布托特包 | 大容量轻便,上课购物都能拿得出手

请改写以下标题:
原标题:不锈钢保温杯

AI从三个示例中学到了:

  • 固定格式:产品核心描述 | 卖点描述
  • 表达风格:面向用户利益,情感化表达
  • 词汇特点:使用"神器"、"首选"等吸引眼球的词

输出示例:

改写后:大容量不锈钢保温杯 | 12小时长效保温,随时随地喝上一口热饮

好示例的三个标准

标准一:覆盖典型变体

如果是分类任务,每个类别都要有示例,否则AI会对没见过例子的类别判断失准:

# 情感分类示例,必须三类都覆盖

【示例1】
评论:这个产品真的很好用!
分类:positive

【示例2】
评论:完全是浪费钱,后悔购买。
分类:negative

【示例3】
评论:收到了,外观和图片一致。
分类:neutral

现在请分类:
评论:还行吧,没什么特别的。
分类:

为什么这很重要?

如果只给了"positive"和"negative"的示例,AI看到中性评论时可能不知道如何处理,强行归类为正面或负面。

标准二:格式完全统一

所有示例的输入格式和输出格式必须保持一致。即使一个小差异,也会让AI的输出格式混乱:

❌ 格式不统一

【示例1】
输入:张三,28岁
输出:{"name": "张三", "age": 28}

【示例2】
输入:李四,35岁
输出:{name: "李四", age: 35}  ← 少了引号!

✅ 格式完全统一

【示例1】
输入:张三,28岁
输出:{"name": "张三", "age": 28}

【示例2】
输入:李四,35岁
输出:{"name": "李四", "age": 35}

【示例3】
输入:王五,42岁
输出:{"name": "王五", "age": 42}

标准三:质量高于数量

2-3个精心设计的示例 > 10个随便凑的示例

每个示例都应该是你理想输出的完美代表:

❌ 低质量示例

【示例】
写一个函数:
def func():
    pass

✅ 高质量示例

【示例】
需求:写一个计算阶乘的递归函数
代码:
def factorial(n: int) -> int:
    """计算n的阶乘
    
    Args:
        n: 非负整数
        
    Returns:
        n的阶乘
        
    Raises:
        ValueError: 当n为负数时
    """
    if n < 0:
        raise ValueError("n必须为非负整数")
    if n <= 1:
        return 1
    return n * factorial(n - 1)

高质量的示例展示了类型提示、文档字符串、错误处理——AI会学习并复制这些优秀实践。

更多实战案例

案例一:JSON格式转换

将用户信息转换为JSON格式。

【示例】
输入:张三,28岁,邮箱[email protected],会Python和JavaScript
输出:
{
  "name": "张三",
  "age": 28,
  "email": "[email protected]",
  "skills": ["Python", "JavaScript"]
}

现在请处理:
输入:李四,35岁,邮箱[email protected],会Java、Go和Rust

案例二:代码注释生成

为Python函数添加中文注释。

【示例1】
代码:
def add(a, b):
    return a + b

添加注释后:
def add(a, b):
    """两数相加
    
    Args:
        a: 第一个数
        b: 第二个数
        
    Returns:
        两数之和
    """
    return a + b

【示例2】
代码:
def find_max(lst):
    return max(lst)

添加注释后:
def find_max(lst):
    """找出列表中的最大值
    
    Args:
        lst: 数字列表
        
    Returns:
        列表中的最大值
    """
    return max(lst)

请为以下函数添加注释:
代码:
def calculate_average(numbers):
    return sum(numbers) / len(numbers)

案例三:错误信息解释

将技术错误信息转换为用户友好的提示。

【示例1】
错误:ConnectionError: Max retries exceeded
解释:网络连接失败,请检查您的网络设置后重试。

【示例2】
错误:ValueError: invalid literal for int()
解释:输入格式不正确,请输入有效的数字。

【示例3】
错误:FileNotFoundError: No such file or directory
解释:找不到指定的文件,请确认文件路径是否正确。

请解释以下错误:
错误:PermissionError: [Errno 13] Permission denied

与其他技巧组合使用

少样本学习可以和其他技巧叠加,效果更好:

组合一:角色设定 + 少样本

你是一位产品文案专家,擅长写出吸引眼球的产品描述。

请将以下产品标题改写为更有吸引力的版本。

【示例】
原标题:运动水壶
改写后:大容量运动水壶 | 健身房补水神器,一次喝够全天所需

请改写:
原标题:儿童安全座椅

组合二:少样本 + 格式控制

请将用户反馈分类,并提取关键信息。

【示例】
反馈:收到的商品和描述不符,申请退款。
分类:售后问题
关键词:商品不符、退款
优先级:高

请处理以下反馈:
反馈:希望能增加深色模式,夜间使用更舒服。

组合三:少样本 + 思维链

请分析代码的时间复杂度。

【示例】
代码:
for i in range(n):
    for j in range(n):
        print(i, j)

分析过程:
- 外层循环执行n次
- 内层循环每次执行n次
- 总操作次数 = n × n = n²
结论:时间复杂度为 O(n²)

请分析以下代码:
代码:
for i in range(n):
    print(i)
for j in range(n):
    print(j)

零样本、单样本、少样本的区别

方法示例数量适用场景
零样本0个简单任务,格式不敏感
单样本1个只需展示格式
少样本2-5个需要学习风格、模式
多样本5个以上复杂模式,很少需要

经验法则:从零样本开始,效果不好就加示例。通常2-3个就够了,不必太多。

小结

少样本学习的核心要点:

要点说明
覆盖变体每种情况都要有示例
格式统一所有示例格式完全一致
质量优先精心设计的2-3个示例胜过10个凑数的
可组合与角色设定、格式控制等技巧叠加效果更好

专业建议

建立自己的"示例库",把工作中常用的有效示例保存下来,随时复用。好的示例是可以重复利用的宝贵资产。

下一步

掌握了少样本学习后,让我们学习 防幻觉策略,减少AI"一本正经胡说八道"的情况。