Prompt 工程的 3 个核心技巧(讲透版)

Day02|Prompt 工程的 3 个核心技巧(讲透版)
前言:同一个模型,凭什么有人用得好
凌晨两点,你盯着屏幕。
隔壁老王用着同一个 ChatGPT,三分钟搞定周报。你问了半小时,它还答非所问——要么写得太虚,要么格式乱七八糟。
你心里那个鼓点开始敲:是模型偏心?是我智商不够?
都不是。
差距不在模型,在 Prompt。
同一颗大脑,你给它清晰指令还是含糊问题,出来的东西天差地别。我踩过太多坑,把市面上的 Prompt 技巧翻了一遍,发现真正高频管用的,就 3 个。
今天我不光给你这 3 个名字,还讲透每一个为什么有效、怎么写、容易踩什么坑。读完你今晚就能用,而且知道为什么这么用。
PART 01:角色设定——先告诉模型,它是谁
为什么有效:大模型训练时,读过海量「某个角色说的话」。你给它一个身份,等于让它把注意力聚焦到那部分知识上,用那个角色的口吻和深度来回答。
往底层说一句:这是条件激活——身份词会激活模型里和该角色相关的参数通路,抑制无关的「发散」。所以加了角色,输出会更收敛、更专业、更少废话。
怎么写:一句话——「你是一个……」。
# 不加角色(泛泛)
prompt = "帮我写个产品周报"
# 加角色(聚焦)
prompt = "你是一个有 8 年经验的 ToB 产品经理。帮我写本周周报。"
加了角色,模型写出来的周报,术语、关注点、颗粒度全都不一样——它开始像一个产品经理那样思考。
角色选得对不对,效果差很多。常见角色和它们各自聚焦的方向:
| 角色 | 聚焦点 | 适合的活 |
|---|---|---|
| ToB 产品经理 | 客户场景、指标、优先级 | 周报、需求文档 |
| 资深文案 | 钩子、节奏、情绪 | 标题、广告语 |
| 数据分析师 | SQL、指标拆解、归因 | 数据解读、报表 |
| 代码审查员 | 边界条件、安全、性能 | 代码 review |
| 面试官 | 追问逻辑、深度、反例 | 模拟面试、自检 |

进阶一招:主角色 + 审核角色。先让模型扮演执行者产出,再让它切换成审核者挑刺,效果比一次生成好得多。
# 第一轮:执行者
draft = chat("你是有 8 年经验的 ToB PM。帮我写本周周报。")
# 第二轮:审核者
final = chat(f"你是挑剔的技术总监。审这段周报,指出 3 个不够具体的地方并改写:\n{draft}")
常见坑:角色太泛,等于没加。
"你是一个专家"——啥专家?模型还是不知道聚焦哪。"你是一个资深数据分析师,擅长 SQL 和指标拆解"——这才叫角色。
一句话:角色越具体,模型越知道调用哪块脑容量。
PART 02:任务拆解 + CoT 思维链——模型最怕含糊
为什么有效:模型不是一个字一个字往后蒙最准,而是一步步想更准。你把大任务拆成小步骤,等于强迫它一步步推理,而不是一口气猜一个答案。
底层原理就一句:拆解让模型把更多 token「花在推理」上,而不是直接跳到结论。每多一步中间过程,它就有更多机会修正方向,错误就更难累积到最终答案。
怎么拆:把"做一件事",拆成"按顺序做 3~5 件小事"。
# 含糊(模型瞎猜结构)
prompt = "帮我分析这个产品为啥留存低"
# 拆解 + 思维链(模型按步推理)
prompt = """你是一个产品增长专家。请按以下步骤分析留存低的原因:
1. 先列出 3 个最可能的假设
2. 对每个假设,给出验证它需要的核心数据
3. 最后按「影响面 × 置信度」排序,给出优先验证哪个
"""
看出差别没?含糊版,模型给你一段泛泛的"可能用户体验不好"。拆解版,它被迫先列假设、再给数据、最后排序——每一步都比"蒙一段"靠谱。
拆解版模型实际会这么答(每步都落到实处):
- 假设:① 新用户引导太长,没等到 aha 时刻就走;② 核心功能入口太深,注册后找不到;③ push 太频繁被关通知。
- 验证数据:① 看新用户「注册→首次成功」漏斗,卡在哪一步;② 看注册后 24h 内是否点过核心功能;③ 看 push 关闭率和关通知用户的留存对比。
- 排序:按「影响面 × 置信度」,优先验证①——影响面最大(覆盖所有新用户),且数据现成。
看见没?同样的模型,换个问法,输出从「一段正确的废话」变成「一份能直接开干的行动清单」。
这招有个学名,叫 CoT(Chain of Thought,思维链)。本质就一句话:别让模型跳着答,让它把推理过程写出来。 复杂问题(推理、计算、多步规划)尤其管用。
CoT 有两种用法,按需选:
| 类型 | 怎么触发 | 适合 |
|---|---|---|
| Zero-shot CoT | 在 prompt 末尾加一句「请一步步思考」 | 通用、省事 |
| Few-shot CoT | 给 1~2 个带推理过程的样例 | 任务复杂、要求高 |

