Zero-shot Prompting
不提供 examples 的 prompting 方式
零样本提示(Zero-shot Prompting)指的是不提供示例,直接用清晰指令让模型完成任务。这一节的目标是:让你能写出可复用、稳定、可验证的零样本 Prompt。
学习路径(建议顺序)
- 入门:掌握“指令 + 输出格式”的最小结构
- 进阶:为边界情况加入约束与兜底
- 实战:把业务任务拆成可验证条件
什么是零样本提示?
零样本提示就是:不给示例,只给规则。适合任务明确、标签清晰、输出格式简单的场景。
┌─────────────────────────────────────────────────────────────┐
│ Zero-shot Prompt 流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 任务描述 → 标签/约束 → 输入数据 → 输出结果 │
│ (做什么) (怎么做) (文本/数据) (结构化) │
│ │
└─────────────────────────────────────────────────────────────┘
为什么零样本很重要?
| 应用场景 | 具体用途 | 业务价值 |
|---|---|---|
| 快速原型 | 新任务快速验证 | 降低试错成本 |
| 轻量分类 | 标签少、规则清晰 | 快速上线 |
| 内容处理 | 摘要、提取、改写 | 提升效率 |
| 内部工具 | 临时自动化 | 无需训练数据 |
业务产出(PM 视角)
你可以用零样本 Prompt 快速交付:
- 可上线的最小功能(MVP)
- 结构化输出模板(便于自动化)
- 可量化验证(准确率/一致性)
完成标准(建议):
- 读完本页 + 完成 1 个练习 + 做 1 次自检
Prompt Lab
立即查看 →把这章的知识,直接变成实战能力
进入交互式实验室,用真实任务练 Prompt,10 分钟快速上手。
核心 Prompt 结构
零样本 Prompt 重点是:任务说明 + 输出约束。
目标:做什么任务
标签/规则:可选项与边界
格式:输出结构
输入:待处理内容
通用模板
请完成以下任务:
{task}
规则:
{rules}
输出格式:
{output_format}
输入:
{input}
Quick Start:情感分类
提示:
Classify the text as neutral, negative, or positive.
Text: I think this vacation was okay.
Sentiment:
输出:
neutral
注意:没有提供示例,这就是零样本提示的核心。
示例 1:意图识别
场景:客服消息
识别用户意图。只输出:咨询 / 投诉 / 退款 / 其他。
用户消息:我买的耳机用了两天就坏了,你们怎么处理?
意图:
示例 2:信息提取
场景:从文本中提取关键信息
从文本中提取姓名、公司、职位。
输出 JSON:{"name":"","company":"","title":""}
文本:我是 Alice,在 JR Academy 做产品经理。
示例 3:格式化总结
场景:会议纪要
请把以下内容整理成 3 条要点,要求每条不超过 20 字。
内容:我们决定本周先完成需求拆分,下周开始开发。A 负责后台接口,B 负责前端页面。
迁移模板(替换变量即可复用)
任务:{task}
规则:{label_space_or_rules}
输出:{format}
输入:{input_text}
自检清单(提交前自查)
- 任务是否足够清晰?
- 输出格式是否固定?
- 是否有兜底(无法判断时输出 unknown)?
- 是否能在 3 次以内复现稳定结果?
进阶技巧
- 限制输出:写明“只输出标签/JSON”。
- 加兜底:如无法判断 →
unknown。 - 明确边界:定义正负例关键词或规则。
- 控制温度:
temperature=0提升一致性。 - 分步提示:复杂任务先拆成两步零样本。
常见问题与解决方案
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 输出格式不稳定 | 没有约束格式 | 明确格式 + 示例输出 |
| 分类不一致 | 规则不清晰 | 定义边界条件 |
| 模型解释过长 | 未限制输出 | 明确“只输出结果” |
| 无法判断 | 任务模糊 | 加 unknown 兜底 |
最新研究速览(外部摘要)
- Instruction Tuning:在多任务指令数据上微调,可显著提升零样本泛化能力,尤其对未见任务的表现更稳定。
- RLHF/Instruct:通过人类反馈对齐模型行为,提升“按指令输出”的可靠性与一致性。
- Prompt Optimization:将 Prompt 当作可优化对象,通过迭代生成更好的指令,提高零样本效果。
API 调用示例
Python (OpenAI)
from openai import OpenAI
client = OpenAI()
def zero_shot_classify(text: str) -> str:
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "system",
"content": "你是分类器,只输出标签。"
},
{
"role": "user",
"content": f"分类:positive/negative/neutral\n文本:{text}\n标签:"
}
],
temperature=0,
max_tokens=10
)
return response.choices[0].message.content.strip()
Python (Claude)
import anthropic
client = anthropic.Anthropic()
def zero_shot_classify(text: str) -> str:
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=10,
messages=[
{
"role": "user",
"content": f"分类:positive/negative/neutral\n文本:{text}\n标签:"
}
]
)
return message.content[0].text.strip()
动手练习
练习 1:分类
将以下评论分类为 positive / negative / neutral:
1. 物流非常快,体验很好
2. 质量一般般
3. 完全不能用,太失望了
练习 2:抽取
从文本中提取日期和金额,输出 JSON。
文本:订单将于 2025-03-12 发货,总价为 $129。
练习 3:总结
把下面内容总结为 2 条行动项。
文本:本周需完成页面改版和接口联调,测试时间排在周五。
练习评分标准(学生自评)
| 维度 | 合格标准 |
|---|---|
| 任务清晰 | 一句话能复述目标 |
| 格式稳定 | 输出结构一致 |
| 可复用 | 变量可替换 |
| 一致性 | 连续 3 次结果稳定 |
相关阅读
参考资料
- https://arxiv.org/pdf/2109.01652.pdf
- https://arxiv.org/abs/1706.03741
- https://arxiv.org/abs/2203.02155
- https://arxiv.org/abs/2309.03409
小结
- 零样本提示适合清晰任务与快速验证。
- 输出格式固定,稳定性大幅提升。
- 必须定义边界与兜底。
- 低温度更稳、更一致。
- 通过模板实现可复用的 Prompt 工作流。