






















当90%的Prompt教程还在教你如何与ChatGPT闲聊时,商业AI产品需要的却是能扛住高并发、零失误的系统级Prompt。本文撕开Prompt Engineering的华丽外衣,直击B端产品经理最硬核的实战场景——从结构化封装业务逻辑到抗动态变量的鲁棒性设计,手把手拆解能直接上生产环境的系统级Prompt架构与调优法则。

咱们圈子里现在有个特别有意思的现象:只要是个产品经理,简历上必写“精通 Prompt Engineering(提示词工程)”。
面试的时候你问他怎么写,他能给你背一堆网上的口诀:“你要赋予大模型角色”、“你要多给几个例子”、“你要用 Let’s think step by step”。
等真到了业务线,需求是做一个“智能工单处理系统”。结果他写出来的 Prompt 上线第一天,就被真实用户的奇葩输入搞崩了——要么大模型开始胡编乱造(幻觉),要么输出的 JSON 格式多带了一个反引号(`),直接把前端页面搞白屏。
为什么会这样?
因为今天市面上 90% 教人写 Prompt 的文章,都是在教你怎么跟 ChatGPT “聊天”。而我们在商业化 AI 产品中需要的,是能够扛住高并发、容忍脏数据、绝对不能出错的 “系统级 Prompt(System Prompt)”。
如果说 C 端的 Prompt 是“写散文”,那么 B 端产品经理写的系统级 Prompt 就是“写代码”。
今天,咱们不扯虚的,直接把系统级 Prompt 这个黑盒拆开,看看一套能直接上生产环境的 Prompt 到底长什么样,以及怎么通过工程化的手段把它调优。
在讨论怎么写之前,我们必须先对“系统级 Prompt”建立三个极其反直觉的认知边界。
不要把大模型当人看,不要对它用敬语,更不要指望它能心领神会。 系统级 Prompt 的本质,是你作为产品经理,把一段极其复杂的业务逻辑(原本可能需要写几千行 If-Else 代码),用一种特殊的文本结构封装起来,打包扔给大模型去执行。它是一个业务中间件。
在 C 端聊天,大模型发散思维叫“有创意”。在业务系统里,发散思维叫“生产事故”。 一个优秀的系统级 Prompt,里面至少有 40% 的篇幅是在写负面清单(Negative Constraints)。你必须穷举大模型可能犯的错,并提前堵死它。
你自己测试的时候输入一句“你好”,模型回答得很完美,这不叫跑通。 真实的业务现场是:用户输入了一大段夹杂着错别字、英文缩写、甚至带有恶意指令(Prompt Injection)的废话,你的系统级 Prompt 依然能稳如老狗地提取出核心信息,这才叫及格。
如果你现在还在用一段连续的自然语言给模型下指令,请立刻停下。 行业内真正能上生产线的 Prompt,早就模块化、标签化了。目前最主流、最不易翻车的结构是基于 XML 标签封装的五层架构:<Role> + <Context> + <Rules> + <Few-Shot> + <Output>。
为了让你有体感,咱们直接拿一个真实的业务痛点来拆解。
【业务场景】: 跨境物流轨迹客服系统。每天有几十万封老外的邮件来催单,内容杂乱无章。我们需要用 AI 把邮件里隐藏的运单号和诉求意图提取出来,转化为结构化的 JSON 供后端调用。
❌ 业余写法: 你是一个专业的跨境物流客服专家。
✅ 专业写法:
<Role>
你是一个高精度的跨国物流工单数据解析引擎。你不具备聊天能力,你的唯一职责是从用户极其混乱的客诉文本中,精准提取关键字段。你的判定标准必须绝对客观,不得掺杂任何情感回复。
</Role>
解析: 锁死它的“人格”,剥夺它的“聊天欲”。
在实际产品中,这一块通常是留给后端代码动态传参的占位符。
<Context>
当前系统的时区为:北京时间 2026-03-26。
当前用户的历史订单状态列表:{order_status_list_from_database}
用户输入的客诉原文:
<User_Input>
{user_raw_text}
</User_Input>
</Context>
解析: 明确划定边界,告诉 AI 哪些是系统给的绝对事实,哪些是用户输入的不可信文本(用 <User_Input> 隔离,防止用户输入“忽略之前所有指令”的注入攻击)。
这是体现你行业老炮功底的地方。
<Rules>
1. 【字段提取】:运单号通常由 2个字母 + 9个数字 + 2个字母组成(如 EA123456789CN)。如果文本中没有符合此规则的字符串,必须输出 “null”,绝对不可自行编造运单号!
2. 【意图分类】:只能在 [催促派送, 修改地址, 破损理赔, 其他] 这4个分类中选择,不得输出任何其他分类。
3. 【沉默原则】:不要输出任何解释性语言,不要说“好的”、“根据您的要求”。
</Rules>
解析: 字字见血。大模型最喜欢“讨好”人,找不到单号它会顺着用户的意思瞎编一个。这里的约束就是打断它的腿,让它只能按规矩走路。
讲道理大模型往往听不懂,但它“照猫画虎”的能力天下第一。
<Few-Shot>
Example 1 (标准输入):
Input: “Hi, my tracking number is LP987654321SG, please update address to…”
Output: {“tracking_no”: “LP987654321SG”, “intent”: “修改地址”}
Example 2 (缺失单号的脏数据):
Input: “where is my parcel???”
Output: {“tracking_no”: “null”, “intent”: “催促派送”}
</Few-Shot>
解析: 必须给一正一反、甚至极端异常的例子。这能直接让准确率飙升 30% 以上。
<Output_Format>
你必须且只能输出合法的 JSON 格式。
不要在 JSON 外面包 markdown 的 “`json 标签。
JSON Schema 如下:
{
“tracking_no”: “string or null”,
“intent”: “string”
}
</Output_Format>
解析: 后端研发最恨的就是大模型输出一堆废话,导致 JSON.parse() 直接抛出异常报错。这层骨架,就是为了保住研发的头发。
学会了写骨架还不够。作为一个系统级的产品经理,你必须知道在不同的业务流节点,该用什么类型的 Prompt。我们通常把它们分为三把刀:
这部分是本文的精华,也是拉开普通 PM 和高阶 AI PM 差距的分水岭。
绝大多数 PM 是怎么改 Prompt 的? 跑了一下,发现 AI 把“退款”判断成了“仅退货”。于是去 Prompt 里加一句“注意区分退款和退货”。然后再跑一下,发现没问题了,上线! 结果第二天,原本能识别对的“换货”全部变成了“退款”。这就是典型的“按了葫芦起了瓢”。
高阶玩家是怎么做的?他们玩的是量化验收(Evals)。
在动手写第一个字的 Prompt 之前,先去数据库里拉 100 条最具有代表性的真实用户历史输入(20条标准、50条复杂、30条极端恶意)。 然后,让你团队的业务专家,手动给这 100 条数据标注出“标准正确答案”。这 100 条数据,就是你的量化测试集。
每次你修改了 Prompt 中的哪怕一个标点符号,都不要人工去看。写个脚本,让大模型用新的 Prompt 把这 100 条测试集全部跑一遍,然后和标准答案对比。
当你把准确率调到 95% 以后,你的老板就会拿着账单来找你了:“每个月 API 费用十几万,能不能降点?” 这时候你需要对 Prompt 进行“瘦身”:
说句可能得罪人的话:Prompt Engineering 这个词,本身就是一个过渡时期的怪胎。
随着底层模型越来越智能,推理能力越来越强,未来我们或许真的不需要再写这么复杂的 XML 结构,不需要再苦口婆心地教它不要出 JSON 乱码。
但这是否意味着 AI PM 就没用了?
绝对不是。未来的系统,确实不需要你再去卷标点符号和格式了。但“什么是正确的业务判断标准”、“遇到边界情况该怎么降级兜底”、“如何把大模型接入到现有的老旧 ERP 系统里”——这些深埋在行业泥土里的脏活累活,大模型永远替你干不了。
写系统级 Prompt 的过程,本质上是一次“对业务逻辑进行极度深度的重新梳理”的过程。 你不是在教 AI 怎么做事,你是在逼自己把那些平时靠“拍脑袋”和“经验”糊弄过去的业务缝隙,彻底结构化、规则化。
当你能用写代码的严谨思维,把一套几千字的 System Prompt 写得滴水不漏,且在线上系统里稳如泰山的时候。
恭喜你,你已经拿到了这个时代最具含金量的一张船票。
本文由 @AI 新知社 原创发布于人人都是产品经理。未经作者许可,禁止转载
题图来自Unsplash,基于CC0协议
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。