每日 Prompt 技巧

Instruction Engineering 指令工程:写出精准无歧义 Prompt 的 8 条法则

2026-08-09
通用
Claude / GPT-4
Prompt技巧Instruction Engineering指令工程Prompt工程

技巧摘要

LLM 指令遵循能力再强,也敌不过歧义 Prompt。'写得好一点'、'详细一些'这类模糊指令是输出跑偏的根源。Instruction Engineering 研究如何写出精准、无歧义、可验证的指令。本文拆解指令的六要素、八条法则、常见歧义模式与测试方法,帮你把 Prompt 从'差不多'变成'精确可控'。

Prompt 模板

请按以下指令规范执行任务:

## 角色
{{role}}

## 任务
{{task}}(动词开头,明确动作:分析/生成/总结/转换/比较)

## 输入
{{input}}

## 输出格式
{{format}}(JSON / Markdown 表格 / 纯文本 / 分点列表)

## 约束条件
- 长度:{{length}}(如 ≤500 字 / 3-5 个要点)
- 语气:{{tone}}(如正式 / 口语 / 学术)
- 必须包含:{{required}}(如必须引用数据)
- 必须避免:{{forbidden}}(如避免使用专业术语)
- 不确定时:{{fallback}}(如标注"信息不足"而非编造)

## 验证标准
完成后自检:
1. 是否满足所有约束?
2. 输出格式是否正确?
3. 是否有编造内容?
若不满足,修正后重新输出。

为什么需要 Instruction Engineering

Role Prompting 解决了"谁来回答",但没解决"怎么回答"。一个常见的失败模式:

用户:"帮我写得好一点"
LLM:改了措辞,加了形容词
用户(不满):"不是这个意思,我要更有深度"
LLM:加了引用,扩展了篇幅
用户(仍不满):"太长了,要精炼"

问题不在模型,而在指令歧义:"好"是什么?"深度"指什么?"精炼"到多少字?

Instruction Engineering 的核心目标:

让指令精准、无歧义、可验证,使 LLM 一次就能给出符合预期的输出。

指令的六要素

一个完整的指令应包含六个要素(缺一就可能跑偏):

要素作用示例
角色设定视角与风格"你是资深数据分析师"
任务明确要做什么"分析销售数据下降原因"
输入提供处理对象"(附数据)"
输出格式规定呈现方式"Markdown 表格,含 4 列"
约束条件划定边界"≤500 字,避免专业术语"
验证标准自检依据"每个结论必须有数据支撑"

经验法则:六要素中,输出格式和约束条件最常被忽略,也最影响输出质量。

八条法则

法则 1:用动词开头

❌ "关于这个产品"(无动作)
✅ "分析这个产品的竞品优势"(动词"分析"明确)

❌ "用户反馈"(名词,无动作)
✅ "将用户反馈按主题分类"(动词"分类")

常见动作动词:分析、总结、生成、转换、比较、评估、提取、分类、改写、审查。

法则 2:量化代替定性

❌ "简洁一些"(多短算简洁?)
✅ "控制在 200 字以内"

❌ "详细说明"(多详细算详细?)
✅ "每个要点展开 3-5 句话"

❌ "重点突出"(哪些是重点?)
✅ "前 3 点用加粗,其余正常"

量化维度:字数、段落数、要点数、时间范围、数据精度。

法则 3:正向指令优于负向

❌ "不要用专业术语"(模型需先想术语再避免,易出错)
✅ "用初中生能理解的语言"(直接给目标风格)

❌ "不要太长"(负向,边界模糊)
✅ "控制在 300 字以内"(正向,边界清晰)

原理:LLM 是生成模型,"不要做X"需先激活X的表示再抑制,不如直接引导到正确方向。

法则 4:一次一个指令

❌ "总结这篇文章并翻译成英文然后评价质量"
   → 模型可能漏掉某步或顺序混乱

