少样本提示:教会AI通过例子学习
快速入门 🚀
想象你在教一个外国朋友学习中文。与其解释复杂的语法规则,直接给几个例子可能更有效:
# 教外国朋友说"我想要..."
示例1:我想要一杯咖啡 ☕️
示例2:我想要去公园 🌳
示例3:我想要学中文 📚
现在轮到你:我想要___
这就是少样本提示的核心思想 - 通过例子教会AI完成任务!
学习概览 📋
本章你将学会
- 设计清晰的示例来指导AI
- 处理各种实际场景
- 提高AI输出的准确性
- 避免常见的坑
学完就能 💪
- 写出高质量的提示词
- 让AI更好地理解你的需求
- 解决实际工作中的问题
- 建立自己的提示词模板库
核心概念:像教小朋友一样教AI 👶
什么是少样本提示?
就像教小朋友认识水果:
看,这是苹果🍎,圆圆的,红红的
这是香蕉🍌,黄黄的,长长的
这是橙子🍊,圆圆的,橙橙的
现在,你能告诉我这是什么水果吗:
圆圆的,紫紫的,有点甜...
为什么要用示例?
- 直观:胜过千言万语的解释
- 清晰:明确告知期望结果
- 高效:快速上手新任务
实用技巧:提高成功率 📈
1. "三明治"法则
像做三明治一样,层层构建你的提示:
# ❌ 杂乱无章
prompt = """
写一篇文章
主题:环保
字数:500
"""
# ✅ 结构清晰
prompt = """
任务:写一篇环保主题文章
🎯 目标要求:
- 主题:环保
- 字数:500字
- 风格:通俗易懂
- 结构:总分总
📝 示例文章:
标题:《让地球更美好》
正文:
随着科技的发展,环境问题日益严重...
[示例文章内容]
结尾:让我们共同守护地球家园。
✍️ 请参考以上格式写一篇文章,主题是:
[你的主题]
"""
2. "积木"搭建法
像搭积木一样,从简单到复杂:
# 第1块积木:基础问候
prompt = """
任务:生成客服开场白
示例1:
早上好,欢迎光临!请问需要什么帮助?
示例2:
下午好,很高兴为您服务!有什么可以帮您的吗?
"""
# 第2块积木:添加个性化
prompt = """
任务:生成个性化客服开场白
客户信息:
- 名字:张先生
- 会员等级:黄金
- 上次购买:手机
示例回复:
张先生您好!感谢您一直以来对我们的支持。
看到您上次购买了手机,使用还满意吗?
有任何问题都可以随时问我哦!
"""
3. "食谱"法则
像写菜谱一样详细:
# ❌ 简单食谱
prompt = "写一个煎蛋的步骤"
# ✅ 详细食谱
prompt = """
任务:描述美食制作步骤
示例 - 完美煎蛋:
1. 准备材料:
- 新鲜鸡蛋 1个
- 食用油 适量
- 盐 少许
2. 制作步骤:
a) 小火预热平底锅
b) 加入少许油预热
c) 打入鸡蛋,注意不要打破蛋黄
d) 煎至蛋白凝固,撒盐调味
3. 成品展示:
- 蛋黄金黄完整
- 蛋白洁白不焦
请按此格式描述:[你的菜品]
"""
4. "标签引导法" 🏷️
像给商品贴标签一样,通过标记关键信息来引导AI:
# ❌ 混乱的标签
prompt = """
分析:这个产品很好用
优点:便宜
缺点:包装简单
"""
# ✅ 结构化标签
prompt = """
任务:产品评价分析
示例1:
评价:这款手机拍照效果很棒,但是价格有点贵
[情感倾向] = 中性
[核心优点] = 拍照效果好
[主要缺点] = 价格偏高
[购买建议] = 对拍照需求高的用户推荐
示例2:
评价:这个耳机音质一般,续航也不行,不推荐购买
[情感倾向] = 负面
[核心优点] = 无
[主要缺点] = 音质一般,续航差
[购买建议] = 不推荐购买
现在分析:
评价:这款平板屏幕素质很好,操作流畅,就是有点重
[情感倾向] = ?
[核心优点] = ?
[主要缺点] = ?
[购买建议] = ?
"""
为什么要用标签?
- 结构化信息:让AI更容易识别和提取关键信息
- 统一格式:保证输出的一致性
- 突出重点:明确标注需要关注的方面
实战应用:智能简历分析系统 📄
prompt = """
任务:简历关键信息提取与分析
示例简历1:
小明,男,28岁,5年工作经验。
本科毕业于清华大学计算机系,
曾在阿里担任高级开发工程师,
主导过3个大型项目,
技术栈包括Python, Java, Docker。
[基础信息]
- 姓名:小明
- 性别:男
- 年龄:28岁
- 工作年限:5年
[教育背景]
- 学历:本科
- 学校:清华大学
- 专业:计算机系
[工作经历]
- 公司:阿里
- 职位:高级开发工程师
- 成就:主导3个大型项目
[技术技能]
- 编程语言:Python, Java
- 开发工具:Docker
[加分项]
- 名校背景
- 大厂经验
- 项目管理经验
示例简历2:
李华,女,24岁,应届生,
硕士毕业于北京大学人工智能专业,
在校期间发表2篇论文,
参与过1个国家自然科学基金项目,
熟悉机器学习和深度学习。
[基础信息]
- 姓名:李华
- 性别:女
- 年龄:24岁
- 工作年限:应届生
[教育背景]
- 学历:硕士
- 学校:北京大学
- 专业:人工智能
[研究成果]
- 论文:2篇
- 项目:国家自然科学基金项目
[技术技能]
- 领域:机器学习、深度学习
[加分项]
- 高学历
- 研究经验
- 学术成果
请分析以下简历:
张三,男,26岁,2年工作经验...
"""
标签设计技巧
层次分明
- 使用主标签和子标签
- 保持层级结构清晰
- 避免标签嵌套过深
命名规范
- 使用简短清晰的标签名
- 保持命名风格统一
- 避免歧义词汇
灵活扩展
- 预留扩展空间
- 支持添加新标签
- 保持向后兼容
常见应用场景
文本分类
[文章类型] = 新闻/博客/技术文档 [写作风格] = 正式/轻松/专业 [目标读者] = 专业人士/普通用户/学生
情感分析
[情感类型] = 喜悦/愤怒/悲伤/惊讶 [情感强度] = 强烈/中等/轻微 [情感触发] = 具体事件/原因
数据提取
[时间信息] = 年/月/日 [地点信息] = 国家/城市/详细地址 [人物信息] = 姓名/职位/联系方式
注意事项
避免过度标签
- 只标注必要信息
- 保持标签简洁
- 控制标签数量
保持一致性
- 统一标签格式
- 统一命名规则
- 统一层级结构
处理异常情况
- 设计缺失值处理
- 准备备选标签
- 添加验证规则
通过"标签引导法",我们可以更好地:
- 规范化信息提取
- 提高处理效率
- 保证输出质量
- 简化后续处理
记住:好的标签系统就像一个优秀的图书馆分类系统,让信息检索和处理变得简单高效!
实战案例:智能写作助手 ✍️
场景
小明需要写各种风格的文章,但经常不知道怎么开始...
解决方案
prompt = """
📝 智能写作助手
场景选择:
1️⃣ 正式商务
2️⃣ 轻松博客
3️⃣ 技术文档
4️⃣ 生活随笔
示例1 - 商务邮件:
主题:项目进度汇报
正文:
尊敬的王总:
项目进展顺利,现已完成以下里程碑...
[详细内容]
此致
敬礼
示例2 - 美食博客:
标题:探索城市最美味的角落
嘿,美食爱好者们!
今天我要分享一个超赞的小店...
[详细内容]
记得点赞关注哦!
您想要尝试哪种风格?
"""
效果检验清单 ✅
quality_check = {
"内容相关": {
"主题切合": "✓",
"逻辑连贯": "✓",
"细节丰富": "✓"
},
"风格统一": {
"语气一致": "✓",
"用词规范": "✓",
"格式整齐": "✓"
},
"实用性强": {
"可直接使用": "✓",
"易于修改": "✓",
"效果明显": "✓"
}
}
动手练习时间! 💪
新手任务:写个自我介绍
- 创建3个不同场合的自我介绍示例
- 标注关键要素
- 生成新的自我介绍
进阶挑战:多场景对话生成
设计一个能处理多种场景的对话系统:
- 商务会谈
- 朋友聊天
- 客服交流
趣味测试
问问自己:
- 你的示例够生动吗?
- 换个人看得懂吗?
- 实际用起来顺手吗?
常见问题解答 🤔
1. "示例越多越好?"
就像教小朋友:
- 太少:学不会
- 太多:记不住
- 最佳:3-5个典型例子
2. "示例顺序重要吗?"
像教数学:
- 先教1+1=2
- 再教2+2=4
- 最后教复杂的
3. "怎么避免照搬示例?"
训练创造力:
- 多变换场景
- 调整细节
- 保持核心逻辑
效果对比:零样本 vs 少样本 🆚
让我们通过几个实际例子,对比使用和不使用少样本提示的效果:
1. 商品标题生成
# ❌ 零样本提示
prompt = """
为这款产品生成标题:
红色连衣裙,真丝面料,优雅设计
"""
# 可能的回答:
"真丝红色连衣裙"
# 问题:平淡无奇,缺乏吸引力
# ✅ 少样本提示
prompt = """
任务:生成吸引人的商品标题
示例1:
商品:黑色皮衣,进口羊皮,修身版型
标题:「意大利小羊皮」奢华修身皮衣 解锁秋冬高级感
示例2:
商品:蓝色牛仔裤,弹力面料,破洞设计
标题:「四季百搭」显瘦神裤 明星同款破洞牛仔
请为以下商品生成标题:
商品:红色连衣裙,真丝面料,优雅设计
"""
# 优化后的回答:
"「真丝系列」法式复古红裙 尽显优雅气质"
# 优点:突出卖点、风格鲜明、感染力强
2. 代码注释生成
# ❌ 零样本提示
prompt = """
为这段代码写注释:
def process_data(data):
result = {}
for item in data:
if item.status == 'active':
result[item.id] = item.value * 1.1
return result
"""
# 可能的回答:
"处理数据并返回结果"
# 问题:过于简单,缺乏细节
# ✅ 少样本提示
prompt = """
任务:生成清晰的代码注释
示例1:
代码:
def calculate_discount(price, member_type):
if member_type == 'gold':
return price * 0.8
return price * 0.9
注释:
'''
计算会员折扣价格
参数:
price (float): 原始价格
member_type (str): 会员类型('gold'或其他)
返回:
float: 折扣后价格
- 金卡会员(gold)享受8折
- 其他会员享受9折
'''
请为以下代码生成注释:
def process_data(data):
result = {}
for item in data:
if item.status == 'active':
result[item.id] = item.value * 1.1
return result
"""
# 优化后的回答:
'''
处理活跃数据项并应用加价
参数:
data (list): 数据项列表,每项需包含id、status和value属性
返回:
dict: 处理后的数据字典
- 仅处理status为'active'的项
- 对活跃项的value增加10%
- 使用id作为键存储结果
'''
3. 客服回复生成
# ❌ 零样本提示
prompt = """
回复这个客户投诉:
产品收到了,但是包装有点破损,不太满意
"""
# 可能的回答:
"抱歉,我们会注意改进包装"
# 问题:敷衍了事,缺乏专业性
# ✅ 少样本提示
prompt = """
任务:生成专业的客服回复
示例1:
投诉:发货太慢了,等了一个星期才收到
回复:尊敬的客户您好,非常抱歉让您久等了。我们已经注意到配送时效的问题,目前已经优化了物流环节,大部分订单可在3天内送达。为表歉意,已为您赠送50元无门槛优惠券。您的体验对我们非常重要,感谢您的理解与支持。
示例2:
投诉:手机屏幕有划痕,很失望
回复:尊敬的客户您好,对于产品出现划痕的情况,我们深表歉意。请您提供订单号和产品照片,我们会第一时间为您处理。根据售后政策,您可以选择:1. 直接退货退款;2. 免费更换新机。请问您想选择哪种处理方式?
请回复这位客户:
投诉:产品收到了,但是包装有点破损,不太满意
"""
# 优化后的回答:
"尊敬的客户您好,非常抱歉您收到的商品包装出现破损。作为注重产品体验的企业,这确实是我们的疏忽。为确保您的权益,我们建议:
1. 请您检查产品本身是否完好
2. 如有任何损坏,我们将立即安排换货
3. 同时补偿您30元无门槛优惠券
我们已经向物流部门反馈包装问题,将加强发货环节的质检。您的反馈对我们非常重要,感谢您帮助我们提高服务质量。"
主要提升效果
输出质量
- 零样本:简单、粗糙、缺乏细节
- 少样本:专业、完整、结构清晰
格式规范
- 零样本:格式随机,不够统一
- 少样本:格式统一,易于处理
内容丰富度
- 零样本:内容单薄,要点遗漏
- 少样本:内容充实,要点完整
语言表达
- 零样本:表达生硬,缺乏人情味
- 少样本:表达自然,更有温度
专业程度
- 零样本:内容通用,不够专业
- 少样本:行业特色,专业规范
通过这些对比,我们可以看到少样本提示能显著提升AI输出的质量,使其更符合实际业务需求。
继续探索 🚀
相关技术
- 思维链:让AI像人一样思考
- 零样本:无需示例的魔法
- 提示链:组合多个技巧
下一步
- 创建自己的示例库
- 实践不同场景
- 分享你的经验
记住:熟能生巧,多试多练!