跳到主要内容

Prompt 基础

Prompt 改写前后对比卡

本节定位

很多人第一次学 Prompt,会把它理解成:

  • 会不会写漂亮话
  • 会不会用一些神奇措辞

但真正更重要的问题其实是:

你有没有把任务说明清楚。

Prompt 工程的基础,不是修辞,而是任务表达。

学习目标

  • 理解 Prompt 真正控制的是什么
  • 理解为什么模糊 Prompt 会让模型输出飘
  • 学会从任务目标、输出格式、约束条件三层去写更稳的 Prompt
  • 建立 Prompt 调试的最基本直觉

新人先掌握 / 进阶再理解

如果你是新人,这一节先抓住一句话:Prompt 不是“咒语”,而是任务说明书。先把“做什么、输出成什么样、不能做什么”三件事写清楚,比背很多技巧更重要。

如果你已经有经验,可以进一步关注:Prompt 是否能被程序稳定解析,是否能约束模型不要越界,是否能和结构化输出、Function Calling、RAG、Agent 的执行链路接起来。


先建立一张地图

如果你已经学过大模型概览和预训练主线,这一节最自然的续接就是:

  • 前面你已经知道模型能力从哪里来
  • 这一节开始回答:不改模型参数时,我们怎样更稳定地调动这些能力

所以 Prompt 基础不是“小技巧”,而是在回答:

  • 如何通过更清楚的任务表达,把已有模型能力更稳地释放出来

Prompt 基础这节最适合新人的理解顺序不是“先学几个技巧”,而是先看清:

所以这节真正想解决的是:

  • 任务到底有没有说清楚
  • 模型到底知不知道要交付成什么样
  • 哪些边界必须提前写死

一、Prompt 到底是什么?

1.1 不只是“输入一段文字”

从最表面看,Prompt 当然是你输入给模型的一段文本。
但从工程视角看,它更像:

你写给模型的任务说明书。

你真正通过 Prompt 在告诉模型的是:

  • 这次任务是什么
  • 要输出成什么形式
  • 需要遵守哪些边界

1.2 一个很直观的类比

Prompt 很像你给新同事下任务:

  • 目标写清楚没有?
  • 交付格式写清楚没有?
  • 有没有说明哪些事不能做?

如果这些都含糊,结果就很容易跑偏。
模型也是一样。

1.2.1 一个更适合新人的总类比

你也可以把 Prompt 理解成:

  • 给一个很能干、但不会读心术的实习生下任务

这个实习生本身能力不错,
但如果你只说:

  • “你帮我弄一下”

那结果大概率会飘。
问题不在于他不聪明,
而在于:

  • 你没把目标、格式和边界交代清楚

1.3 第一次学 Prompt,最该先抓住什么?

最该先抓住的不是几个流行套路,而是这句:

Prompt 的本质,是把任务规格翻译成模型能执行的说明。

一旦这句稳住了,后面你再看:

  • few-shot
  • 角色设定
  • 结构化输出

就会更自然地先问:它到底是在补任务目标、输出格式,还是行为边界。


二、为什么“模糊 Prompt”特别危险?

2.1 一个典型坏例子

帮我处理一下这段内容。

这句话的问题不是礼貌不礼貌,而是:

  • 到底要总结?
  • 还是改写?
  • 还是分类?
  • 输出要多长?

2.2 一个稍微清楚一点的版本

请把下面内容总结成 3 条中文要点,每条不超过 20 个字。

一下子就明确了:

  • 做什么:总结
  • 输出形式:3 条要点
  • 输出长度:每条不超过 20 个字

这就是 Prompt 最基础的价值:

把模糊任务变成明确任务。

2.3 再看一个“坏 Prompt -> 好 Prompt”的最小对比表

版本Prompt问题或优点
坏版本帮我处理一下这段内容。任务、格式、边界都不清楚
好一点请总结这段内容。知道要总结,但格式还不清楚
更稳版本请把下面内容总结成 3 条中文要点,每条不超过 20 个字,不要补充原文之外的信息。任务、格式、约束都清楚

这个表特别适合新人,因为它会让你看见:

  • Prompt 变稳,不是靠神秘词汇
  • 而是靠规格越来越清楚

三、写 Prompt 时最基础的三层结构

3.1 第一层:任务目标

先回答:

  • 模型到底要做什么?

例如:

  • 总结
  • 分类
  • 抽取
  • 改写

3.2 第二层:输出格式

再回答:

  • 输出应该长什么样?

例如:

  • 一句话
  • 三条 bullet
  • JSON
  • 表格

3.3 第三层:约束条件

最后回答:

  • 哪些边界不能碰?

例如:

  • 不要编造
  • 不要输出解释
  • 只能根据给定资料回答

这三层就是 Prompt 工程最基础也最重要的骨架。

