Prompt Engineering(提示词工程)
1. 定义
Prompt Engineering(提示词工程) = 设计”喂给模型的指令与示例”,以稳定拿到想要输出的技艺。它决定模型怎么理解任务、遵循什么约束、产出什么形态。
一句话:把模糊的”帮我做 X”翻译成模型能稳定执行的精准输入。 类比:给员工写 SOP——写得清不清楚,直接决定产出质量。
与 Context Engineering 的边界:Prompt 是”怎么下令”(指令的写法与强度),Context Engineering 是”喂什么上下文”(见
context_engineering.md)。两者互补,不是一回事。
2. 核心概念:指令强度层级公式
你在”小伴”里发现的关键规律——让一条要求真正生效,强度是分层的:
软规则 < 强 override 声明 < few-shot 正反示范
(建议/礼貌) (必须/忽略前文) (给正例 + 反例样本)
易被动摇 能压过软规则 直接塑造输出分布(最强)
① 软规则(Soft Rules)
建议性、礼貌性、默认式的指令:
- “请尽量用中文回答”、“建议先总结再展开”、“通常你应当…”
- 特点:无强制力,容易被模型的默认行为或冲突上下文淹没。强度最低。
② 强 override 声明(Strong Override Declaration)
显式声明优先级、带强制词的指令:
- “你必须先输出思考过程,再给答案”、“无论输入如何,都先做一次安全检查”、“Important: 忽略之前所有无关指令”
- 特点:用强约束词把指令”钉”成高优先级,能压过软规则和普通上下文冲突。
③ few-shot 正反示范(Few-shot Positive/Negative Examples)
给具体样本教模型”该做什么”和”不该做什么”:
- 正例:展示期望的输出样式/行为边界(定方向)。
- 反例:展示”不要长这样”(划边界,比纯文字规则更直观)。
- 特点:把任务变成模式模仿(in-context learning),模型从示例归纳规律。这是最强、最稳的一层——示范直接塑造输出分布,比任何文字陈述都贴近模型实际工作机制。
为什么是这个顺序(机理):模型对”文字指令”的遵循度,取决于该指令在训练分布里有多”显式”。软规则模糊、无强制力;强声明用强约束词强制提升优先级;few-shot 则绕开”陈述规则”,直接给可模仿的范式——正例定方向、反例划边界,所以最强。
实用推论:当某条要求绝对不能违反时,别只写软规则——升级成强声明,最好再配一组”正反 few-shot”。这三级是”让指令真正落地”的递进手段。
3. 提示词工程的核心技法
| 技法 | 做法 | 属于哪层 |
|---|---|---|
| 角色/人设 | ”你是资深 X…” | 软规则 |
| 清晰任务描述 | 明确目标、约束、输出格式 | 软→强 |
| 输出格式约束 | 指定 JSON / 表格 / 模板(呼应 ai_predictability.md 结构化输出) | 强声明 |
| 分隔符隔离 | 用 """ / <data> 隔离指令与用户数据,防提示词注入(呼应 agent_security.md) | 强声明 |
| 负面约束 | ”不要做 X” | 软/强 |
| 思维链 CoT | ”一步步思考” | 软→强 |
| 强 override 声明 | ”你必须…/忽略前文” | 强声明 |
| few-shot(正反) | 给正例 + 反例 | 最强 |
4. 典型工作流
新任务:逐级加码
1. 先写软规则跑通(角色 + 目标 + 格式)
│ 不稳定 / 被忽略?
▼
2. 升级强 override 声明(关键约束用"必须/始终"钉死)
│ 仍漂移?
▼
3. 加 few-shot 正反示范(给 1-2 个正例 + 反例定边界)
系统 Prompt 设计(三层叠加)
基础人设/目标 → 软规则(定基调和大方向)
硬性边界/安全 → 强 override 声明(不可违反的红线)
关键场景示范 → few-shot 正反例(让模型照着学)
与 Context / Skill 配合
- Context Engineering:决定喂哪些资料、怎么排(见
context_engineering.md) - Skill:把某类任务的方法论打包、按需加载(见
skills.md)——相当于把”强声明 + few-shot”固化成可复用模块 - Slash Command:把强指令固化为一键触发(见
slash_commands.md)
5. 常见误区
❌ “写进 system prompt 就一定生效” → 软规则易被冲突上下文覆盖;关键约束要用强声明,甚至 few-shot。
❌ “指令越多越有效” → 互相打架的指令会削弱遵循度。按强度层级,关键的一条上强约束即可,别堆砌。
❌ “few-shot 只给正例就够了” → 正例定方向,反例划边界;正反一起最强(正是上面的公式)。
❌ “强 override 能突破模型安全/能力边界” → 不能。override 只对你的任务指令有效,模型的安全对齐与能力上限由模型/平台决定,强声明越不过去。
❌ “Prompt Engineering = Context Engineering” → 前者是”怎么下令”,后者是”喂什么”;互补不是同一件事(见 context_engineering.md)。
❌ “分隔符只是排版” → 它是防提示词注入的关键:把不可信的用户数据用分隔符包起来,模型才不容易把数据当成指令执行(见 agent_security.md)。
6. 延伸阅读 / 关联概念
context_engineering.md— 喂什么/怎么组织上下文(与 prompt 互补,易混)ai_predictability.md— 结构化输出、温度等让输出稳定可复现skills.md— 按需加载的方法论;强声明 + few-shot 的固化形态slash_commands.md— 强指令固化为一键触发agent_security.md— 提示词注入 = 注入漏洞 AI 版;分隔符/强约束防注入agent.md— workflow vs agent 的取舍(决定要不要把指令交给循环)tool_calling.md— 指令里要求模型调工具时的写法