7.5.2 Prompt 基础

- 理解 Prompt 真正控制的是什么
- 理解为什么模糊 Prompt 会让模型输出飘
- 学会从任务目标、输出格式、约束条件三层去写更稳的 Prompt
- 建立 Prompt 调试的最基本直觉
新人先掌握 / 进阶再理解
Section titled “新人先掌握 / 进阶再理解”如果你是新人,这一节先抓住一句话:Prompt 不是“咒语”,而是任务说明书。先把“做什么、输出成什么样、不能做什么”三件事写清楚,比背很多技巧更重要。
如果你已经有经验,可以进一步关注:Prompt 是否能被程序稳定解析,是否能约束模型不要越界,是否能和结构化输出、Function Calling、RAG、Agent 的执行链路接起来。
先建立一张地图
Section titled “先建立一张地图”如果你已经学过大模型概览和预训练主线,这一节最自然的续接就是:
- 前面你已经知道模型能力从哪里来
- 这一节开始回答:不改模型参数时,我们怎样更稳定地调动这些能力
所以 Prompt 基础不是“小技巧”,而是在回答:
- 如何通过更清楚的任务表达,把已有模型能力更稳地释放出来
Prompt 基础这节最适合新人的理解顺序不是“先学几个技巧”,而是先看清:
flowchart LR A["任务目标"] --> B["输出格式"] B --> C["约束条件"] C --> D["更稳定的模型输出"]所以这节真正想解决的是:
- 任务到底有没有说清楚
- 模型到底知不知道要交付成什么样
- 哪些边界必须提前写死
一、Prompt 到底是什么?
Section titled “一、Prompt 到底是什么?”不只是“输入一段文字”
Section titled “不只是“输入一段文字””从最表面看,Prompt 当然是你输入给模型的一段文本。 但从工程视角看,它更像:
你写给模型的任务说明书。
你真正通过 Prompt 在告诉模型的是:
- 这次任务是什么
- 要输出成什么形式
- 需要遵守哪些边界
一个很直观的类比
Section titled “一个很直观的类比”Prompt 很像你给新同事下任务:
- 目标写清楚没有?
- 交付格式写清楚没有?
- 有没有说明哪些事不能做?
如果这些都含糊,结果就很容易跑偏。 模型也是一样。
一个更适合新人的总类比
Section titled “一个更适合新人的总类比”你也可以把 Prompt 理解成:
- 给一个很能干、但不会读心术的实习生下任务
这个实习生本身能力不错, 但如果你只说:
- “你帮我弄一下”
那结果大概率会飘。 问题不在于他不聪明, 而在于:
- 你没把目标、格式和边界交代清楚
第一次学 Prompt,最该先抓住什么?
Section titled “第一次学 Prompt,最该先抓住什么?”最该先抓住的不是几个流行套路,而是这句:
Prompt 的本质,是把任务规格翻译成模型能执行的说明。
一旦这句稳住了,后面你再看:
- few-shot
- 角色设定
- 结构化输出
就会更自然地先问:它到底是在补任务目标、输出格式,还是行为边界。
二、为什么“模糊 Prompt”特别危险?
Section titled “二、为什么“模糊 Prompt”特别危险?”一个典型坏例子
Section titled “一个典型坏例子”帮我处理一下这段内容。这句话的问题不是礼貌不礼貌,而是:
- 到底要总结?
- 还是改写?
- 还是分类?
- 输出要多长?
一个稍微清楚一点的版本
Section titled “一个稍微清楚一点的版本”请把下面内容总结成 3 条中文要点,每条不超过 20 个字。一下子就明确了:
- 做什么:总结
- 输出形式:3 条要点
- 输出长度:每条不超过 20 个字
这就是 Prompt 最基础的价值:
把模糊任务变成明确任务。
再看一个“坏 Prompt -> 好 Prompt”的最小对比表
Section titled “再看一个“坏 Prompt -> 好 Prompt”的最小对比表”- 坏版本:
帮我处理一下这段内容。问题:任务、格式、边界都不清楚。 - 好一点:
请总结这段内容。改进:知道要总结,但格式还不清楚。 - 更稳版本:
请把下面内容总结成 3 条中文要点,每条不超过 20 个字,不要补充原文之外的信息。优点:任务、格式、约束都清楚。
这个表特别适合新人,因为它会让你看见:
- Prompt 变稳,不是靠神秘词汇
- 而是靠规格越来越清楚
三、写 Prompt 时最基础的三层结构
Section titled “三、写 Prompt 时最基础的三层结构”第一层:任务目标
Section titled “第一层:任务目标”先回答:
- 模型到底要做什么?
例如:
- 总结
- 分类
- 抽取
- 改写
第二层:输出格式
Section titled “第二层:输出格式”再回答:
- 输出应该长什么样?
例如:
- 一句话
- 三条 bullet
- JSON
- 表格
第三层:约束条件
Section titled “第三层:约束条件”最后回答:
- 哪些边界不能碰?
例如:
- 不要编造
- 不要输出解释
- 只能根据给定资料回答
这三层就是 Prompt 工程最基础也最重要的骨架。
为什么这三层结构特别值得先记?
Section titled “为什么这三层结构特别值得先记?”因为很多看起来“写得不错”的 Prompt,最后不稳定,往往就卡在:
- 任务目标含糊
- 输出格式没写清
- 约束条件漏掉了
所以新人第 1 站最稳的做法不是堆技巧,而是把这三层先写完整。
第一次写 Prompt 时,最稳的默认顺序
Section titled “第一次写 Prompt 时,最稳的默认顺序”更稳的顺序通常是:
- 先写“要做什么”
- 再写“输出长什么样”
- 再写“不能做什么”
- 最后才去调整语气、风格和角色
这样会比一开始就写:
- 你是一位资深专家…
这类角色设定更稳,因为最基础的任务规格先站住了。

