Ch12 Prompt工程修订于 二〇二六年七月六日

提示词纪律

一句话理解

提示词纪律 (Prompt Discipline) 是提示词编写的规则和约束体系,确保 AI 可预测、一致地输出。它不是”怎么写好 Prompt”的技巧,而是”怎么约束 Prompt 行为”的规范——明确角色、明确输出格式、明确约束条件、明确”不要做什么”。2026 年,提示词纪律正在从”手工调参”走向”结构化约束”。

核心规则

规则一:明确角色 (Role)

告诉模型”你是谁”。角色设定影响模型的回答风格、知识范围和行为边界。

好的角色设定:

你是一个资深 Python 后端开发者,有 10 年经验。
你的回答应该:准确、实用、包含代码示例。

不好的角色设定:

你是一个 AI 助手。

角色设定纪律:

  • 角色要具体,不要泛化
  • 包含领域、经验水平、行为风格
  • 角色设定放在 System Prompt 的最前面

规则二:明确输出格式 (Output Format)

告诉模型”输出什么格式”。格式约束减少了解析错误,提高了输出的可预测性。

格式约束类型:

格式类型适用场景示例
JSON程序化消费{"name": "...", "value": ...}
Markdown文档、笔记## 标题\n- 列表
表格对比、清单`
代码块代码生成带语言标识的代码块
自由文本对话、解释自然语言

格式约束纪律:

  • 提供具体示例(Few-Shot)
  • 使用结构化标记(如 XML 标签)包裹关键内容
  • 对程序化输出,始终要求 JSON 并给出 Schema

规则三:明确约束 (Constraints)

告诉模型”什么能做,什么不能做”。约束是提示词纪律的核心——它定义了模型的行为边界。

约束类型:

约束类型说明示例
格式约束输出格式要求“始终用 Markdown 格式回复”
内容约束内容范围限制“只讨论 Python 技术,不涉及其他语言”
行为约束行为方式限制“不确定时明确说’不确定’,不要猜测”
语言约束语言使用限制“默认中文回复,英文术语保留原文”
安全约束安全边界限制“不执行任何可能修改系统文件的命令”

规则四:明确”不要做什么” (Negative Constraints)

Negative Constraints 是最容易被忽略但最重要的提示词纪律。告诉模型”不要做什么”往往比”要做什么”更有效。

为什么 Negative Constraints 重要:

  • 模型的默认行为可能不符合预期,需要显式禁止
  • 人容易假设”模型应该知道不要这样”,但模型不一定知道
  • Negative Constraints 是提示词中的”安全网”

好的 Negative Constraints:

- 不要编造不存在的 API 或函数
- 不要在没有确认的情况下修改文件
- 不要使用过时的语法(Python 2 语法)
- 不确定时,不要猜测,明确说"不确定"

不好的做法:

  • 只说了”要做什么”,没有说”不要做什么”
  • Negative Constraints 太模糊(“不要出错”)

本 Vault 的提示词纪律实践

本 Obsidian Vault 的 Agent.md 中体现了以下提示词纪律:

角色设定

Agent 被设定为”Obsidian Vault 的导航和知识管理助手”,行为边界包含:

  • 通过文件系统导航知识
  • 通过 WikiLink 追踪知识关联
  • 通过摘要层判断信息相关性

输出格式约束

  • 笔记使用 Markdown 格式
  • 包含 YAML frontmatter
  • 使用 [[概念-WikiLink]] 表达知识关联
  • 表格用于对比信息

行为约束

  • 先读摘要,再判断是否需要全文
  • 无链接=不存在(WikiLink 是知识的唯一声明机制)
  • 渐进式加载,避免一次性加载所有内容

和 System Prompt 的关系

维度提示词纪律System Prompt
定义编写提示词的规则和约束体系模型初始化时加载的预设指令
范围方法论层面实现层面
关系指导如何写好 System Prompt是提示词纪律的具体产物
可迁移性跨模型、跨场景适用通常针对特定模型和场景
示例“明确角色、明确输出格式”“你是一个资深 Python 开发者”

2026年:从”手工调参”到”结构化约束”

趋势一:声明式 Prompt 约束

2026年,越来越多的框架支持声明式 Prompt 约束——用结构化数据(JSON/YAML)定义约束,而非自由文本:

constraints:
  role: "Python backend developer"
  expertise: "10 years"
  output_format: "markdown"
  forbidden:
    - "guess when uncertain"
    - "use deprecated Python 2 syntax"
    - "modify files without confirmation"
  language: "Chinese with English technical terms"

趋势二:动态约束注入

根据上下文动态调整约束。例如,在代码生成场景中自动注入代码规范约束,在数据分析场景中自动注入数据隐私约束。

趋势三:约束验证

2026年出现了专门的”约束验证”工具——在 Prompt 发送给模型之前,自动检查约束是否可能冲突或不完整。

提示词纪律检查清单

检查项说明是否满足
角色是否明确具体角色(领域、经验、风格)[ ]
输出格式是否明确指定了输出格式(JSON/Markdown/表格)[ ]
约束是否完整明确了能做和不能做的事[ ]
Negative Constraints 是否充分禁止了常见的错误行为[ ]
是否有 Few-Shot 示例提供了正确输出的示例[ ]
约束是否可验证模型输出可以被程序化验证[ ]
约束是否无冲突不同约束之间没有矛盾[ ]

相关笔记

来源

关联7

知识图谱

局部图谱 · 点节点跳转