跳转到内容

Prompt 工程八股:AI PM 面试必会的 14 个术语

📍 AI 求职速查

键盘上的手在打字,屏幕上方漂浮着 prompt 工程的元素 标签、JSON 括号、思维链箭头、问号

简历投出去,面试官打开 Zoom,第一个问题十有八九是:

「说说你对 prompt engineering 的理解。」

或者升级版:

「zero-shot 和 few-shot 啥时候用哪个?」

「思维链你实际用过没?」

「输出格式怎么稳定地控制成 JSON?」

如果你答得稀里糊涂,面试官心里默默把你归到「听说过没做过」那栏 —— 后面 45 分钟你再回血也难。

这一篇把 14 个最常被问的 prompt 工程术语用大白话讲清楚,每个配「是啥 / 啥时候用 / 啥时候别用 / 面试怎么答」四段。看完不需要再背八股,能用自己的话讲出来。

两点先说清楚:「面试怎么答」里的第一人称经历和数字都是示范,面试时请换成你自己真做过、真测过的;文中引用的论文数字都写了出处和实验设置,被追问「哪篇论文、什么模型」时要能说清楚。


Prompt 工程 = 让大模型听懂你说啥 + 输出你想要啥 + 不跑偏的工程化方法。

业界看 prompt 工程的 5 个维度:

  1. 准确性 —— 模型答得对不对
  2. 一致性 —— 同一个 prompt 跑 10 次结果是否稳定
  3. 结构化输出 —— 能不能产出可程序消费的格式(JSON / Markdown)
  4. token 效率 —— 同样效果能不能花更少 token
  5. 可控性 —— 模型会不会乱发挥(出 markdown / 加废话 / 拒答)

下面 14 个术语里,第一个 LoRA 其实是微调技术,不属于 prompt 工程;面试常拿它和 prompt 对比「啥时候该微调」,所以放在最前面。其余 13 个都是 prompt 工程的子技术,每一个对应优化上面某一两个维度。


一、微调相关:LoRA(Low-Rank Adaptation)

Section titled “一、微调相关:LoRA(Low-Rank Adaptation)”

是啥:一种参数高效微调方法。不动 base 模型的大量参数,只在它身上插一层薄薄的「low-rank 矩阵」,只训这一层。

打个比方:base 模型像一栋已建好的大楼,LoRA 不重建大楼,只在某些房间装个可拆卸的小装饰(low-rank 矩阵)。装饰可以训练得很专精,但大楼本身不变。

直观数字(面试被追问出处时要说得清):

  • 论文实测:LoRA 原论文(Hu 等 2021)在 GPT-3 175B 上,要训练的参数比全量微调少约 1 万倍,训练显存从 1.2TB 降到 350GB(约降到 1/3),训练快约 25%(论文原话「25% speedup」,指同样的训练量少花约四分之一的时间)。它省的主要是显存,不是时间:前向、反向计算照样要跑完整个模型,所以别说「训练时间降到 1/10」。
  • 70B 模型的显存估算(开源微调框架 LLaMA-Factory 的估算表):常规混合精度全量微调约 1.2TB(约 15–16 张 80GB 的 A100),LoRA 约 160GB(2–3 张),4-bit 量化的 QLoRA 约 48GB(1 张)。QLoRA 论文(Dettmers 等 2023)实测过用单张 48GB 显卡微调 65B 模型。
  • 只训一小部分参数:常见配置只训 0.1% 左右(70B 模型约 7000 万个),具体看秩(rank)和插在哪些层。

啥时候用:你公司想让通用模型(Llama / Qwen / DeepSeek)说自家行业话(法律 / 医疗 / 客服),数据量不大(几万到几十万条)。

啥时候别用:

  • 单纯调 prompt 就能搞定的任务 → 不上微调
  • 多任务 + 长期演化 → 上 full fine-tune 或多个 LoRA 切换

面试怎么答:重点不是背概念,是显示你知道「啥时候要微调 / 啥时候 prompt 就够」。可以这么答:

“现在大模型能力上来,大多数场景靠 prompt + RAG 已经够,LoRA 主要解决两类:一是模型说话风格要模仿行业特定语气(法律严谨 / 医疗谨慎),二是结构化输出稳健性要更高。如果只是知识问答用 RAG 就行,没必要 LoRA。”


