零样本与少样本提示
理解直接询问模型与提供示例之间的区别,并了解在分类、信息提取和生成任务中,何时采用哪种方法能获得更好的结果。
零样本与少样本提示 是 CoddyKit 上的免费 AI Engineering Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Engineering Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Engineering Academy 课程共包含 4 节课。
什么是零样本提示?
零样本提示是指要求模型执行某项任务,却不提供任何示例来说明该任务应如何完成。您只需描述任务,让模型运用预训练知识即可。这种方式非常适合模型在训练期间反复见过的任务,例如翻译、摘要或简单分类。
例如,要求模型将这条评论分类为正面或负面,就是一个零样本提示。模型在预训练期间已经接触过数千个情感分类示例,因此即使提示本身没有提供示例,它也能完成任务。
一个简单的零样本示例
零样本提示通常简洁,并依赖模型内置的知识。当任务常见且含义明确时,它们效果最好。请注意,下面的提示清楚地定义了任务,但没有展示任何正确输出的示例。
import openai
client = openai.OpenAI()
prompt = 'Classify the sentiment of the following customer review.\nRespond with only one word: Positive, Negative, or Neutral.\n\nReview: The delivery was fast but the packaging was damaged.\n\nSentiment:'
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}],
max_tokens=5
)
print(response.choices[0].message.content) # Expected: Negative零样本提示何时效果不佳
当任务格式不常见、模型必须遵循不熟悉的输出结构,或者您需要一致的格式而模型每次可能产生不同理解时,零样本提示可能会失败。要求模型按照非常具体的 JSON 结构并使用自定义字段名提取数据,作为零样本提示是有风险的,因为模型必须猜测您的确切意图。
如果涉及特定领域的术语,或模型在预训练期间很少遇到的细分类别,零样本提示也容易表现不佳。在这些情况下,提供示例可以显著提高准确率。
什么是少样本提示?
少样本提示是指在提出实际查询之前,先向模型提供 2—8 个任务示例(输入和期望的输出)。这些示例会教会模型您所需的确切格式和 classification 方案,而无需进行微调或训练。
这是提示工程中最强大、却使用不足的技术之一。模型会利用这些示例推断模式,并将其应用于新的输入。GPT-3 论文中的研究表明,在许多任务中,随着示例数量增加,性能会显著提升,直到大约 8 个示例;之后收益趋于平缓,继续增加只会浪费 token。
少样本提示结构
少样本提示遵循一致的模式:先以输入—输出对的形式展示 N 个示例,然后提供新的输入,让模型补全输出。示例的格式会教会模型您所期望的确切输出格式。
import openai
client = openai.OpenAI()
prompt = ('Extract the product name and price from each sentence.\n'
'Respond in the format: Product: <name> | Price: <price>\n\n'
'Sentence: The blue headphones cost $79.99.\n'
'Product: Blue Headphones | Price: $79.99\n\n'
'Sentence: You can get the leather wallet for just $34.\n'
'Product: Leather Wallet | Price: $34\n\n'
'Sentence: Order the ergonomic keyboard for $129.99 today.\n')
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}],
max_tokens=30
)
print(response.choices[0].message.content)如何选择优秀的少样本示例
示例的质量与数量同样重要。请选择符合以下条件的示例:
- 覆盖边界情况——包含一个输入含义模糊的示例,让模型了解您希望如何处理这种情况
- 覆盖输出空间——如果有三个类别,至少为每个类别提供一个示例
- 具有代表性——使用在风格和复杂度上与实际生产输入相似的示例
- 格式一致——示例中的任何格式不一致都会传递到模型输出中
选择不当的示例实际上可能会误导模型对任务分布的判断,从而降低性能。
零样本与少样本:何时使用哪一种
在以下情况下使用零样本:任务常见且定义明确;您希望尽量降低 token 成本;或者您正在快速迭代,暂时难以收集示例。当不希望示例限制模型的通用知识时,零样本也更合适。
在以下情况下使用少样本:输出格式特殊或要求严格;您有特定领域的类别;零样本会产生格式不一致的结果;或者您需要模型始终遵循特定的风格或语气。少样本对于提取、classification以及具有格式约束的生成尤其有效。
用于 classification 任务的少样本提示
classification 是少样本提示最有价值的应用场景之一。当您使用的自定义标签无法对应常见类别时,提供示例可以让模型学习您的分类体系。下面的示例准确定义了在支持工单场景中 Bug、Feature Request 和 Question 分别表示什么。
import openai
client = openai.OpenAI()
prompt = ('Classify the support ticket into: Bug, Feature Request, or Question.\n\n'
'Ticket: The login button does nothing when I click it.\n'
'Category: Bug\n\n'
'Ticket: Can you add dark mode to the dashboard?\n'
'Category: Feature Request\n\n'
'Ticket: How do I export my data to CSV?\n'
'Category: Question\n\n'
'Ticket: The export button crashes the app every time.\n'
'Category:')
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': prompt}],
max_tokens=10
)
print(response.choices[0].message.content) # Bug单样本提示
介于零样本和少样本之间的是单样本提示:准确提供一个示例。这通常足以解决格式问题或澄清含义模糊的任务,而且所需 token 远少于完整的少样本提示。当零样本产生不可靠结果时,单样本是很好的第一步升级方案。
在实践中,请先使用零样本,在一批真实输入上进行评估,然后只在模型出错的地方添加示例。这样既能让提示保持精简并节省 token,又能将改进集中在最需要的地方。
动态少样本选择
在生产系统中,对每个查询都硬编码使用相同的少量示例并不是最优方案。动态少样本选择会利用嵌入相似度,从带标签的示例库中检索与当前输入最相似的示例,然后仅将这些示例注入提示中。
这样一来,模型始终能看到针对特定输入最相关的演示,而不是可能与输入风格或领域不匹配的通用示例。这项技术结合了少样本提示的优势与检索系统的可扩展性,有时也称为基于示例的检索增强提示。
少样本提示中的格式约束
在您能够使用结构化输出或 JSON 模式之前,少样本提示是强制执行严格输出格式最可靠的方法。向模型展示您所期望的确切格式——包括字段名称、分隔符和顺序——可以大幅提高获得可解析输出的概率。
请始终以期望输出模式的开头结束少样本提示(例如 JSON 对象的左花括号或第一个字段名称)。这样可以促使模型继续该模式,而不是先对任务进行总结或评论。
快速检查
测试您对本课 AI 工程概念的理解。
课程回顾
本课中您学到了:零样本提示要求模型仅根据描述执行任务;少样本提示提供 2—8 个输入—输出示例,用于教授格式和分类体系;动态少样本选择使用嵌入相似度,为每个查询检索最相关的示例。接下来,我们将探索用于复杂推理任务的思维链提示。
用 AI 导师学习 Python — 免费
在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。
- 课程
- 30
- 课程
- 120
常见问题解答
「零样本与少样本提示」课时是免费的吗?
是的 — 「零样本与少样本提示」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Engineering Academy 课程的其余内容,请升级到 CoddyKit PRO。 AI Engineering Academy 课程共包含 4 节课。
「零样本与少样本提示」这节课中我会学到什么?
理解直接询问模型与提供示例之间的区别,并了解在分类、信息提取和生成任务中,何时采用哪种方法能获得更好的结果。 你通过在浏览器中直接运行的动手代码来练习 AI Engineering Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Engineering Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Engineering Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「零样本与少样本提示」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Engineering Academy 课中编写并运行代码吗?
能。每节 AI Engineering Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。