7.5.3 高级 Prompt 技巧
当你已经知道 Prompt 基础后,接下来更自然的问题就是:
还有哪些方式能让模型更稳、更接近我想要的结果?
这就是“高级 Prompt 技巧”的位置。 但注意,这里的“高级”不等于“更花哨”,而是:
更适合问题。
学习目标
- 理解 few-shot、角色设定、分步约束这些技巧分别在解决什么问题
- 学会判断什么时候值得加技巧,什么时候反而会把 Prompt 写乱
- 建立 Prompt 调优要靠实验而不是靠感觉的意识
- 看懂几类常见高级技巧的真实作用边界
先建立一张地图
高级 Prompt 技巧最适合新人的理解方式不是“看到什么招都往上堆”,而是先看清:
这节真正想解决的是:
- 哪些技巧分别在补哪类问题
- 什么时候该加,什么时候反而会让 Prompt 变乱
一个更适合新人的总类比
你可以把高级 Prompt 技巧理解成:
- 给任务说明书继续加护栏和示范
基础 Prompt 像是:
- 把任务说清楚
高级 Prompt 更像是:
- 再补几个例子
- 再说明输出长什么样
- 再提醒模型先检查有没有漏条件
所以“高级”不代表更玄,而是:
- 更适合处理更容易跑偏的任务
一、为什么会需要“高级” Prompt?
因为有些任务仅靠一句简单指令不够稳。
例如:
- 标签边界模糊
- 输出格式要求严格
- 任务有多阶段逻辑
- 模型容易漏条件
这时就需要更细的引导。
但最重要的原则仍然是:
不是技巧越多越好,而是越匹配任务越好。
二、Few-shot:为什么“给例子”这么有用?
它最适合哪些问题?
当任务很难只靠一句定义讲清楚时,few-shot 特别有价值。
例如:
factvsopinion- 信息抽取字段样式
- 某种固定回复风格
一个最小 few-shot 示例
few_shot_examples = [
{"input": "北京是中国的首都。", "output": "fact"},
{"input": "这门课非常有趣。", "output": "opinion"}
]
for ex in few_shot_examples:
print(ex)
预期输出:
{'input': '北京是中国的首都。', 'output': 'fact'}
{'input': '这门课非常有趣。', 'output': 'opinion'}
它真正的作用是什么?
不是“多写几行字”,而是:
把抽象规则变成可以模仿的示范。
这在很多边界模糊任务里比单纯定义更稳。
一个很适合初学者先记的判断表
| 任务现象 | 更值得优先试哪种技巧 |
|---|---|
| 标签边界很模糊 | few-shot |
| 输出风格总不一致 | 角色设定或风格约束 |
| 任务有明显多步骤 | 分步约束 |
| 总漏条件或格式出错 | 自检 |
这个表很适合新人,因为它会把“技巧列表”重新变成:
- 出现什么问题时,我先补哪一层