是啥:用结构化语言告诉模型「任务是啥 / 输出长啥样 / 别干啥」。优化目标是上面那 5 个维度(准确性 / 一致性 / 结构化 / token 效率 / 可控性)。

最直观的类比:带个聪明但没经验的实习生。

  • 你说「做点东西」 → 他乱来,啥都可能交
  • 你说「做个 PPT,5 页,给 CEO 看,不要太花」 → 他知道方向,但还是可能加 emoji
  • 你说「做个 PPT,5 页,黑白配色,衬线体,每页一句结论 + 一张图」 → 他给你的东西基本能用

第 1 句是模糊指令,第 3 句是 prompt 工程。两者效果差 10 倍。

下面的 12 个术语都是 prompt engineering 的子技术,各自解决某一两个维度。

面试常问:「prompt 工程跟传统软件工程有什么不一样?」

我的答法:

“传统软件工程的输入输出是确定的,你写 add(1,2) 永远返回 3。prompt 工程的输入输出是概率性的,同样的 prompt 跑 10 次可能 8 次对 2 次错。所以工程化的核心是降低这个方差 —— 用 schema、示例、思维链、自我一致性这些手段把「它大概率对」变成「它几乎一定对」。”


三、Zero-shot Prompting(零样本提示)

Section titled “三、Zero-shot Prompting(零样本提示)”

是啥:不给任何示例,只用一句指令让模型干活。

把这段英文翻译成中文:"Hello, world."

啥时候用:

  • 简单的、模型见过无数次的任务(翻译 / 摘要 / 常见分类)
  • 想省 token

啥时候别用:

  • 任务格式特殊
  • 边缘 case 多
  • 输出需要模仿你公司特定风格

面试怎么答:面试官想看你能不能根据复杂度选档。

“我一般按复杂度选:简单任务用 zero-shot 省 token,复杂任务一定升级到 few-shot 加 1-3 个示例。比如同样让模型分类用户意图,简单二分类(投诉 / 非投诉)zero-shot 够,但 10+ 类细分(咨询/投诉/建议/取消/退款…)必须 few-shot。”

左边白板空+一个问号(zero-shot),右边白板贴了 3 个示例小卡片(few-shot),一个机器人对比看


是啥:prompt 里给 2-5 个示例,让模型从例子里抓 pattern,然后照着模仿。

情感分类:
"今天天气好" → 正面
"我饿了" → 中性
"讨厌这部电影" → 负面
分类: "我拿到 offer 了"

模型看完三个例子,自动按这个 pattern 输出 → 正面。

啥时候用:

  • 任务格式特殊(输出有特定 schema)
  • 边缘 case 你想明确教
  • 输出需要模仿特定语气(产品文案 / 客服话术)

啥时候别用:

  • 简单任务,zero-shot 够
  • token 极度敏感的高频调用场景(每次都塞 5 个例子 = token 烧得快)

面试怎么答:

“few-shot 的本质是用 token 换稳定性。我做过对比测试:同一个分类任务 zero-shot 准确率 78%,加 3 个 few-shot 上到 92%,但每次调用多花 600 token。判断口径就是业务对错误的容忍度 —— 错一次代价大(财务 / 医疗),few-shot 必须上;高频低风险场景(聊天 / 摘要),zero-shot 优先。”


是啥:

  • System Prompt(系统提示词):模型「身份 + 行为规则 + 输出风格」。一次设定,整个会话不变。
  • User Prompt(用户提示词):用户每次发的内容,每轮变。
[System] 你是一位资深的儿童阅读专家。
回答时用 8 岁小孩能懂的话。
每个建议都给一个生活化例子。
[User] 我家孩子不爱看书怎么办?

模型读 system 设定 → 用儿童阅读专家口吻 + 8 岁小孩能懂的话 + 给例子来回答 user。