⚠️ 但 CoT 不是万能的。简单任务(翻译一句话、改个错别字)用 CoT 反而变慢、变啰嗦,甚至引入错误——模型为了「凑步骤」会过度发挥。判断标准:任务需要推理/计算/规划才上 CoT,直觉型任务别画蛇添足。
拆解的粒度也有讲究,不是越细越好:
| 拆解粒度 | 步数 | 效果 |
|---|---|---|
| 太粗 | 1 步 | 退化成含糊提问,模型瞎蒙 |
| 舒适区 | 3~5 步 | 推理充分,又不啰嗦 |
| 太碎 | 7+ 步 | 模型啰嗦、容易跑偏,该合并 |
常见坑:拆得太碎,模型反而啰嗦。 3~5 步最舒服,超过 7 步考虑合并。
PART 03:Few-shot + 输出格式——给例子,定格式
为什么有效:你在 Prompt 里解释 100 句"我要那种……的感觉",不如塞给它一个真实样例。模型是模仿大师,照着例子来,准确率立涨。
怎么给:放 1~2 个「输入→输出」的样例,然后再给真实任务。
prompt = """把用户的吐槽分类成:bug / 需求 / 吐槽。
例子1:
输入:点了三次才下单成功
输出:bug
例子2:
输入:希望加个夜间模式
输出:需求
现在分类:
输入:""" + user_input
Few-shot 例子不是随便挑的,有四条挑选原则:
- 数量:1~2 个就够,别堆。多了反而过拟合,模型变死板。
- 顺序:把和当前任务最接近的例子放最后(近因效应最强)。
- 反例:加一个「容易混淆但类别不同」的例子,模型分得更清。
- 风格一致:所有例子的输入长度、输出格式要统一,不然模型学混。
输出格式控制:除了给例子,还要明说格式——「用 JSON 输出」「用 Markdown 表格」「不超过 50 字」。模型默认爱写长文,你不说格式,它就给你一大段散文。
三种常见格式的 before/after:
| 你想要的 | 别这么说 | 这么说 |
|---|---|---|
| JSON | 「结构化一点」 | 「只输出 JSON,字段:category, confidence」 |
| 表格 | 「整理一下」 | 「用 Markdown 表格,列:功能、优先级、理由」 |
| 短文 | 「简洁点」 | 「不超过 50 字,不要开头客套」 |
给你一个完整可跑的分类例子,带 JSON 解析:
import json
from openai import OpenAI
client = OpenAI()
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{
"role": "user",
"content": f"""把用户反馈分类为 bug / 需求 / 吐槽,只输出 JSON。
{{"category": "...", "reason": "...一句话理由..."}}
输入:{user_input}""",
}],
)
result = json.loads(resp.choices[0].message.content) # 直接解析成 dict
print(result["category"], result["reason"])
Few-shot vs Fine-tune 的边界:当你发现 prompt 里要塞的例子越来越多(5 个以上还压不住),或者任务风格极度固定、调用又高频——那就是从 Few-shot 该升级到 Fine-tune 的信号了。例子能解决 80% 的问题,剩下 20% 重复到一定程度,就该烙进权重。
常见坑:例子给太多(5 个以上)反而过拟合,模型变得死板;例子之间风格要一致,不然模型学混。
结尾:3 招合一
回头看,Prompt 工程就 3 招:
角色设定(让它知道用哪部分脑)→ 任务拆解 + CoT(让它一步步想)→ Few-shot + 格式(让它照着做、按格式交)。
每招都不是玄学,是对着大模型的脾气来的。
Prompt 不是咒语,是写给模型的沟通说明书。你写得多清楚,它就答得多准。
下一篇我想拆更具体的——你最想让我讲 Few-shot 例子怎么挑、CoT 在什么场景反而会搞砸,还是 Prompt 注入怎么防?
这 3 招别光看,今晚就找一个真实任务练手——写周报、改文案、做分类都行,练一次比看十篇技巧帖管用。
评论区告诉我。
下一篇预告:Day03 可能讲「Few-shot 例子到底怎么挑——数量、顺序、反例都有讲究」
我是小刘檀木,一个从二本摸爬滚打到上市公司 AI 负责人的普通人。关注我,把 AI 学进简历。
— END —
小刘檀木 · 帮普通人把 AI 学进简历
更多推荐




所有评论(0)