读这张图时不要把技巧往上堆,而是先看问题类型:标签边界模糊再加 few-shot,格式不稳再加结构约束,步骤复杂再显式拆步骤,总漏条件再加自检。高级 Prompt 的核心是匹配问题,不是写得更花。
四个容易混淆的术语
| 术语 | 含义 | 什么时候用 |
|---|---|---|
| Zero-shot | 不给例子,直接给任务 | 任务简单、标签边界清楚时先用它 |
| Few-shot | 在真实任务前给几个输入输出示例 | 定义不够清楚、模型需要模仿样例时使用 |
| 角色提示 | 让模型以某种角色或风格工作 | 用来控制语气、视角或专业边界,不能替代任务说明 |
| 自检 | 最终输出前让模型检查约束是否满足 | 字段遗漏、格式错误、无来源事实经常出现时使用 |
三、角色设定什么时候有帮助?
很多 Prompt 会写:
- 你是一个资深老师
- 你是一个法律助手
- 你是一个代码 reviewer
它什么时候真的能带来收益?
当你希望模型:
- 采用某种风格
- 进入某种工作模式
- 维持某种角色边界
时,角色设定会很有帮助。
但角色设定不是魔法
如果任务本身不清楚,只写一句:
- 你是世界顶级专家
通常不会自动让结果变稳。
所以一个很重要的判断是:
角色设定是辅助层,不是替代任务定义层。
一个最小“角色不会替代任务定义”的对比例子
bad_prompt = "你是世界顶级专家,请帮我处理一下这段内容。"
better_prompt = "你是一位课程助教。请把下面文本总结成 3 条中文要点,每条不超过 20 个字。"
print("bad_prompt =", bad_prompt)
print("better_prompt=", better_prompt)
预期输出:
bad_prompt = 你是世界顶级专家,请帮我处理一下这段内容。
better_prompt= 你是一位课程助教。请把下面文本总结成 3 条中文要点,每条不超过 20 个字。
这个例子很适合初学者,因为它会提醒你:
- 角色设定不是魔法增益
- 真正稳不稳,还是看任务规格有没有说清楚
四、分步约束为什么经常更稳?
因为很多任务天然有多阶段
例如:
- 先找事实
- 再做判断
- 最后结构化输出
如果你把这几步全揉成一句话,模型更容易乱。
一个示意
请按以下步骤完成任务:
1. 先找出文本里的关键事实
2. 再判断其情感倾向
3. 最后输出 JSON
这种写法的核心价值在于:
把任务内部结构显式写出来。
五、自检(self-check)为什么会出现?
什么时候它特别有意义?
当你最担心模型:
- 漏掉条件
- 格式出错
- 输出和约束不一致
时,可以让它在输出前再做一层自检。
一个最小示意
在输出最终答案前,请检查:
1. 是否遗漏了关键信息
2. 是否满足输出格式要求
3. 是否包含了原文中不存在的事实
这类技巧的边界
它可能有帮助,但不是万能药。 它更适合:
- 格式敏感
- 漏信息敏感
的场景。
六、为什么高级技巧不能乱叠?
因为每多加一层技巧,也在增加:
- Prompt 长度
- 复杂度
- 调试难度
所以更成熟的做法通常不是:
- 什么都加
而是:
- 先明确问题,再加最需要的那一层
这是一个非常重要的 Prompt 工程习惯。
再看一个最小“逐层加技巧”的实验表
| 版本 | 改了什么 | 你最该观察什么 |
|---|---|---|
| v1 | 只有任务目标 | 输出是否跑偏 |
| v2 | + 输出格式 | 格式是否更稳 |
| v3 | + few-shot | 边界任务是否更稳 |
| v4 | + 自检 | 是否更少漏条件 |
这个表很适合新人,因为它能把 Prompt 调优重新变成:
- 一个能做对照实验的过程
七、一个更稳的 Prompt 调优顺序
比起“看到一个技巧就往上堆”,更推荐:
- 先把任务目标写清楚
- 再把输出格式写清楚
- 如果还不稳,再补示例
- 如果还是不稳,再加分步约束或自检
这样你更容易判断:
- 哪一层改动真的带来了收益
第一次做 Prompt 调优时最稳的策略
建议你每次只新增一层技巧,例如:
- 先改输出格式
- 再补 1~2 个 few-shot
- 再考虑加分步约束
不要一次把角色、示例、自检、格式全叠上去,否则很难知道到底哪一层在起作用。
八、最常见的误区
觉得 Prompt 越长越高级
长但乱的 Prompt 往往更糟。
什么技巧都叠进去
这会让你很难知道究竟哪一层在起作用。
只凭感觉调,不做小实验
九、核心提醒
- 高级 Prompt 不是“更花”,而是“更贴问题”
- few-shot、角色设定、分步约束和自检各有边界
- 最稳的调优方式仍然是逐层实验,而不是一次乱叠
Prompt 调优本质上也应该是实验过程。
如果把它做成笔记或项目,最值得展示什么
最值得展示的通常不是:
- 一长串看起来很复杂的 Prompt
而是:
- 原始 Prompt
- 你新增了哪一层技巧
- 输出因此稳定了什么
- 哪些技巧其实没有明显帮助
这样别人会更容易看出:
- 你理解的是 Prompt 调优方法
- 不只是会堆技巧名词
小结
这一节最重要的不是背几个技巧名字,而是理解:
高级 Prompt 技巧真正有价值的地方,在于它们能帮助你把任务定义、示范、约束和校验做得更稳定。
而不是让 Prompt “看起来更高级”。
练习
- 为一个情感分类任务写出一个包含 few-shot 的 Prompt。
- 想一想:角色设定和任务目标哪一个更基础?为什么?
- 用自己的话解释:为什么“分步约束”常常比一句模糊大指令更稳?
- 为什么说高级 Prompt 技巧真正重要的不是复杂,而是适配?