✅ "请按顺序完成:
   1. 总结这篇文章(200 字内)
   2. 将总结翻译成英文
   3. 评价翻译质量(1-5 分)"

复合指令需显式编号与顺序。

法则 5:给示例胜过讲规则

❌ "输出 JSON 格式,含 name 和 age 字段"
✅ "输出如下格式:
   {"name": "张三", "age": 25}"

这是 Few-shot 的简化版:一个示例胜过十句描述。

法则 6:明确不确定时的行为

❌ (未说明,模型默认编造)
✅ "若信息不足,回答'根据现有信息无法确定',不要编造"

✅ "若多个答案都合理,列出 Top 3 并标注置信度"

这是控制 幻觉 的关键指令。

法则 7:指定输出分隔符

❌ (输出与解释混在一起,难以解析)
✅ "将最终答案放在 <answer></answer> 标签内,推理过程放在 <thinking></thinking> 内"

这对程序化处理 LLM 输出至关重要。

法则 8:提供验证标准

✅ "完成后自检:
   1. 字数是否 ≤500?
   2. 是否包含 3 个数据点?
   3. 是否有编造内容?
   若不满足,修正后重新输出。"

让模型自我审查,相当于内置一轮 Self-Consistency 的验证。

常见歧义模式

模式 1:程度副词歧义

模糊精确
"简短""≤100 字"
"详细""每个要点 3-5 句"
"重要""影响营收的"
"近期""过去 7 天"
"多个""3-5 个"

模式 2:指代歧义

❌ "把它改好"("它"指什么?"好"是什么?)
✅ "把第二段的论据补充具体数据,每句至少一个数字"

模式 3:格式歧义

❌ "用表格"(几列?什么表头?)
✅ "用 3 列表格:维度 | 现状 | 建议"

模式 4:范围歧义

❌ "分析竞品"(哪些竞品?分析什么维度?)
✅ "分析 Notion 和 Obsidian 在'协作功能'和'价格'两个维度的差异"

模式 5:优先级歧义

❌ "要全面但要简洁"(矛盾)
✅ "优先保证关键信息完整,次要信息可省略,总字数 ≤500"

实战:从模糊到精准

优化前(模糊)

帮我写个产品介绍,要好一点,吸引人。

问题:无角色、无格式、无字数、"好"与"吸引人"无定义。

优化后(精准)

你是资深产品文案。请为以下产品写一段介绍:

产品:{{product_name}}
卖点:{{selling_points}}
目标用户:{{audience}}

要求:
1. 字数 150-200 字
2. 开头一句话点出核心价值
3. 包含 2-3 个具体卖点(用数据或场景)
4. 结尾一句行动号召
5. 语气:专业但不生硬,像朋友推荐

输出格式:
直接输出文案,不要加"以下是产品介绍"等前缀。

自检:
- 字数是否在 150-200?
- 是否有具体卖点?
- 是否有行动号召?
若不满足,修正后输出。

指令测试方法

方法 1:边界测试

故意给边缘输入,看指令是否hold住:

指令:"提取姓名,输出 JSON"
测试输入:
- 正常:"张三" → {"name":"张三"}
- 边界:"张三李四" → {"name":["张三","李四"]} 还是 {"name":"张三李四"}?
- 异常:"abc" → {"name":null} 还是报错?

若边缘行为不符合预期,需在指令中补充约束。

方法 2:反转测试

把指令给另一个人(或另一个 LLM),看他能否完全复述你的意图。若不能,说明指令有歧义。

方法 3:A/B 对比

同一任务写两个版本指令,对比输出质量:

版本 A:"总结这篇文章"
版本 B:"用 3 个要点总结这篇文章,每个要点 ≤50 字,标注原文段落号"

差异越大,说明指令优化的价值越大。

与其他 Prompt 技巧的关系

