Chapter 02

清晰度与具体性

消除歧义,用 5W1H 框架写出可重复执行的精准 AI 指令

模糊指令的代价

为什么"简单"的请求会失败?

许多人第一次使用 AI 工具时会感到失望——他们觉得自己的问题很清楚,但 AI 的回答却不是他们想要的。这几乎总是因为模糊性:你脑海中有清晰的图像,但你给 AI 的指令里缺少把这个图像传递过去所需的信息。

想象你雇了一个实习生,第一天就对他说"帮我做个报告"。他会问:什么主题?给谁看?多长?什么格式?用什么数据?什么时候要?而 AI 不会问,它只会猜测——基于统计概率猜出一个"最可能"的解释,然后按此执行。

模糊性的三种来源

模糊指令的统计学本质

从 LLM 的概率采样视角理解:模糊指令意味着多种"合理解释"的概率分布更加扁平——每种解读都有一定的可能性,模型会从中采样一种。精确指令把大部分概率质量集中到单一解读上,从而让输出可预期。

这也解释了为什么同一个模糊指令多次运行会得到不同答案,而精确指令多次运行结果非常稳定(即使 temperature > 0)。

差/好/最优:三个层次的对比

用一个实际案例演示三个层次的差异:

差(模糊)
「写一篇关于 Python 的文章」—— 结果:模型会写一篇泛泛介绍 Python 历史和语法的文章,可能 2000 字,可能也可能是 500 字,读者定位未知,结构随机。
好(具体)
「为刚学会 JavaScript 的前端开发者写一篇 800 字的 Python 入门文章,重点对比两种语言的语法差异,包括变量声明、函数定义、列表操作三个方面。」—— 结果:有明确受众、长度、重点,但缺少格式和风格指导。
最优(完整)
「为刚学会 JavaScript 的前端开发者写一篇 800 字的 Python 入门文章。要求:使用二级标题划分,每个章节给一个 JS 代码片段和对应的 Python 代码片段(并排对比),语气轻松友好,避免使用术语,结尾给出 3 个最值得学 Python 的理由。」

5W1H 提示词框架

系统化构建指令

5W1H 是新闻写作中的经典框架,同样适用于提示词设计。在写任何复杂的 AI 指令前,先问自己这六个问题:

Who(谁)
角色与受众:AI 扮演什么角色?输出面向什么受众?例如:"你是一位有 10 年经验的 Python 高级工程师";"目标读者是没有编程基础的产品经理"。角色设定会激活模型在该角色相关训练数据上的"激活区域",提升专业深度。
What(什么)
任务与内容:需要生成什么类型的内容?执行什么操作?翻译/摘要/代码/分析/创作——要明确说出来,不要让模型猜测。任务描述应当是动词开头的具体行为,如"分析"、"生成"、"改写",而不是名词"分析报告"。
When(何时)
时间与版本:内容的时间背景是什么?使用的是哪个版本的技术?"使用 Python 3.12 的新特性"和"兼容 Python 3.8+"会得到截然不同的代码。提供版本信息可以避免模型给出已过时的 API 调用方式。
Where(何处)
使用场景与平台:内容将在哪里使用?邮件、网页、演示文稿、微信公众号?不同平台对格式、长度、语气有不同要求。移动端阅读偏好短段落;PPT 需要简洁要点;技术文档需要代码块和准确术语。
Why(为何)
目的与动机:生成内容的目的是什么?了解目的有时比了解任务本身更重要——模型可能会建议更好的方式来达成你的真实目标。告诉模型"我想提高用户的点击率"而非只说"写一个标题",它可能会给出更有价值的建议。
How(如何)
格式与约束:以什么格式输出?有什么限制条件?长度限制、语气要求、禁用词汇、必须包含的要素……这些都属于"How"。格式约束是最容易被忽略但影响最大的因素之一,明确格式要求能大幅减少后处理工作量。

5W1H 实战示例

# 应用 5W1H 框架

# Who:角色设定
你是一位拥有 8 年 React 经验的前端架构师,
曾在大型电商平台主导过多次性能优化项目。

# What:任务
审查以下 React 组件代码,找出性能问题并给出优化建议。

# When:版本
基于 React 18 的特性(Concurrent Mode, useTransition 等)提出优化方案。

# Where:使用场景
这个组件是商品列表页,在移动端 3G 网络下需要流畅渲染 500+ 商品卡片。

# Why:目的
目标是将首次内容绘制时间(FCP)从 3.2s 降低到 1.5s 以内。

# How:输出格式
以列表形式输出,每个问题包含:
1. 问题描述
2. 问题影响(性能量化估计)
3. 修改前代码片段
4. 修改后代码片段
5. 优化原理说明

# 待分析的代码
```jsx
[在此粘贴代码]
```

避免歧义的具体技巧

技巧一:量化模糊词汇

将主观描述替换为客观数字——这是消除歧义最直接有效的方法:

