Prompt Engineering指南:AI产品经理工作实操手册
Prompt Engineering已成为AI产品经理的核心竞争力,但如何系统化地构建生产级Prompt却鲜有深度方法论。本文揭秘从Benchmark制定到评测集构建的全流程实战技巧,教你用LLM-as-a-Judge技术打造高效Prompt迭代闭环,让AI真正成为你的‘阅卷人’。

Intro
作为一个AI产品经理,为AI Feature做Prompt Engineering可能占到工作时间的70%以上。
今天整理出来我自己在工作中搭建并使用的撰写Prompt的Pipeline。希望能给AI产品经理同行们一些启发,也希望给想入行的小伙伴一些日常实操、应对面试的建议。
总体来讲,生产用Prompt撰写分为三部分:
- 为任务制定Benchmark
- 写出第一版生产用Prompt
- 循环迭代
在开始前,请大家先建立一个概念:生产用Prompt不可能是一次写好的,需要不断的根据评测得分迭代,获得最好的效果和稳定性。
打个比方,你是一所高中的数学教学组组长。想提高学生的数学考试成绩。你需要先出卷子让学生们考试,知道他们的得分和欠缺点、才有可能去针对性教学。
那考试得分的真实性、稳定性就很重要了。相信大家都学过大数定理和中心极限定理,我们需要大批量的【评测样本】(可能是成百上千条)。所以是不可能我们人肉去一个个看评测集、然后给每个评测样本打分的。
你,数学组组长,作为出卷人,不可能去批全校的卷子。你需要把得分标准教给其他数学老师,让他们去当阅卷人帮你批卷子。
在工作中,AI产品经理就是出卷人,AI则作为阅卷人。
这种方法也就是大家常说的【机评】。学名叫做LLM-as-a-Judge(LaaJ)。经典论文:https://arxiv.org/html/2306.05685v4。
现在,请大家假设自己是OpenAI的产品经理,想从零做一个关于AI给出减脂建议的feature。让我们一起开始撰写Prompt的旅程吧。
为任务制定Benchmark
针对任务制定【评测标准】
拿到这个任务,我们就开始扮演出卷人的角色了。想衡量一个AI给出的减脂建议好不好,可能有哪些标准呢?
感觉有很多衡量指标:有用性、易操作性、情绪价值…
没错!对于一个任务的产出,一定是有多个维度可以评判,而我们需要做的第一步就是确定这些维度、以及他们的权重。这些维度和权重的确认就是一个产品经理Taste的重要体现了。
在这个任务中,我认为上面三个维度已经足够衡量AI的输出。而我觉得他们的重要程度是递减的。
所以我的评测公式是:总得分=70%有用性得分+20%易操作性得分+10%情绪价值得分。
示例:有用性得分=5,易操作性得分=3,情绪价值得分=2,总得分=70%*5+20%*3+10%*2=4.3
这三个维度就像三道大题。对于阅卷人来说,给出这个总得分公式是不够的,需要告诉他们每道大题分别怎么打分。在真实工作中,一般每个维度我们会给出1到5五个分数,每个分数会给一个得分的规则,在这里为了简化起见,我们就给三个分数,就是1分、2分、3分。
以有用性得分为例。得3分的标准,可能是给出的建议在学术上被验证完全有效。2分的标准,学术上验证对大部分人有效。1分的标准,对所有人或大部分人都无效。
对于易操作性和情绪价值,另外两个维度也要按照相似的方式给出不同得分的标准。
示例:

