Skip to content
清晨的一缕阳光
返回

Few-Shot 样本工程设计

Few-Shot 样本工程设计

Few-Shot Learning 通过提供示例让模型快速学习任务,样本设计直接影响效果。

一、核心概念

1.1 什么是 Few-Shot

Few-Shot = 少量示例 + 任务描述

Zero-Shot: 无示例
One-Shot: 1 个示例
Few-Shot: 2-5 个示例

1.2 效果对比

任务:情感分析

Zero-Shot:
"分析这句话的情感"
准确率:65%

One-Shot:
"示例:我喜欢这个产品 → 正面
分析这句话的情感"
准确率:75%

Few-Shot (3 个):
"示例:
我喜欢这个产品 → 正面
质量太差了 → 负面
还可以 → 中性
分析这句话的情感"
准确率:85%

二、样本选择

2.1 代表性原则

# ✅ 推荐:覆盖各种情况
examples = [
    {"text": "很好", "label": "正面"},
    {"text": "太差", "label": "负面"},
    {"text": "还行", "label": "中性"},
]

# ❌ 避免:单一类型
examples = [
    {"text": "很好", "label": "正面"},
    {"text": "不错", "label": "正面"},
    {"text": "优秀", "label": "正面"},
]

2.2 多样性设计

# 多样性维度
diversity = {
    "length": [短,中,长],
    "style": [正式,口语,专业],
    "complexity": [简单,中等,复杂],
    "edge_cases": [边界情况,异常值]
}

2.3 难度递进

examples = [
    # 简单
    {"input": "1+1", "output": "2"},
    # 中等
    {"input": "(2+3)*4", "output": "20"},
    # 复杂
    {"input": "sum([1,2,3,4,5])", "output": "15"},
]

三、样本格式

3.1 标准格式

template = """
示例{index}:
输入:{input}
输出:{output}
"""

3.2 思维链格式

template = """
示例{index}:
输入:{input}
思考:{reasoning}
输出:{output}
"""

3.3 对比格式

template = """
示例{index}:
输入:{input}
正确输出:{correct_output}
错误输出:{wrong_output}
错误原因:{error_reason}
"""

四、质量评估

4.1 评估指标

metrics = {
    "accuracy": "样本是否正确",
    "relevance": "与任务的相关性",
    "diversity": "样本多样性",
    "clarity": "表述清晰度",
    "coverage": "场景覆盖率"
}

4.2 自动化评估

def evaluate_examples(examples, task):
    scores = {
        "consistency": check_consistency(examples),
        "diversity": check_diversity(examples),
        "relevance": check_relevance(examples, task),
    }
    return sum(scores.values()) / len(scores)

4.3 A/B 测试

def ab_test_examples(test_set, variant_a, variant_b):
    results = {"a": [], "b": []}
    
    for item in test_set:
        pred_a = llm.generate(format_prompt(item, variant_a))
        pred_b = llm.generate(format_prompt(item, variant_b))
        
        results["a"].append(evaluate(pred_a, item["expected"]))
        results["b"].append(evaluate(pred_b, item["expected"]))
    
    return compare_results(results["a"], results["b"])

五、最佳实践

5.1 样本数量

简单任务:1-2 个示例
中等任务:3-5 个示例
复杂任务:5-10 个示例

5.2 样本顺序

# ✅ 推荐:难度递进
examples = [简单,中等,复杂]

# ❌ 避免:随机顺序
examples = [复杂,简单,中等]

5.3 样本更新

# 定期更新样本库
def update_examples(new_performance):
    if new_performance < threshold:
        # 添加新样本
        examples.append(generate_new_example())
        # 移除过时样本
        examples.remove(outdated_example)

六、总结

Few-Shot 核心要点:

方面要点说明
样本选择代表性、多样性覆盖各种情况
样本格式标准、思维链、对比根据任务选择
质量评估准确性、相关性、多样性自动化 + 人工
数量1-10 个根据任务复杂度

Few-Shot 设计是 Prompt 工程的核心技能,好的样本设计能显著提升模型效果。


分享这篇文章到:

上一篇文章
苍蝇的一分钟生命
下一篇文章
Go 性能优化实战