模糊表达精确替代原因
写得简短一点回复不超过 150 个字"简短"因人而异,150 字是明确上限
语气要专业使用商务正式语气,避免口语化表达和表情符号"专业"可以是学术、法律、商务等多种风格
举几个例子给出 3 个不同类型的例子,每个例子 1-2 句话数量和长度都不确定
最近的信息2024 年以后发布的信息(注意知识截止日期)"最近"对模型而言没有时间锚点
简单易懂用初中生能理解的语言,不使用专业术语不同人的认知水平差异极大

技巧二:使用正面陈述

AI 更能理解"要做什么"而非"不要做什么"。负面陈述本身也是模糊的——"不要太长"中,"太长"的定义仍然缺失:

负面陈述(效果较差)

  • 不要太长
  • 不要使用复杂词汇
  • 不要重复相同观点
  • 不要用被动语态

正面陈述(效果更好)

  • 控制在 200 字以内
  • 使用 B1 级英语词汇
  • 每个观点只陈述一次,侧重不同角度
  • 使用主动语态
边界情况:有时负面约束是必要的

对于安全敏感或格式严格的场景,负面约束是不可缺少的补充。例如 JSON 输出时需要说"不要在 JSON 前后添加任何说明文字",因为这是模型的惯性行为,正面描述"只输出 JSON"有时还不够强调。负面约束最好与正面描述一起使用。

技巧三:指定输出格式

明确的输出格式要求能显著提升可用性,尤其是需要将结果集成到程序中时:

# 不指定格式(输出混乱,难以后续处理)
分析这段代码的优缺点

# 指定 Markdown 格式
分析这段代码,以 Markdown 格式返回:
## 优点
- 优点1
- 优点2

## 缺点
- 缺点1
- 缺点2

## 改进建议
(具体的修改方案)

# 指定 JSON 格式(适合程序处理)
分析这段代码,以 JSON 格式返回:
{
  "pros": ["优点列表"],
  "cons": ["缺点列表"],
  "suggestions": ["改进建议列表"],
  "severity": "high/medium/low"
}

技巧四:提供对比示例

当你难以用语言描述期望的输出风格时,直接提供示例是最高效的方式。示例的价值在于让模型直接"看到"你想要的结果,而不是理解你对结果的描述:

请将以下技术错误消息改写为用户友好的提示文字。
参考这个改写风格:

原始:「NullPointerException: Cannot invoke method getName() on null object」
改写:「抱歉,页面加载时遇到了问题。请刷新页面重试,如果问题持续,请联系客服。」

风格说明:
- 不显示技术术语
- 语气温和,不让用户有罪恶感
- 提供明确的下一步操作

现在请改写:「Connection timeout: Failed to connect to database server at 192.168.1.1:5432」

技巧五:约束优先级声明

当指令中有多个要求时,模型需要知道哪个优先。例如在字数限制和内容完整性之间有冲突时:

# 声明约束的优先级
请总结这篇 5000 字的文章。

优先级(从高到低):
1. 准确性 — 绝对不要捏造不存在的信息
2. 完整性 — 覆盖所有主要论点,不遗漏关键结论
3. 简洁性 — 目标长度 300-500 字,但不得牺牲前两项

如果三者有冲突,宁可超过字数限制,也不要遗漏关键信息。

长度控制的策略

为什么 AI 总是输出太多?

LLM 在训练时接触了大量"详尽、全面"的文本(如百科全书、技术文档),它认为"更详细"通常意味着"更好"。如果你不明确限制长度,它往往会给出比你需要的更长的回复。这一行为也来自于 RLHF 训练阶段,人类评估者通常偏好更详细的回答,模型因此学习了"倾向于详细"的偏好。

长度控制的多种方式

迭代优化工作流

提示词工程是一个迭代过程,不要期望第一次就写出完美的提示词。每次迭代的关键是诊断"为什么这次不满意":

初版提示词 ↓ 生成输出 ↓ 分析:哪里不符合预期? ├─ 太模糊?→ 添加具体细节(量化词汇、提供示例) ├─ 格式错误?→ 明确格式要求(JSON/Markdown/XML) ├─ 风格不对?→ 添加示例或角色设定 ├─ 长度有误?→ 添加字数限制 ├─ 遗漏重要信息?→ 补充上下文 └─ 约束冲突?→ 声明优先级 ↓ 改进提示词 → 重复测试 ↓ 当输出稳定满足需求 → 固化为生产提示词

专业场景的清晰度提升

技术文档类指令的最佳实践

代码生成指令
明确编程语言、版本、框架、代码风格(函数式/面向对象)、是否需要注释、是否需要类型注解、错误处理方式(异常/返回码)、是否需要测试代码。缺少这些信息,模型生成的代码可能语言正确但风格不符合团队规范。
数据分析指令
明确数据格式(CSV/JSON/DataFrame)、字段说明、分析目标(描述性/预测性/因果性)、假设条件、输出形式(表格/图表/文字报告)。数据分析指令常见错误是缺少"数据已完成清洗"或"数据中存在缺失值"这类重要前提。
文案写作指令
明确品牌声音(brand voice)、目标受众画像、核心卖点、禁用词(如竞品品牌名)、平台特性(微信公众号限制 emoji 数量;LinkedIn 偏好严肃语气)、期望的情感倾向(激励/专业/亲切)。"写一篇营销文案"中这些要素一个都没有。
本章小结