四、一个最小 Prompt 规格示例
Section titled “四、一个最小 Prompt 规格示例”prompt_spec = { "task": "summary", "output_format": "3 个中文要点", "constraints": ["每条不超过 20 个字", "不要补充原文之外的信息"]}
print(prompt_spec)预期输出:
{'task': 'summary', 'output_format': '3 个中文要点', 'constraints': ['每条不超过 20 个字', '不要补充原文之外的信息']}这个例子在教什么?
Section titled “这个例子在教什么?”它在提醒你:
很多看起来不错的 Prompt,其实背后都有一份更清楚的任务规格。
也就是说,Prompt 不是纯靠灵感写出来的,而更像“把任务规格翻译成模型能理解的语言”。
再看一个最小“Prompt 检查表”示例
Section titled “再看一个最小“Prompt 检查表”示例”prompt_checklist = { "task_defined": True, "output_format_defined": True, "constraints_defined": False,}
def next_fix(checklist): if not checklist["task_defined"]: return "先把任务目标写清楚。" if not checklist["output_format_defined"]: return "先把输出格式写清楚。" if not checklist["constraints_defined"]: return "先补上边界和限制条件。" return "基础 Prompt 规格已经比较完整。"
print(next_fix(prompt_checklist))预期输出:
先补上边界和限制条件。这个示例很适合初学者,因为它把 Prompt 从“写一句话”变成了:
- 一份可检查的任务规格

