Prompt工程03:示例驱动

从 Few-shot、反例、边界样例到格式锚定,理解如何用示例引导模型输出高质量结果。

字数 1325 阅读时长 ≈ 4 分钟 2026-7-24 2026-7-27
Prompt工程03:示例驱动

示例驱动是 Prompt 工程中最有效的技巧之一。给模型提供好的示例,相当于告诉它”我想要的结果长这样”,比用文字描述更直接、更准确。

为什么示例如此重要

大模型擅长模式匹配,但不擅长理解抽象规则。示例就是把抽象规则变成具体模式,让模型更容易模仿。

文字描述 vs 示例

文字描述

将中文句子翻译成英文,要保持语义准确,语气自然。

带示例

将中文句子翻译成英文:

输入:今天天气真好。
输出:The weather is nice today.

输入:我喜欢编程。
输出:I love programming.

输入:人工智能正在改变世界。
输出:
维度文字描述示例驱动
理解难度
输出一致性
格式准确度
学习成本

Few-shot 学习

Few-shot 学习是给模型提供少量示例,让它从示例中学习任务模式。

什么是 Few-shot

Few-shot = 少量示例 + 任务说明 + 测试输入

任务:将产品名称转换为描述性标题

示例1:
输入:无线耳机
输出:高保真音质 | 主动降噪 | 无线蓝牙耳机

示例2:
输入:机械键盘
输出:RGB背光 | 青轴手感 | 全尺寸机械键盘

示例3:
输入:智能手表
输出:健康监测 | 运动追踪 | 智能穿戴手表

测试:
输入:便携音箱
输出:

示例数量的影响

示例数量效果适用场景
0-shot无示例,直接让模型做简单任务
1-shot1个示例简单任务,格式明确
3-5 shot3-5个示例大多数任务
10+ shot10个以上示例复杂任务,多格式

经验法则:从3个示例开始,根据效果增加或减少。

Few-shot 的技巧

  1. 示例多样性:覆盖不同情况,避免模型过度拟合示例
  2. 示例质量:示例本身要高质量,错误示例会误导模型
  3. 示例顺序:先给简单示例,再给复杂示例
  4. 格式一致性:所有示例格式保持一致

反例的作用

反例告诉模型”我不想要什么”,有时比正例更重要。

何时需要反例

场景反例作用
容易产生特定错误展示错误形式,避免重复
输出需要精确格式展示错误格式,强调正确格式
需要排除某些内容展示要排除的情况

反例示例

任务:提取文章中的技术术语

正例:
输入:Java 虚拟机使用垃圾回收机制管理内存。
输出:Java 虚拟机, 垃圾回收

反例:
输入:这篇文章介绍了如何使用 Java 编程。
输出:(空,因为"Java"在这里是泛指,不是技术术语)

测试:
输入:Spring Boot 框架通过自动配置简化了应用开发。
输出:

反例的形式

形式示例适用场景
错误输出展示错误结果格式错误、内容错误
排除说明”不要包含XXX”需要排除特定内容
边界说明”当XXX时,输出空”边界条件处理

边界样例

边界样例是测试模型能力极限的示例,确保模型在边缘情况下也能正确处理。

常见边界情况

边界类型示例处理方式
空输入输入为空字符串返回默认值或提示
超长输入输入超过 Token 限制截断或提示
极端格式非标准格式输入容错处理或提示
歧义输入有多种解释的输入追问或默认处理
特殊字符包含特殊符号的输入转义或过滤

边界样例示例

任务:解析日期字符串

示例1(正常):
输入:2024-01-15
输出:{"year": 2024, "month": 1, "day": 15}

示例2(边界-空):
输入:
输出:{"error": "日期不能为空"}

示例3(边界-格式错误):
输入:2024/13/32
输出:{"error": "无效日期格式"}

示例4(边界-歧义):
输入:01-15
输出:{"year": null, "month": 1, "day": 15, "warning": "年份缺失"}

测试:
输入:2024-02-30
输出:

格式锚定

格式锚定是通过示例固定输出格式,确保模型输出符合预期。

为什么需要格式锚定

  • 模型输出格式不稳定
  • 需要后续程序解析输出
  • 需要统一的输出结构

格式锚定技巧

技巧示例效果
明确分隔符”用---分隔每个结果”避免结果混在一起
使用标签”用包裹”便于提取
固定字段”输出必须包含name和value字段”确保完整性
禁用额外内容”只输出JSON,不要解释”避免多余文字

格式锚定示例

任务:提取用户信息,输出JSON格式

示例:
输入:用户张三,年龄28,邮箱zhangsan@example.com
输出:{"name": "张三", "age": 28, "email": "zhangsan@example.com"}

注意:
- 只输出JSON字符串,不要包含其他文字
- 年龄必须是数字类型
- 邮箱必须是字符串类型

测试:
输入:用户李四,年龄30,邮箱lisi@company.cn
输出:

示例选择策略

选择好的示例是示例驱动的关键。

示例选择原则

原则说明示例
代表性覆盖常见情况正常输入、边界输入、错误输入
多样性包含不同类型不同格式、不同长度、不同领域
准确性示例本身正确避免错误示例误导模型
简洁性示例不要太长聚焦核心模式
相关性与测试输入相关示例和测试在同一领域

示例组织方式

[任务说明]

[正例1]
输入:...
输出:...

[正例2]
输入:...
输出:...

[反例1]
输入:...
输出:(错误示范)
说明:为什么错误

[边界示例1]
输入:...(边界情况)
输出:...

[测试输入]
输入:...
输出:

常见问题与解决方案

问题1:示例太多导致 Token 浪费

表现:示例占用大量 Token,影响输入内容

解决方案

  • 精简示例,只保留必要信息
  • 使用代表性示例,避免重复
  • 考虑使用 Fine-tuning 替代 Few-shot

问题2:示例不够导致输出不稳定

表现:模型输出格式不一致

解决方案

  • 增加示例数量
  • 添加反例和边界示例
  • 使用格式锚定

问题3:示例偏差导致模型偏见

表现:模型输出偏向示例中的特定模式

解决方案

  • 增加示例多样性
  • 确保示例覆盖不同情况
  • 定期审查示例是否有偏见

问题4:示例过时导致输出错误

表现:示例中的信息已过期

解决方案

  • 定期更新示例
  • 使用动态示例(从知识库获取)
  • 在示例中注明时间范围

项目判断清单

  • 输出格式不稳定 → 使用格式锚定示例
  • 需要处理复杂逻辑 → 使用 Few-shot,增加示例数量
  • 容易产生特定错误 → 添加反例
  • 需要处理边缘情况 → 添加边界示例
  • Token 预算有限 → 精简示例,使用代表性示例
  • 输出需要程序解析 → 严格格式锚定
  • 示例效果不好 → 检查示例质量和多样性