啥时候关心:

  • 多轮对话 —— system prompt 让模型角色不漂移
  • 多 agent 系统 —— 每个 agent 的 system prompt 定义 ta 是谁(参考 Subagents 那篇)
  • CLAUDE.md / 项目记忆(project memory) —— 作用类似「持久化的 system prompt」:每次会话自动带上的项目说明。但技术上,Claude Code 是把 CLAUDE.md 放在系统提示词之后、作为一条 user 消息注入的,不属于 system prompt,也不保证被严格遵守;真要系统级指令,得用启动参数 --append-system-prompt(详见 CLAUDE.md 那篇)

面试怎么答:

“我做过的项目里,system prompt 是人格锚点,user prompt 是当前请求。比如多 agent 系统里,每个 agent 在 system 里写清楚自己的身份和边界,跨 session 不漂移。如果把所有规则塞到 user prompt,每次发都要重复 = 浪费 token + 容易出现指令冲突。”


是啥:让模型扮演特定身份,用那个身份的语气 / 知识 / 专业度回答。

你是一位资深 Python 工程师,有 10 年生产环境经验。
回答优先用业界最佳实践,不解释基础语法,默认对方是同行。

为啥有效:

  1. 借用训练数据特征 —— 「资深 Python 工程师」在训练数据里跟某些代码风格 / 术语高度相关,激活这些特征
  2. 限定边界 —— 「你是医生」让模型自动避免给法律建议
  3. 统一语气 —— 整段对话不会一会严肃一会俏皮

三个机器人穿不同戏服 / 程序员 hoodie / 教师讲台,各站小台子

啥时候用:

  • 产品需要稳定的人格(虚拟助手 / 客服 / 教练)
  • 想让回答带特定专业立场(法律 / 医学 / 财务)

面试怎么答:

“Role-play 是让语气稳定的最低成本方案。比如做个虚拟教练 app,在 system 加 ‘You are an experienced fitness coach…’ 比写一万字风格指南有效。但不要过度依赖 —— 涉及法律/医疗这种高风险场景,role-play 只能用来约束语气,不能用来代替专业事实支撑。”


七、Role-Play 在 MoE 时代是不是更猛?(进阶讨论)

Section titled “七、Role-Play 在 MoE 时代是不是更猛?(进阶讨论)”

2026 年的开放题:MoE(混合专家)模型有多个「专家子网络」,每个 token 路由器决定激活哪个专家。那 role-play 是不是能引导路由器优先激活相关专家?

直觉上的类比:MoE 像医院分诊台,好像 Python token 会自动去「代码专家」,数学 token 去「数学专家」。role-play 是不是相当于挂号时说「我看儿科」,让分诊更准?

短答:听起来对,但不是这么干的。

3 个关键认知:

  1. 路由是按 token 走,不是按 prompt 走 —— 你写「你是 Python 工程师」,这句话每个字单独进路由,不是整句话给路由器一个指令。
  2. 专家不太按「科室」分工 —— 一个常被引用的公开分析是 Mixtral 论文(Mistral AI,2024)第 5 节:ArXiv 论文、生物、哲学三类文本的专家分配几乎一样,看不出按主题分工;能看出的规律更多在词形和句法上,比如 Python 里的 self 常被分给同一个专家,代码缩进则总是分给同一批专家。所以上面那个「分诊台」直觉本身就不太对。
  3. 业界普遍观察:Dense 模型(没用 MoE 的 Llama 3 70B 等)用 role-play 同样有效。说明 role-play 起作用的主要是注意力对整段上下文的影响,不是专家路由。

面试怎么答:

“公开的路由分析(比如 Mixtral 的论文)发现,专家分工更多跟词形、句法有关,不太按主题分;而且路由是逐个 token 决定的,不是整段 prompt 给路由器下指令。所以 role-play 起作用主要靠注意力对整段上下文的影响,不是靠挑专家。这是有意思的研究方向 —— 如果未来出现专门为 prompt 级语义设计的路由器,role-play 的价值可能会提升。”

⚠️ 小贴士:如果面试官追问「哪篇论文」,能说出「Mixtral 论文(Mistral AI,2024)里的路由分析」最好;记不准就诚实说「具体出处我记不准了,研究方向是 MoE 可解释性」。别瞎编论文名 —— 面试官是技术深的话一查就穿,反而扣分。