技巧侧重与指令工程的关系
Role Prompting设定视角指令工程的"角色"要素
Few-shot给示例指令工程的"示例"法则
CoT推理过程与指令工程互补
Self-Consistency多次验证指令工程的"验证标准"延伸

最佳实践:先写好指令(Instruction Engineering),再叠加角色(Role)与示例(Few-shot),最后按需加推理(CoT)与验证(SC)。

常见误区

  • 误区 1:指令越长越好。冗长指令反而让模型抓不住重点,精准比详尽更重要。
  • 误区 2:用 Markdown 就够清晰。格式≠指令,表格再好看,内容模糊仍会跑偏。
  • 误区 3:模型够强就不需要精确指令。GPT-4o 也会因歧义跑偏,指令工程是所有模型的通用基本功。
  • 误区 4:一次写完美。指令需要迭代,用边界测试发现问题再修正。
  • 误区 5:约束越多越好。约束过多会相互冲突,抓核心 3-5 条即可。
  • 误区 6:忽视验证标准。没有验证标准的指令等于"做完不算数",模型可能草草了事。

进阶技巧

  • 指令分层:复杂任务拆为"主指令 + 子指令",降低单条复杂度
  • 条件分支:若 X 则 A,若 Y 则 B,让指令适配多种情况
  • 优先级声明:若约束冲突,优先满足字数 > 格式 > 语气
  • 失败模式预判:常见错误:...,请避免
  • 元指令:先复述你的理解,再执行,确保理解一致

小结

Instruction Engineering 是 Prompt 工程的地基:没有精准指令,再强的模型与再巧的技巧都发挥不出价值。八条法则的核心精神是——

把"我以为你懂"变成"我明明白白告诉你"。

当你发现 LLM 输出"差不多但不对"时,第一步不是换模型或加 CoT,而是检查指令是否有歧义。

Prompt 工程进阶系列下一篇将讲 Prompt 模板化与复用:如何把高频指令封装成可复用模板。

相关推荐

查看更多 →
Prompt通用

Prompt 模板化与复用:把高频指令封装成可复用资产,团队效率提升 10 倍

团队里每个人都在重复写相似的 Prompt:运营写周报、销售写跟进邮件、客服写回复模板。Prompt 模板化把这些高频指令封装成可复用资产,通过变量替换实现一键复用。本文拆解 Prompt 模板的设计原则、变量抽象、版本管理与团队共享机制,帮你把个人经验沉淀为组织能力。

2026-08-10
#Prompt技巧#模板化
Prompt通用

Role Prompting 角色提示:一句'你是资深XX专家'如何让 LLM 输出质量提升 40%

在 Prompt 开头赋予 LLM 一个角色身份(如'你是资深数据分析师'),能让模型激活相关领域知识、调整语气风格、约束输出范围。本文拆解 Role Prompting 的心理学原理、角色设计四要素、五类经典角色模板,以及角色提示的适用边界与常见误区。

2026-08-08
#Prompt技巧#Role Prompting
Prompt分析

Prompt 评估与优化:用数据衡量 Prompt 质量,告别'感觉还行'

Prompt 工程最大的痛点是'凭感觉调'——改了一个词,不知道是变好还是变差。Prompt 评估用量化指标(准确率/忠实度/相关性/延迟)替代主观判断,用 A/B 测试与回归测试保证迭代可控。本文拆解四类评估指标、评估数据集构建、自动化评估流程与常见误区,帮你建立数据驱动的 Prompt 优化闭环。

2026-08-11
#Prompt技巧#评估
Prompt分析

Prompt 安全与注入防护:防止用户输入劫持你的 AI 应用

当 LLM 应用接受用户输入时,恶意用户可通过 Prompt 注入劫持系统指令、泄露系统提示、绕过安全限制。本文拆解 Prompt 注入的五种攻击模式、三类防御策略、输入净化技巧与系统提示保护方案,帮你构建安全的 LLM 应用。Prompt 安全新系列开篇。

2026-08-12
#Prompt技巧#安全