你是一家 软件公司的产品经理,正在评估"要不要做智能提醒功能"。
你问 AI:"帮我做一份竞品分析,评估这个功能值不值得做。"
AI 输出了:Notion AI 有提醒功能,Todoist 有提醒功能,滴答清单也有......结论是"提醒功能是标配,建议做"。
看起来逻辑没问题,但你心里清楚:这份分析没有回答你真正的问题。你不是想知道"别人有没有",而是想知道"我们的用户需不需要"、"做了之后对留存有没有帮助"、"和现有功能会不会冲突"。
AI 不知道这些。它只看到了"竞品分析"这四个字,然后按训练数据中最常见的竞品分析模板来写。
问题出在哪?不是 AI 笨,是你还没掌握怎么跟它说话。
为什么?因为 AI 不是真的"理解"了你的问题。它在做的事情,和你以为的不一样。
一、底层原理:LLM 是怎么"理解"你的?
1.1 一个类比
假设你是一个外国人,刚学会中文 3000 个常用词,但不懂语法,不懂逻辑。
我问你:"苹果"后面通常跟什么词?
你会说:可能是"很好吃"、"手机"、"熟了"、"掉下来了"......
你并不知道"苹果"是什么------你不知道它是一种水果,不知道它长在树上,不知道它和梨的区别。你只是见过太多文本中"苹果"后面跟着的词,选了概率最高的那些。
这就是 LLM 做的事。
它不知道"苹果"是什么。它不知道"好吃"是什么意思。它只是基于训练数据中见过的数万亿个文本片段,计算出了"苹果"后面最可能出现的词是什么。
上一篇已经讲清楚了:LLM 的本质是 Token 预测。它不是"理解"你的问题,而是在计算------基于当前看到的所有 Token,下一个 Token 最可能是什么。
这个底层原理是 Prompt Engineering 一切技巧的根基。
1.2 几个关键定义
在深入讲提示词工程前,先明确几个核心概念:
| 概念 | 定义 | 为什么你要关心这个 |
|---|---|---|
| Token | LLM 处理的基本单位。一个汉字、一个英文单词、一个标点都可能是一个 Token。 | 这是大模型的计价单位。你每次调用 API,是按 Token 付费的。你做 AI 产品时说的"控制成本",控制的就是这个东西。 |
| 上下文(Context) | LLM 当前能看到的全部 Token。包括你输入的话、历史对话、系统指令、上传的文件内容等。 | 上下文窗口是有容量上限的。如果你的 System Prompt 写得很长,对话进行了很多轮,模型生成了很长的回答------早期出现的指令的注意力权重会逐渐衰减。 |
| 指令跟随 | LLM 根据你的指令执行任务的能力。这不是天生的,是训练出来的。 | 你在提示中给出的任务格式、指令风格、输出要求,越接近模型在训练阶段见过的数据,它的预测就越准确,执行效果就越好。 |
| 注意力(Attention) | LLM 在处理上下文时,给不同 Token 分配关注权重的机制。离当前位置越远的 Token,注意力越弱。 | 关键指令放后面比放前面更有效。不是写在 System Prompt 的开头就完了,最重要的约束放在靠近输出的位置。 |
1.3 上下文到底包含什么?
"上下文"这个词在 PE 的讨论中经常出现,但它具体包含什么,很多人并不清楚。
对于一个 LLM 来说,上下文就是它当前能看到的全部 Token。具体包括:
| 来源 | 说明 |
|---|---|
| 系统提示词 System Prompt | "你是产品经理助手,需要输出~~" |
| 历史对话记录 | 前几轮你和它的所有对话 |
| 用户当前输入 | 你刚发出去的那条消息 |
| 模型自己刚刚生成的回答 | 它正在写的内容也在上下文中 |
| 你上传的文件 | 上传后被读取并注入到上下文的内容 |
| RAG 检索的结果 | 被召回后注入到上下文的文本片段 |
| 工具/API 调用的返回值 | 函数执行结果或者联网搜索内容被注入到上下文供进一步推理 |
所有这些内容都在同一个上下文窗口中竞争注意力。
为什么这对 PE 重要?
上下文窗口是有容量上限的。如果你的 System Prompt 写得很长,对话进行了很多轮,模型生成了很长的回答------早期出现的指令的注意力权重会逐渐衰减。
这就是为什么同一个指令,放在对话开头和放在对话末尾,效果不一样。放在末尾更有效,因为它离当前 Token 最近。
这也解释了为什么在长对话中,核心约束需要适时重复------不是 AI 记不住,而是注意力被稀释了。
1.4 指令跟随是怎么来的?
模型不是天生就会"听从指令"。它的指令跟随能力是训练出来的,经历了三个阶段:
第一阶段:预训练
在海量文本(互联网上几乎所有公开文本)中学习语言模式。这个阶段结束后,模型知道"语法正确"是什么样的,但它不知道"回答问题"这个范式。
第二阶段:SFT(监督微调)
用大量"指令→回答"的配对数据进行微调。这个阶段结束后,模型开始理解"当用户给出一段指令,我应该输出一个回答"这个模式。但到这个阶段为止,模型的回答质量还很随机------它知道要回答,但不知道什么样的回答是好的。
第三阶段:RLHF/DPO(对齐)
让人类对模型的回答进行评分(好/不好),模型根据反馈调整自己的行为。这个阶段结束后,模型学会了"什么样的回答是人类偏好的"。
所以 PE 的本质是什么?
PE 是在利用模型的训练分布。你在提示中给出的任务格式、指令风格、输出要求,越接近模型在训练阶段见过的数据,它的预测就越准确,执行效果就越好。
反之,如果你的指令格式是训练数据中极少出现的,模型的输出就会不稳定------因为它没见过这种模式,"下一个 Token"的概率分布是模糊的。
1.5 注意力机制对 PE 的约束
Transformer 的注意力机制有一个特性:距离越远,注意力越弱。
这意味着:
- 关键指令放后面比放前面更有效:不是写在 System Prompt 的开头就完了,最重要的约束放在靠近输出的位置
- 长上下文中需要适时重复:核心指令在关键节点再强调一次,比只在开头写一次更有效
- 分阶段引导优于一次性写完:不要把所有内容塞进一条长 Prompt,分阶段输入,每个阶段的关键指令都在当阶段的最新位置
1.6 底层原理带来的 PE 关键启示
| 原理 | 启示 |
|---|---|
| LLM 是 Token 预测机,不是"理解"你 | 你输入的每个 Token 都在影响输出方向,用词不是风格问题,是精度问题 |
| 指令跟随来自训练数据分布 | 让指令格式接近模型见过的数据模式,效果更稳定 |
| 上下文窗口有容量上限,注意力会稀释 | 关键指令放后面,长对话中适时重复 |
| 思维链有效的本质 | 中间推理步骤提供了引导路径,让后续的 Token 预测在更确定的方向上生成 |
二、核心实践:怎么写好一条 Prompt?
2.1 任务描述------说清楚要做什么
这是 PE 最基础也最核心的能力。一个清晰的任务描述包含三个要素:
-
做什么:明确的任务,不是模糊的方向
-
给谁看:输出的受众
-
用什么视角:立场、角色、分析角度
❌ 描述不清:
帮我分析一下某某产品✅ 描述清楚:
写一份某某产品的竞品分析报告,给产品团队内部使用。
从 PM 角度分析功能、定价、目标用户、差异化优势。
这不是"把话说清楚"那么简单。这是在为模型提供精确的 Token 上下文,缩小概率分布的范围。你把受众限定为"产品团队内部",模型就自动排除了对外宣传的口吻;你限定了"PM 角度",模型就自动调整了分析框架。
2.2 达标标准------定义什么样算好
任务描述让 AI 知道往哪个方向走,达标标准让 AI 知道走到什么程度算"够了"。
没有达标标准时,AI 的输出质量完全不确定------它可能很详细,可能很敷衍,取决于当前的概率采样。有了达标标准,AI 在生成过程中会自行校准。
常见的达标标准维度:
字数范围:500-800 字
输出格式:Markdown 表格展示关键数据,文字说明结论
信息要求:每个观点必须有数据或案例支撑
边界约束:只分析公开信息,不推测未公开的数据
输出深度:给出结论的同时说明原因,不做没有依据的判断
任务描述 + 达标标准 = 完整 Prompt。 掌握了这两个,PE 80% 的价值就到位了。
2.3 思维链(Chain of Thought)
什么是思维链
思维链是在 Prompt 中明确要求模型"一步一步思考",而不是跳过推理步骤直接给出答案。
直接问(无思维链):
这个功能要不要做?
→ 可能直接回答"要"或"不要",缺乏依据
思维链(有思维链):
这个功能要不要做?请按以下步骤分析:
1. 用户需求是否真实
2. 开发成本如何
3. 竞品分析
4. 综合判断
→ 每一步输出中间分析,最后给出结论
思维链为什么有效?
回到 Token 预测的机制来理解:
当模型被问到"这个功能要不要做"时,它只有一个 Token 要预测------"要"或"不要"。这两个 Token 的概率可能非常接近(比如 51% vs 49%),模型容易选错,或者输出一个模棱两可的回答。
但当你在 Prompt 中铺设了"先分析需求→再评估成本→再对比竞品→最后判断"这条路径时,模型在每个步骤上的 Token 预测都变得更加确定------因为每个步骤的输出都是基于前一步的结果,每一步的概率分布都在收窄。
思维链不是在教模型推理,而是在为模型铺设一条概率最确定的路径。
思维链的两种形态
| 形态 | 怎么做 | 适用场景 |
|---|---|---|
| 手动思维链 | 在 Prompt 中写明步骤 | 需要控制分析框架、需要可解释性 |
| 模型内置思维链 | 打开模型的"思考模式" | 只关心结果准确,不关心分析框架 |
两种方式可以叠加使用------在手动思维链中打开模型的思考模式,效果会更好。
2.4 System Prompt 的编写要点
System Prompt 是给一个会自主执行多个步骤的 Agent 看的,不是给单次问答用的。它的关注点不是"让这次回答更好",而是"让 Agent 在无人干预的多次执行中保持稳定"。
一个好的 System Prompt 覆盖三个层次:
| 层次 | 要回答的问题 |
|---|---|
| 角色层 | 你是谁?你能做什么? |
| 规则层 | 遇到各种情况怎么处理? |
| 约束层 | 什么不能做? |
❌ 空洞的 System Prompt:
你是一个好的数据分析助手,认真分析数据,给出有用的结论。
✅ 可执行的 System Prompt:
你是一个数据分析助手。
规则:
1. 收到数据后,先确认数据的基本信息(行数、列名、数据类型)
2. 如果数据量过大,先做摘要再分析
3. 发现异常值、缺失值等数据质量问题,在结论中标注
4. 每个结论必须有数据支撑,不凭空推测
5. 输出顺序:先总结整体情况,再展开具体问题
每条规则对应 Agent 在执行中可能遇到的一个具体场景,而不是空泛的描述。
2.5 Tool Description 的描述技巧
Agent 能够调用工具,但它决定是否调用、怎么调用,完全基于你对工具的文字描述。
工具描述的本质也是一段 Prompt:
❌ 差的描述:
名称:search
描述:搜索功能
参数:query
Agent 看到这个描述:
- 不知道什么时候该用它
- 不知道怎么写搜索词
✅ 好的描述:
名称:web_search
描述:搜索互联网获取实时信息。适用于查询最新数据、验证不确定的事实。
参数:
- query:搜索关键词,格式为"核心实体 问题"
Agent 读到好的描述,能准确判断"这个场景该不该用搜索、关键词怎么写"。
2.6 输出格式的提示词设计
控制格式的关键是说明原因:
❌ 只要格式:
输出 JSON
✅ 说明原因 + 格式:
输出 JSON 格式,因为后续需要程序解析。字段:name, price, score
给原因后,模型的输出更稳定------因为它理解了"为什么要这个格式",而不仅仅是"要我做什么"。
2.7 Guardrails 的 Prompt 层面表达
Guardrails 是在 Prompt 层面给 Agent 划定行为边界,让它清楚什么事能做、什么事不能做:
"只读取文件,不修改、不删除、不创建新文件"
"涉及用户隐私数据时,用代号代替真实姓名"
"如果在执行中发现违反上述规则的情况,立即停止并报告"
Guardrails 放在 System Prompt 的末尾,作为最后的约束。
三、交互式引导------PE 不是一次性的事
一个现实
无论你的 Prompt 写得多好,第一轮输出很少是终点。
原因不是你的 Prompt 不够好,而是:
- 你的需求在对话中才会逐渐清晰
- AI 第一次的理解可能有偏差
- 有些细节需要来回碰撞才能确定
PE 的完整能力 = 写好第一轮 + 引导后续轮次。
两种用户的行为差异
| 普通用户 | 有 PE 意识的用户 |
|---|---|
| 第一轮描述不清 → AI 输出不理想 | 第一轮写好任务+标准 |
| "重来,写得好一点" | "第三段缺少数据支撑,补充一下" |
| "再改改" | "压缩到 800 字以内,保持原有结构" |
| 多次无效轮次后放弃 | 每轮都在收窄差距 |
核心思路
后续引导不需要复杂的套路,核心就是指出偏差 + 给出方向:
❌ 模糊反馈:
再改改,还是不太好
✅ 有效反馈:
第三段的结论没有数据支撑,补充一下数据来源
整体篇幅太长了,压缩到 800 字以内
分析深度不够,增加对竞品的对比
AI 不会自己知道你满不满意。 它不会读心。你满意或不满意都需要通过反馈传递给 AI。
第一轮 Prompt 决定了起点,后续的引导决定了终点。
四、PE 的两大应用场景
在讲具体场景之前,先明确一个区分:普通用户的 AI PE 和 Agent 时代的高阶 PE。
| 普通用户的 AI PE | Agent 时代的高阶 PE | |
|---|---|---|
| 使用场景 | 用户和 AI 单次问答 | Agent 自主执行多轮任务 |
| 使用者 | 所有 AI 用户 | 高阶用户(不一定是开发者) |
| 目标 | 让这次回答更好 | 让 Agent 在多次执行中保持稳定 |
| 复杂度 | 低 | 中到高 |
| 关键要素 | 任务描述 + 达标标准 | System Prompt + Tool Description + Output Format + Guardrails |
现在 AI 工具的加持下,人人都可以定义自己的 Agent。普通用户和高阶用户的区别不在于会不会写代码,而在于对 PE 的理解和应用深度。
场景一:使用别人的 Agent
场景:你在用 ChatGPT、Claude、Kimi 等产品完成一个具体任务
核心:清晰的任务描述 + 明确的达标标准
技巧:
- 说清楚目标受众和背景
- 指定输出结构和格式
- 不满意时给出具体修改方向
场景二:搭建自己的智能体
场景:你在开发一个供自己或他人反复使用的 Agent
核心:System Prompt + Tool Description + Output Format + Guardrails
技巧:
- System Prompt 覆盖角色、规则、约束三层
- Tool Description 让 Agent 准确判断何时使用
- Guardrails 划定行为边界
五、总结
Prompt Engineering 的核心不复杂:
- 理解原理:LLM 是 Token 预测机,不是"理解"你。你的每个词都在影响概率分布
- 写好第一轮:任务描述 + 达标标准,撑起 80% 的价值
- 工程扩展:System Prompt / Tool Description / 输出控制 / Guardrails
- 后续引导:持续反馈,收窄差距。AI 不会读心
掌握这些,你就不是"会用 AI"的人,而是"能驾驭 AI"的人。
下一篇预告
PE 解决的是"怎么写一条有效的提示词"的问题。
但如果你需要反复执行同一个任务 ------每次分析销售数据都要写一遍同样的指令,每次写周报都要重复同样的要求------你需要的就不是每次重新写一条 Prompt,而是把这条 Prompt 沉淀为一个可复用的能力单元。
这就是下一篇要讲的:SKILL------提示词的系统化封装。