这种答法显示你有独立思考,但不会过度声称 role-play 直接控制 MoE 路由(那是夸大)。


是啥:让模型一步步推理后再给最终答案,不要直接跳结论。

激活方式简单到离谱 —— 在问题后面(相当于答案的开头)加一句:

让我们一步步推理。

或者英文版:Let's think step by step. 这叫零样本思维链(不给示例,只加这一句)。另一种是少样本思维链:在 prompt 里放几个「写出了推理过程」的示例,让模型照着一步步写。两种的效果数字不一样,面试别混着说。

直观效果:下面都是 PaLM 540B 模型做 GSM8K(小学数学应用题测试集)的实测,出自两篇论文。

做法出处直接答加思维链
零样本思维链:只在问题后加「Let’s think step by step.」Kojima 等 202212.5%43.0%
少样本思维链:prompt 里放 8 个写出推理过程的示例Wei 等 2022(Google)17.9%56.9%

两种都是约 3 倍的提升,但提升前后的数字必须来自同一篇论文、同一种设置,不能拿 17.9% 去配零样本那一句。

⚠️ 面试提醒:面试官追问「哪个模型、哪种思维链」时一定要说清楚,不同模型大小、不同任务上数字差异很大。比如 Kojima 那篇的主实验用的是 OpenAI 的 text-davinci-002,GSM8K 从 10.4% 到 40.7%。

机器人头顶浮出一串思考泡泡 → 箭头 → 推理步 → 打勾答案

啥时候用:

  • 复杂推理(数学 / 逻辑 / 多步规划)
  • 决策类任务(给出推荐前需要推理)
  • 你需要看见模型的「思考过程」做调试

啥时候别用:

  • 简单任务(翻译 / 摘要 / 分类),加 CoT 多花 token 没意义
  • 对响应延迟(latency)要求严的场景(实时聊天)—— CoT 会显著拖慢
  • 输出长度有上限(API 限 max_tokens),CoT 容易吃光

面试怎么答:

“CoT 本质是用 token 换准确率。我会按场景选 —— 简单分类不用,复杂决策必加。还有个进阶玩法:新一代推理模型自己会想 —— Claude 5 思考默认开启、DeepSeek 有深度思考模式,API 调用时不需要显式加 ‘step by step’(注意 Claude 4.x 相反,默认不思考、要显式开)。”


是啥:同一个问题让模型独立跑 N 次(比如 5 次),每次都用 CoT,然后取多数票作为最终答案。

原理:单次推理可能走错路,几条错的路径各错各的,但对的路径会收敛到同一个答案 → 多数票答案更可靠。

效果(自我一致性论文:Wang 等 2022,也是 Google 团队,但和上面思维链那篇不是同一篇;PaLM 540B 做 GSM8K):

  • 单次 CoT(每题只生成一条推理):56.5%
  • 每题采样 40 条推理路径再投票:74.4%

路径越少,提升越小(从论文的曲线图上读,5 条约 64%)。论文也建议实践中先试 5 或 10 条,能拿到大部分收益、又不至于太贵。

代价:输出 token 约是 N 倍(N=采样条数);多条路径可以并行跑,所以响应延迟的增幅远小于 N 倍。

啥时候用:

  • 高风险决策(医疗诊断辅助 / 法律 / 金融)
  • 跨模型验证(同一个 prompt 让 Claude / GPT / DeepSeek 各跑一次比较)

啥时候别用:

  • 普通对话场景(贵 + 慢)
  • token cost 敏感的 SaaS 产品

面试怎么答:

“Self-consistency 在我看来更适合做测试阶段的稳定性验证,而不是上线运行时的默认策略。比如开发 prompt 时跑 5 次看是否收敛,上线后跑 1 次。如果业务对可靠性要求真的这么高,通常上限是模型本身能力,加多次投票收益递减,不如换更强的模型。”


是啥:让模型严格输出指定结构(JSON / Markdown / XML)。

5 种主流方法:

方法怎么用可靠度
1. 直接指定「用 JSON 输出,字段:title, summary, tags」★★
2. 给 schema把完整 JSON schema 贴 prompt 里★★★
3. Few-shot 示例给 2-3 个完整 JSON 例子让模型模仿★★★
4. Structured Output APIOpenAI 的 response_format / Anthropic 的 output_config,或 function calling★★★★★
5. 包代码块让输出包在 ```json ... ``` 里★★

