Skip to content

3.3.1 Zero-shot Prompting:直接提问的艺术

经过本节学习,你将掌握

  • Zero-shot 的定义和工作原理
  • 适合使用 Zero-shot 的场景
  • 如何写出高质量的 Zero-shot 提示词
  • Zero-shot 的局限性及应对方法

什么是 Zero-shot Prompting

Zero-shot(零样本)的意思是:不给任何示例,直接让 AI 执行任务

这是最直接的提问方式。你描述任务,AI 根据它在训练中学到的知识直接给出答案。

将以下 Python 2 代码转换为 Python 3 语法:
print "Hello, World!"

AI 不需要你演示「怎么转换」,它已经「知道」Python 2 和 Python 3 的区别。这就是 Zero-shot 的核心:利用 AI 已有的知识完成任务

为什么 Zero-shot 有效

现代 AI 模型在训练时已经「见过」海量数据:代码、文档、教程、问答。对于常见任务,它已经具备执行能力,只需要你清晰地描述任务即可。

就像请一位经验丰富的同事帮忙——你不需要教他怎么写代码,只需要说清楚你要什么。

适用场景

场景示例为什么适合
代码转换Python 2 → Python 3AI 熟悉两种语法
文本分类判断评论情感常见 NLP 任务
格式转换JSON → YAML标准格式,规则明确
内容生成写一段产品描述创意任务,无需示例
代码解释解释这段代码做了什么AI 理解代码能力强

一句话判断:如果这个任务「AI 应该会」,就用 Zero-shot。

差提示词 vs 好提示词

❌ 差提示词

帮我处理一下这个数据

问题:任务不明确。处理是什么意思?清洗?转换?分析?

✅ 好提示词

将以下 CSV 数据转换为 JSON 格式,每行作为一个对象:

name,age,city
张三,25,北京
李四,30,上海

改进点

  • 明确任务:CSV → JSON
  • 明确格式:每行一个对象
  • 提供输入数据

输出对比

差提示词可能得到:「请提供具体数据和处理需求」(AI 无法执行)

好提示词得到:

json
[
  {"name": "张三", "age": 25, "city": "北京"},
  {"name": "李四", "age": 30, "city": "上海"}
]

写好 Zero-shot 的四个要素

1. 明确的任务动词

模糊清晰
处理这段代码重构这段代码,提取重复逻辑为函数
看看这个数据分析这个数据的异常值
弄一下格式转换为 Markdown 表格格式

2. 具体的输出要求

❌ "给我一个函数"
✅ "给我一个 JavaScript 函数,接收数组参数,返回去重后的数组"

3. 必要的约束条件

❌ "写一个排序算法"
✅ "写一个排序算法,要求:时间复杂度 O(n log n),不使用内置排序方法"

4. 清晰的输入数据

如果任务需要处理数据,直接在提示词中提供。

进阶技巧:增强 Zero-shot 效果

角色设定(Role Prompting)

给 AI 一个角色,可以让它从特定视角回答问题。

你是一位有 10 年经验的前端工程师。
请审查以下 React 代码,指出潜在的性能问题:
[代码]

输出格式指定

明确告诉 AI 你想要的格式。

分析以下用户反馈,提取关键问题。
输出格式:
- 问题1:[描述]
- 问题2:[描述]
...

实战示例:待办清单项目

小李想让 AI 帮他写一个日期格式化函数。

Zero-shot 提示词

写一个 JavaScript 函数 formatDate,功能如下:
- 输入:Date 对象
- 输出:格式化的字符串,格式为 "YYYY年MM月DD日"
- 示例:输入 new Date('2024-03-15'),输出 "2024年03月15日"
- 要求:月份和日期不足两位时补零

AI 输出

javascript
function formatDate(date) {
  const year = date.getFullYear();
  const month = String(date.getMonth() + 1).padStart(2, '0');
  const day = String(date.getDate()).padStart(2, '0');
  return `${year}年${month}月${day}日`;
}

Zero-shot 的局限性

局限表现解决方案
格式不稳定每次输出格式不一致用 Few-shot 提供示例
复杂推理出错多步骤逻辑容易跳步用 Chain of Thought
不理解特定需求输出不符合项目规范在提示词中补充上下文

判断标准:如果 Zero-shot 连续两次输出不满意,考虑换用其他技巧。

可复制模板

代码转换模板

markdown
将以下 [源语言/版本] 代码转换为 [目标语言/版本]:

[代码内容]

要求:
- 保持功能一致
- 遵循 [目标语言] 的最佳实践

内容生成模板

markdown
你是 [角色定位]。

任务:[具体任务描述]

要求:
- [要求1]
- [要求2]

输出格式:[格式说明]

代码审查模板

markdown
审查以下代码,从 [审查维度] 角度指出问题:

[代码内容]

输出格式:
1. 问题:[描述] | 位置:[行号] | 建议:[修改方案]

本节要点

Zero-shot 的本质:利用 AI 已有知识,直接执行任务

适用场景:AI「应该会」的任务——转换、分类、生成

写好 Zero-shot 的关键:明确动词 + 具体输出 + 必要约束

局限性:格式不稳定、复杂推理容易出错

增强技巧:角色设定、输出格式指定

下一节,我们学习如何用示例「教会」AI——Few-shot Prompting。