3.4 为什么这三层结构特别值得先记?

因为很多看起来“写得不错”的 Prompt,最后不稳定,往往就卡在:

  • 任务目标含糊
  • 输出格式没写清
  • 约束条件漏掉了

所以新人第 1 站最稳的做法不是堆技巧,而是把这三层先写完整。

3.5 第一次写 Prompt 时,最稳的默认顺序

更稳的顺序通常是:

  1. 先写“要做什么”
  2. 再写“输出长什么样”
  3. 再写“不能做什么”
  4. 最后才去调整语气、风格和角色

这样会比一开始就写:

  • 你是一位资深专家...

这类角色设定更稳,因为最基础的任务规格先站住了。


四、一个最小 Prompt 规格示例

prompt_spec = {
"task": "summary",
"output_format": "3 个中文要点",
"constraints": ["每条不超过 20 个字", "不要补充原文之外的信息"]
}

print(prompt_spec)

4.2 这个例子在教什么?

它在提醒你:

很多看起来不错的 Prompt,其实背后都有一份更清楚的任务规格。

也就是说,Prompt 不是纯靠灵感写出来的,而更像“把任务规格翻译成模型能理解的语言”。

4.3 再看一个最小“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 从“写一句话”变成了:

  • 一份可检查的任务规格

五、一个真正能看出差别的例子

5.1 模糊版

请分析下面这段文本。

5.2 清晰版

请阅读下面文本,并完成情感分类。
只输出 positive 或 negative,不要输出其他解释。

5.3 为什么后者更稳?

因为它同时明确了:

  • 任务目标:情感分类
  • 输出集合:positive / negative
  • 输出约束:不要额外解释

所以 Prompt 真正的基础,不是“说得花”,而是:

说得准。


六、Prompt 基础为什么会影响后面所有章节?

因为后面你会继续遇到:

  • 结构化输出
  • Function Calling
  • Agent
  • RAG

这些能力虽然更复杂,但都离不开同一个前提:

  • 任务边界要清楚
  • 输出形式要清楚
  • 行为约束要清楚

所以 Prompt 基础不是一个孤立章节,而是后面很多系统能力的地基。


七、最常见的初学者误区

7.1 以为 Prompt 只是措辞优化

其实更重要的是任务结构。

7.2 只说任务,不说输出格式

这会让模型输出更不稳定,也让后处理更痛苦。

7.3 不写约束

模型一旦有发挥空间,就容易在不该发挥的地方发挥。

如果把它做成项目或笔记,最值得展示什么

最值得展示的通常不是:

  • “我会写 Prompt”

而是:

  1. 一个坏 Prompt
  2. 一个改良版 Prompt
  3. 你具体补了哪层规格
  4. 输出为什么因此变稳

这样别人会更容易感觉到:

  • 你理解的是任务表达
  • 不只是背了几个 Prompt 技巧名词

八、第一次写 Prompt 时最稳的顺序

可以直接按这个顺序来:

  1. 先写任务目标
  2. 再写输出格式
  3. 再写限制条件
  4. 最后才去改措辞和风格

这样会比一开始就堆角色设定和技巧稳定很多。

九、核心提醒

  • Prompt 的核心不是修辞,而是任务表达
  • 基础 Prompt 先把“做什么、怎么交付、不能做什么”讲清楚
  • 后面所有高级 Prompt、结构化输出、Agent,其实都建立在这层基础上

十、一个很实用的写 Prompt 习惯

每次写 Prompt 前,先在脑子里问自己:

  1. 我到底让模型做什么?
  2. 我想让它输出成什么样?
  3. 我最怕它在哪些地方做偏?

把这三个问题答清楚,Prompt 通常就已经比大多数“拍脑袋写”的版本稳很多了。


这一节的学习闭环

学完这一节后,可以用下面这张表检查自己:

层次你应该能做到什么
直觉能解释为什么 Prompt 更像任务说明书,而不是神奇咒语
写法能把一个模糊请求拆成任务目标、输出格式和约束条件
调试能判断一次输出不稳定,是目标不清、格式不清,还是边界没写清
后续连接能说明 Prompt 为什么会影响结构化输出、Function Calling、RAG 和 Agent

小结

这一节最重要的不是记住“Prompt”这个词,而是理解:

Prompt 的本质,是把任务目标、输出形式和边界条件表达清楚。

这就是后面所有 Prompt 工程能力的第一层基础。


练习

  1. 把“帮我处理一下这段内容”改写成一个更清楚的 Prompt。
  2. 想一个你自己的任务,并分别写出任务目标、输出格式和约束条件。
  3. 用自己的话解释:为什么说 Prompt 更像“任务说明书”?
  4. 为什么一个 Prompt 只写目标、不写输出格式,通常会让系统更不稳?