最稳的方式:方法 4 + 方法 3 双层。系统层强制 + 示例示范。

左边一堆乱飞的纸(散文式输出),右边整齐的 JSON 卡片(结构化输出)

注意:只靠 prompt 约束格式(方法 1、2、3、5)时,模型偶尔还是会出错(加 markdown 解释 / JSON 尾逗号 / 多个 ```)。开了方法 4 的结构化输出,Anthropic 官方的说法是用约束解码保证输出符合 schema(字段结构定义),但列了三种例外:模型拒答(stop_reason 为 refusal)、输出被 max_tokens 截断(stop_reason 为 max_tokens),以及枚举值的大小写可能对不上。生产环境必须:

  • 检查 stop_reason,拒答和截断分开处理(截断就调大 max_tokens 重试)
  • 枚举值按不区分大小写来比对,也别设计只差大小写的枚举值(这种情况 stop_reason 一切正常,查不出来)
  • 只靠 prompt 约束格式时,加 JSON 解析器 + 错误重试,解析失败 → 重新 prompt 兜底
  • 加监控(记录出错率,定期回看 prompt)

面试怎么答:

“我做过的项目里,JSON 输出靠两层保险:协议层用 Anthropic 的结构化输出 API 强制 schema,prompt 层给 2-3 个 few-shot 示例。开了结构化输出,格式基本不会错,剩下要处理的主要是拒答和 max_tokens 截断,所以代码里一定检查 stop_reason,枚举值也按不区分大小写来比对;只靠 prompt 约束格式时,才需要解析器 + 重试兜底。”


是啥:模型对「不要 X」经常忽略,改成「应该 Y」反而照做。

❌ 否定✅ 正向
「不要输出 markdown」「只输出纯文本,不含 # * - ` 等符号」
「不要解释」「直接给答案,无前缀」
「不要提你是 AI」「假设你是 [角色],用第一人称回答」

为啥否定指令容易失败:

  1. 训练语料里负向指令样本少,模型权重对它响应弱
  2. 「不要 X」反而让模型的注意力落在 X 这个关键词上(说「不要想大象」,你就会想到大象)
  3. 「不要 X」没说「该做啥」,留下的空间模型只能自己猜
  4. 强模型偏好「乐于帮忙」,可能直接忽略否定边界

面试怎么答:

“我做 system prompt 时有条铁律 —— 不写‘不要’,只写‘应该’。早期写过大量‘不要回答和工作无关的问题’‘不要用 markdown’,结果模型频繁失守。后来全部改成正向指令(‘只回答工作类问题,其他统一礼貌拒绝’),服从度立刻好转。”


是啥:在 prompt 里用特殊字符(三重引号 / XML 标签)把「指令 / 上下文 / 数据」明确分开。

Anthropic 官方推荐 XML 标签风格:

<context>
今天天气好。
</context>
<task>
把上面 context 翻译成英文。
</task>

4 个作用:

  1. 降低 prompt 注入(提示注入)风险 —— 用户输入里如果含「忽略前面指令」,分隔符帮模型分清这是数据不是指令。但它只能降低风险,挡不住所有攻击(见下面的安全提醒)
  2. 结构清晰 —— 模型准确知道「哪里是上下文 / 哪里是任务 / 哪里是示例」
  3. 可程序化 —— 后端拼 prompt 时模板和动态内容分离干净
  4. Claude 对 XML 标签特别熟 —— Anthropic 2024 年的文档写过:Claude 训练时接触过带 XML 标签的 prompt,所以对这种结构特别熟悉;现行文档的说法是 XML 标签能帮 Claude 无歧义地解析复杂 prompt、减少误读

官方怎么说:Anthropic 的提示词最佳实践推荐用 XML 标签给复杂 prompt 分区,理由是减少误读;至于能把输出质量提高多少,没有公认的数字,面试别报。

面试怎么答:

“XML 标签是 Claude 生态里的最佳实践,我做协议设计时所有动态字段都用 <input> <context> <task> 包好。两个好处:一是模型不容易把指令和数据搞混,二是能降低 prompt injection(提示注入)的风险。但标签不是防火墙,攻击者可以在数据里伪造闭合标签,所以我还会叠加最小权限、高风险操作人工确认、输出校验这几层,这也是 OWASP 的建议。”


是啥:含糊的 prompt 让模型瞎猜,结果不稳定 + 容易幻觉。明确指定 length / audience / style / format 才稳。

❌ 模糊✅ 明确
「总结一下」「用 3 句话总结,给非技术读者,不超 150 字」
「改好这段」「修正语法错误,不改语义,不重组段落」
「推荐几个」「推荐 5 个,按性价比从高到低,每个一句话说明理由」
「写一封邮件」「写一封 200 字英文邮件,给客户经理,礼貌但直接,主题:延期一周」

核心检查清单(写完 prompt 自己问自己):

  • 长度有限定吗?(几句 / 多少字 / 多少条)
  • 受众是谁?(技术 / 非技术 / 客户 / 同事)
  • 风格是啥?(正式 / 口语 / 营销 / 学术)
  • 格式是啥?(JSON / Markdown / Bullet / Paragraph)
  • 边界在哪?(包含什么 / 不包含什么)

面试怎么答:

“Prompt 工程里 80% 问题是‘你没说清楚’。我自己回看自己的 prompt 时,会逐条问‘我有没有指定长度 / 受众 / 风格 / 格式 / 边界’。任何一个空着,模型就会猜,稳定性就垮。”


是啥:

  • 封闭式问题(是/否 / 选择题 / 数字 / 分类):输出确定,好程序消费。
  • 开放式问题(why / how / 解释 / 创意):输出多样,适合生成内容。
类型例子适合
封闭「这段情感 [正面/中性/负面] 哪个?」分类 / 评分 / 决策
封闭「0-10 打分,这个 idea 多新颖?」评估 / 排序
开放「对比这两份合同的违约条款,各有什么风险」生成 / 推理 / 创意

实操技巧:

  • agent 内部沟通 → 封闭式(状态码 + 结构化数据包),让下游 agent 好消费
  • agent 对用户回复 → 开放式(自然语言),让用户感觉是在对话

面试怎么答:

“我做多 agent 系统时,agent 之间用封闭式消息(数字状态码 + JSON 数据包),便于路由和日志;agent 对用户用开放式,保持对话感。混用让系统既能机器化协作又能对人友好输出。”


不是死背概念,按「解决啥维度」组织记忆:

你想优化的用哪个术语
准确率Few-shot / CoT / Self-consistency
稳定性System prompt / Role-play / Few-shot / 正向指令 / 分隔符
结构化输出JSON schema / Structured Output API / Few-shot 示例
token 效率Zero-shot / 明确表达(缩短废话)/ 封闭式问题
降低注入风险分隔符 / XML 标签(只能降低风险,要配合最小权限、人工确认、输出校验)

面试时别按字典顺序背,按这张表答 —— 显示你不是「听说过」而是「知道啥时候用哪个」。


  • 能讲权衡(trade-off) > 能讲是啥(每个术语都有代价,讲出来 = 真做过)
  • 能给数字 > 能给概念(「PaLM 540B 做 GSM8K,少样本 CoT 把准确率从 18% 提到 57%,再加 40 路自我一致性投票到 74%」比「提升明显」有说服力得多)。但数字要带上论文和设置,张冠李戴比不报还扣分
  • 能讲自己跑出的数字 > 背别人的数字:花 10 分钟,准备 20 条你自己标好答案的分类样本(比如把用户留言分成咨询 / 投诉 / 建议),用任一国产 AI 分别跑 zero-shot 和 few-shot(加 3 个示例),数一数各对了几条,面试就能讲你自己的数字
  • 能讲失败案例 > 能讲成功案例(讲一次「我以为 zero-shot 够,跑下来发现幻觉率太高所以补了 few-shot」远比讲一个完美故事可信)
  • 能跟系统设计挂钩 > 单点术语(讲 system prompt 时连到 agent 持久化人格,讲分隔符时连到提示注入的多层防御,讲清标签只是其中一层)