我们刚刚构建的得分计算公式和各个维度的打分规则,合在一起就是这个AI feature的【评测标准】,这也是所有AI feature的起点。
构建【评测集】,给【小批量评测样本】人肉打分
我们刚刚给出了一些阅卷标准,现在我们开始出卷。比如说我们现在先出100道跟如何减脂相关的题目。形成 raw_questions.csv。大部分的题目是为了给学生作答的,也就是说让之后 AI 用我们的 生产用prompt 去产出。
但是我们需要先挑出来一小部分题目,比如10~20道,我们给这些题目先写上我们认为的可能遇到的一些不同类型的答案。然后按照我们刚刚的评测标准,去给出这些题目的各个维度的得分以及总得分。作为阅卷样例。记录在 human_labels.csv。而这些阅卷样例将在第5步用到。
一步完成后,你拥有两份文件:
- raw_questions.csv(待模型生成答案)
- human_labels.csv(人肉基准)
针对评测标准写【评测用Prompt】
有了阅卷标准之后,我们要把它教给阅卷人。对于AI来说,就是用Prompt告诉他我们刚刚的阅卷规则。
关于怎么写好一个Prompt,有一些小tips:
- 每个章节使用xml标签:如<task>根据我的评测标准给输入的文本打分</task>。因为模型在训练过程中见过很多XML,所以这种格式更易于被LLM理解
- 给few-shot:给一些例子教 AI 学会如何打分。这里要注意,这些例子尽可能覆盖在真实生产场景中会遇到的例子,不要只给一两个高分或低分的例子
- 让 AI 先分解问题,然后逐步解决
示例:
usefulness_prompt
<role> assistant </role>
<task> 对于<input>中的减脂建议,根据<criteria>评估其“有用性”,给出 1‑3 分并说明理由。 </task>
<criteria>
1分:对所有人或大部分人都无效
2分:学术上验证对大部分人有效
3分:给出的建议在学术上被验证完全有效
</criteria>
<input> {question} </input>
<output>
”’json { “score”:”你要填的得分”, “reason”:”你要填的得分理由” }
</output>
operability_prompt(同上,只改任务描述)
emotion_prompt(同上,只改任务描述)
这里有一个小tips是,直觉上大部分人会只用一个 prompt 让AI给出多个维度的打分。
但由于LLM的上下文注意力机制,我建议是有多少个维度就构建多少个Prompt。比如说这里是3个维度,那就构建3个 prompt。之后对于每一条评测样本都call 3次 API 获得3个维度的得分,最后再用程序进行加权平均。
用【评测用Prompt】跑小批量评测集
这一步是为了衡量阅卷人有没有学会我们的阅卷标准。也即用我们的评测用 prompt ,去跑第2步挑出来的那一小部分题目,让模型输出他认为的每个样本各个维度的得分以及总得分。
这里有一个小技巧,为了避免模型输出的随机性,我一般会在参数中把 temperature 设为0(这样模型输出会稳定)。
根据模型打分结果调整【评测用Prompt】,直至和人肉打分对齐
获得了模型,也即阅卷人人的打分之后,我们可以把模型的打分跟我们自己在第2步中的打分进行对比,看看模型在哪些维度会进行高估,哪些维度会进行低估。
然后针对这些问题,我们对第3步的评测用 prompt 进行修改,然后重复第4步、第5步,直到模型输出的打分和我们自己的人肉打分完全一致,或误差小于阈值(如0.2)
这时候你就有了一个完全理解你心意的阅卷人,能代替你去做重复的判卷子工作了。
第一版生产用Prompt
写第一版【生产用Prompt】
有了阅卷人之后,我们现在要教学生如何答题了!
关于写【生产用prompt】,我建议的大方向是采用段落式的写作方法。
示例:
<role> 你是一位减脂专家。 </role>
<task> 你会收到用户关于如何减脂的提问,结合你的专业知识和用户的实际情况,给出建议。 </task>
< guideline> 不要上来就给用户的建议。要先了解ta的基础信息、身体情况、减脂目标等。 然后推荐合适的生活方式,以及训练规划。 尽量不提供药物建议除非你觉得必要。
</guideline>
<examples>
{ “examples”: [ { “user_input”: “我最近想减脂,但不知道从哪里开始,你能给我一个计划吗?”, “assistant_output”: { “advice 1”: { “advice”: “为了给你做个可执行的减脂计划,我需要先了解你的身高、体重、年龄、性别、日常活动量、目前饮食情况、作息、训练基础以及你具体想达到的目标(比如减多少斤、多久完成)。请先告诉我这些信息。”, “reason”: “在不了解你的基础信息前,任何训练/饮食建议都是不精确甚至不安全的。基础信息能决定你的热量缺口设置、训练强度、营养分配方式,避免减脂过程损伤肌肉或影响身体机能。” } } }, { “user_input”: “我173cm 72kg 28岁 男 每天久坐、没时间做饭、作息正常,想两个月瘦到68kg。”, “assistant_output”: { “advice 1”: { “advice”: “你的目标是 2 个月减 4kg,属温和可实现范围。为了制定合适的计划,我还需要知道你的:1)目前每周能安排多少训练时间;2)是否有力量训练经验;3)是否有膝盖、腰椎、肩颈等伤病史;4)外卖/食堂/家里做饭这三种哪种更容易坚持。”, “reason”: “训练安排必须建立在你可执行的时间和身体状态之上,否则无法坚持或可能加重旧伤。同时饮食策略必须贴合你日常饮食来源,才能真正落地。” } } } ] }
</examples>
<format_requirement> 按下列格式输出,前后不要加任何多余解释
”’json { “advice 1”: { “advice”:”advice details”, “reason”:”reason details” } … } </format_requirement>
段落式的写法有好处,一个是协作角度,对自己和同事来看简洁清晰;一个是在之后的修改步骤里边,可以针对性地对每一个段落进行微调,而不改变其他段落,进行类似于控制变量的实验,这样甚至能知道模型在这个任务方面对于每个段落的提示词,它的反馈是什么样的。
这里有一个误区,是提示词越长越好,并不是这样的。更长的提示词对模型来讲一般意味着在一个更确定的向量空间内进行回复,但是会少很多的发散性,甚至是智能感。因此我建议先从一个比较简单的框架开始。先看模型在使用这个简单 prompt的情况下,对于该任务的能力如何,和自己的Benchmark的差距有多大,再去看如何调整Prompt来达到最佳效果。
Claude官方有对于Prompt Engineering的一套完整方法的介绍,我觉得感兴趣的同学可以点击链接详细阅读
https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/overview
Claude Console也有一个Prompt的生成器,值得尝试:
https://platform.claude.com/dashboard
也可以使用字节的Prompt Pilot,我觉得能给人一些灵感。
https://promptpilot.volcengine.com/home
还有一个更简单的方式,就是把你写的一个很简单的 prompt 喂给Gemini,或者 Claude,或者 GPT,让他们按照现在 prompt 的最佳实践给你进行修改。注意,不要让他们直接上手改 prompt,而是让他们给出具体的修改思路和要改哪些点,等你 approve 之后再去改,这样避免在他的 chatbox 框内去 review 很长的 prompt,效率更高。
使用【生产用Prompt】产出【大批量评测样本】
终于到了这一步!让考生(也就是AI)去用我们写好的生产用prompt答卷。
把我们之前构建好的评测集里面还没有答案的题目,一个一个喂给 AI,让 AI 逐个作答,并把它们的答案保存下来。
这里我自己比较习惯的方式是,把整个评测集先保存成一个 csv,然后用模型每次来读取评测集里的题目的时候,相当于使用Python Pandas摘选出某个 csv 中某行某列的一个值,然后把值填入到 prompt 里边。模型处理输出之后。把关于这行样本的输出再回填到该行的另外一列。
用【评测Prompt】跑【大批量评测样本】
可能很多人觉得说这一步也没啥说的,就是用评测 prompt 让阅卷人给我们跑出来的评测样本打分。但其实还是有一些关键的小技巧:
- 一个是模型的设置,temperature 要设为0来保证打分的稳定性;设置随机种子来确保可复现(若涉及抽样);设置max_tokens以防截断
- 另外为了确保打分是波动比较低的、是稳定的,在生产中对于每一个样本会跑3~5次评测prompt。如果得分波动率超过了一个设定的阈值,那我们会去掉离群值后、将分数进行平均,来获得最终的该样本得分。这个过程其实是需要一些代码来实现的。建议大家通过跟 Claude Code 聊天来聊清楚自己的一个需求,这个任务对于 Claude Code 来说没有任何难度。
- 我自己工作中是在 DeepEval 这个开源库的基础上进行的修改。https://github.com/confident-ai/deepeval
根据模型打分结果A/B Testing改【生产用Prompt】
好!现在我们作为数学教学组长终于获得了学生的答案及准确的分数!我们知道了学生在各个维度的掌握情况如何,以及我们应该去针对性地提高哪些维度。
但在进一步进行教学修改 prompt 之前,我们要先检查一下这个判卷的过程中有没有一些错误或者纰漏:
- 特别首先筛选出各个维度的低分的 case,看这些 case 在程序运行中有没有LLM输出中断的情况
- 对于特别高分和特别低分的 case,在这个评测样本上有没有一些规律?这样可以看出是不是对于某些类型的题,我们的 prompt 表现不够好。这样我们能知道是考虑做 edge case 的修改,还是做 general case 的修改
在确定没有其他问题之后,我们可以进入到A/B testing 改 prompt 阶段。
这里的方法我自己总结下来,就是自然实验中的【控制变量法】。如果同时修改多个段落,很难确定某个维度的得分提升是来自于哪个修改。而一段一段地修改,才能知道每个段落对于最终模型的输出有怎样的影响。
在挑选从哪个段落开始改起方面,我建议大家抓住主要矛盾,先改对于模型来讲你觉得影响最大的 prompt 段落。如果该段落的改进达到瓶颈之后,提升不太大了,再去从其他的小段落开始改起。
A/B Testing迭代
在改好了新的 prompt 之后,我们可以循环步骤7到步骤9,直到结果满意。
有一些值得注意的小tips:
- Prompt engineering 不是万能的,如果在进行了各种调优,尝试模型在该任务中的得分都没有一个明显的提升的话,可能要从头想一下这个任务对模型来讲是否practical
- 反过来讲,如果只是经过了一两次简单的尝试,就能够把模型的得分从比较低提升到比较高,则要想想给出的得分标准是否太简单
- 模型的选择、参数,对于整个Prompt Engineering的结果有巨大影响。所以每一次换新的模型或者调参数,都需要将整个测评过程重跑一遍,以确保没有引入新的问题
最后,最重要的是 ,AI 不是人,产品经理依旧要对最后的结果负责。因此就算评测达到了很高的分数,还是建议产品经理自己去随机抽样不同分得分的 case ,来看看是不是都能满足交付给用户的标准。
总结
以上所讲的是我在日常工作中从0到1撰写一条生产用prompt的方法。
概括下来就是:
1️⃣ 设定评测标准
2️⃣ 构建评测集
3️⃣ 编写评测 Prompt
4️⃣ 评测对齐
5️⃣ 生产 Prompt
6️⃣ A/B 迭代
Prompt Engineering是一门科学。虽然文中用的是单 prompt的案例,但是对于一个 prompt chain,一个 workflow,甚至是一个agent feature,其实都可以应用这个方法论的原则和步骤来进行调优。
希望能给从业者一些启发,给正在找工作的面试小伙伴一些更深入了解 AI 的方法。
如果大家有什么问题,欢迎评论区评论 ~
AI向善:)
本文由 @陈惑仔Harry 原创发布于人人都是产品经理。未经作者许可,禁止转载
题图来自Unsplash,基于CC0协议
- 目前还没评论,等你发挥!

起点课堂会员权益