五、一个真正能看出差别的例子
Section titled “五、一个真正能看出差别的例子”请分析下面这段文本。请阅读下面文本,并完成情感分类。只输出 positive 或 negative,不要输出其他解释。为什么后者更稳?
Section titled “为什么后者更稳?”因为它同时明确了:
- 任务目标:情感分类
- 输出集合:positive / negative
- 输出约束:不要额外解释
所以 Prompt 真正的基础,不是“说得花”,而是:
说得准。
六、Prompt 基础为什么会影响后面所有章节?
Section titled “六、Prompt 基础为什么会影响后面所有章节?”因为后面你会继续遇到:
- 结构化输出
- 函数调用(函数调用)
- 智能体(Agent)
- RAG
这些能力虽然更复杂,但都离不开同一个前提:
- 任务边界要清楚
- 输出形式要清楚
- 行为约束要清楚
所以 Prompt 基础不是一个孤立章节,而是后面很多系统能力的地基。
后面会反复遇到的术语
Section titled “后面会反复遇到的术语”| 术语 | 解释 | Prompt 关系 |
|---|---|---|
| 提示词(Prompt) | 发给模型的指令、上下文、示例和约束 | 它就是模型的任务简报,表达不清楚,行为就容易不清楚 |
| 结构化输出 | 按 JSON、表格、固定字段等稳定格式输出 | 产品通常需要可解析的数据,而不只是好看的自然语言段落 |
| 函数调用(函数调用) | 让模型选择工具或函数,并填写参数的机制 | 模型必须理解任务边界和需要填写的参数 |
| 检索增强生成(RAG) | Retrieval-Augmented Generation,先检索外部资料,再基于资料回答 | Prompt 会告诉模型如何使用检索材料,以及不要编造无来源内容 |
| 智能体(Agent) | 模型会规划、调用工具、观察结果并继续执行的系统 | 每一步都需要清楚的目标、允许动作和停止规则 |
七、最常见的初学者误区
Section titled “七、最常见的初学者误区”以为 Prompt 只是措辞优化
Section titled “以为 Prompt 只是措辞优化”其实更重要的是任务结构。
只说任务,不说输出格式
Section titled “只说任务,不说输出格式”这会让模型输出更不稳定,也让后处理更痛苦。
模型一旦有发挥空间,就容易在不该发挥的地方发挥。
如果把它做成项目或笔记,最值得展示什么
Section titled “如果把它做成项目或笔记,最值得展示什么”最值得展示的通常不是:
- “我会写 Prompt”
而是:
- 一个坏 Prompt
- 一个改良版 Prompt
- 你具体补了哪层规格
- 输出为什么因此变稳
这样别人会更容易感觉到:
- 你理解的是任务表达
- 不只是背了几个 Prompt 技巧名词
八、第一次写 Prompt 时最稳的顺序
Section titled “八、第一次写 Prompt 时最稳的顺序”可以直接按这个顺序来:
- 先写任务目标
- 再写输出格式
- 再写限制条件
- 最后才去改措辞和风格
这样会比一开始就堆角色设定和技巧稳定很多。
九、核心提醒
Section titled “九、核心提醒”- Prompt 的核心不是修辞,而是任务表达
- 基础 Prompt 先把“做什么、怎么交付、不能做什么”讲清楚
- 后面所有高级 Prompt、结构化输出、Agent,其实都建立在这层基础上
十、一个很实用的写 Prompt 习惯
Section titled “十、一个很实用的写 Prompt 习惯”每次写 Prompt 前,先在脑子里问自己:
- 我到底让模型做什么?
- 我想让它输出成什么样?
- 我最怕它在哪些地方做偏?
把这三个问题答清楚,Prompt 通常就已经比大多数“拍脑袋写”的版本稳很多了。
这一节的学习闭环
Section titled “这一节的学习闭环”学完这一节后,可以用下面这张表检查自己:
| 层次 | 你应该能做到什么 |
|---|---|
| 直觉 | 能解释为什么 Prompt 更像任务说明书,而不是神奇咒语 |
| 写法 | 能把一个模糊请求拆成任务目标、输出格式和约束条件 |
| 调试 | 能判断一次输出不稳定,是目标不清、格式不清,还是边界没写清 |
| 后续连接 | 能说明 Prompt 为什么会影响结构化输出、函数调用、RAG 和 Agent |
学完这一页,至少保留这张证据卡:
- 任务
- 一个明确的指令
- 上下文
- 提供给模型的相关事实
- 约束
- 受众、长度、风格、禁止行为
- 输出格式
- 要点、JSON、表格,或答案模式
- 比较
- 模糊提示词 vs 改进后的提示词输出已保存
这一节最重要的不是记住“Prompt”这个词,而是理解:
Prompt 的本质,是把任务目标、输出形式和边界条件表达清楚。
这就是后面所有 Prompt 工程能力的第一层基础。
- 把“帮我处理一下这段内容”改写成一个更清楚的 Prompt。
- 想一个你自己的任务,并分别写出任务目标、输出格式和约束条件。
- 用自己的话解释:为什么说 Prompt 更像“任务说明书”?
- 为什么一个 Prompt 只写目标、不写输出格式,通常会让系统更不稳?
解题思路与讲解
- 更清楚的版本可以是:“请把下面的客户留言总结为 3 个要点,判断用户意图,并给出 1 条建议回复。不要编造原文没有的信息。”
- 完整答案要分清目标、输出格式和约束。例如:目标是分类反馈,输出是 JSON,约束是只能使用固定标签且不要输出额外文本。
- Prompt 像任务说明书,因为它告诉模型要完成什么工作、产出什么结果、遵守哪些边界。
- 如果没有输出格式,模型可能用散文、列表、类 JSON 或混合格式回答。这样下游使用和评估都会不稳定。