1. 165 字 vs 80 字
举个常见场景。你让 AI 帮你写一个数据清洗脚本,认真写一段需求:
"我希望你能帮我用 Python 写一个数据处理脚本。这个脚本需要读取 CSV 文件,然后对数据进行清洗和转换。具体来说,需要去除空值、统一日期格式、把所有金额字段转换成数值类型。然后请你把处理后的结果保存成一个新的 CSV 文件。代码风格要清晰,要有注释,最好还能加一些日志输出方便调试。请你认真完成,谢谢。"
165 个字,描述清楚、礼貌周到。但 AI 给你的代码大概率会让你失望------它用了你没指定的库,漏了你顺口提过的"日志",把日期格式统一成了你不想要的样子。
现在看另一个版本:
目标:读 input.csv,清洗后写到 output.csv
约束:用 pandas,不引入新依赖;保留原有列顺序
验收:空值/日期/金额字段处理后,pd.read_csv(output.csv) 能加载且无 dtype 警告
80 个字。但它的产出质量,往往比上面那个高一个量级。
不是 AI 喜欢简短,是我们一直在优化错的维度。
2. 我们一直在优化错的维度
人和人之间,详细描述确实有助于理解,所以我们默认以为对 AI 也一样------多说一点总归不会错。但 AI 不是人,它的"理解"机制不一样。
模糊的细节对 AI 来说不是信息,是噪声。"代码风格要清晰"、"良好的结构"、"必要时加点日志"------这些词没有边界,AI 要么忽略,要么用一个平均化的解释把它填掉。你给的越多,它需要猜的越多。
后来我想明白了:给 AI 写 Prompt 像给程序员写需求------细节堆多了没用,关键是边界和验收讲清楚。AI 的输出质量瓶颈不在"你说了多少",在"它能不能判断什么是越界、什么算完成"。
字数衡量错了维度。可判断性才是。
3. 三要素:目标 / 约束 / 验收
一个能让 AI 稳定输出的 Prompt,结构上只需要三件事------目标、约束、验收。
目标:你要它做什么
动词必须可执行,名词必须有指向。
- 反例:"优化这段代码"、"让它更好"------这种动词 AI 没法判断"做到什么程度算做完了"。
- 正例:"把响应时间从 800ms 降到 200ms 以下"、"把时间复杂度从 O(n²) 降到 O(n log n)"。
目标定方向。方向不明确,后面写再多都是浪费。
约束:你不要它做什么
AI 默认是有"主动性"的------它会顺手重构、改命名、加依赖、调整接口。约束就是给这个主动性套缰绳。
- 反例:什么约束都不写。
- 正例:不修改公开接口 / 不引入新依赖 / 不改数据库结构。
约束防越界。它不是限制创意,是防止 AI 走到你看不见的地方。
验收:你怎么知道它做完了
写清楚一个 AI 能自检、你也能快速 review 的标准。
- 反例:"做完之后给我看下"、"确保正确"。
- 正例:单元测试全部通过 / pd.read_csv 不报警告 / postman 调用返回 200 且 JSON schema 校验通过。
验收必须可机械判断,不依赖主观感受------这是它和"良好"、"清晰"这种空话的根本区别。
三个要素之间不是并列,是有顺序的:目标定方向,约束防越界,验收兜结果。少任何一个,Prompt 都会在某个地方漏。
4. 实战拆解:一个真实付费产品里的 Prompt
我自己做了一个叫 ScoreMe 的产品------用户输入一段面试回答或销售话术,AI 输出 5 维度评分 + 优化版本,付费用户用得很高频。
这个产品的核心是一个评分 Prompt,它每天被调用上百次,必须稳定输出严格的 JSON 让后端解析。
下面是这个 Prompt 的简化版(删掉了一些环境特定的参数):
你是一个专业的面试官和表达训练教练,请对用户的回答进行评分。
评分维度:
1. logic:逻辑清晰度,0-100
2. structure:结构完整性,0-100
3. persuasion:说服力,0-100
4. fluency:表达流畅度,0-100
5. professional:专业度,0-100
输出要求:
只允许返回 JSON,不要返回 Markdown,不要返回解释性文本。
JSON 格式必须为:
{
"score": 0,
"dimensions": {
"logic": 0, "structure": 0, "persuasion": 0, "fluency": 0, "professional": 0
},
"pros": [],
"cons": [],
"improved": ""
}
要求:
- score 是综合得分,0-100
- pros 给出 2-3 条优点
- cons 给出 2-3 条问题,必须具体、直接、有改进价值
- improved 必须重写一版更好的答案
- 不要编造用户没有提到的经历,但可以优化表达方式和结构
用户回答:
{{input_text}}
用三要素拆一下:
目标:对用户回答做 5 维度评分 + 优化重写。注意角色设定("专业的面试官和表达训练教练")也是目标的一部分------它把"评分"这个动作锚定在一个具体的判断者视角上,比裸"请评分"稳定得多。
约束------这是最容易被忽略的部分,工程化场景下却最关键:
- 只返回 JSON,不返回 Markdown 或解释性文本------这条决定了后端能不能解析。少了它,每几十次调用就会有一两次返回 ```json ... ``` 包裹的内容,直接挂掉解析。
- 不编造用户没有提到的经历------防止 AI"补全"事实,是这类评估场景的硬伤。
- improved 必须重写,不能只给修改建议------AI 默认倾向"建议式"输出("你可以试试这样说......"),约束让它必须给出可直接复用的成品。
验收------既是给 AI 看的,也是给后端校验用的:
- JSON 字段完整、类型正确。
- 分数范围 0-100。
- pros / cons 数量 2-3 条。
- cons 必须"具体、直接、有改进价值"------这一条是防止 AI 输出"表达可以更好"这种空话。
这个 Prompt 一共 200 字左右。但它撑住了一个每天上百次调用的付费产品的核心流程。它的稳定性不来自字数,来自三要素都说清楚了。
5. 拿走就能用的空白模板
下次你写一个超过 100 字的 Prompt,先停一下,按这个模板过一遍:
目标:[具体要做什么,动词必须可执行,名词必须有指向]
约束:
- [不能动什么,例如:不修改公开接口]
- [不能引入什么,例如:不引入新依赖]
- [不能改变什么,例如:不改数据库结构]
验收:
- [可机械判断的标准 1,例如:单元测试全部通过]
- [可机械判断的标准 2,例如:返回 JSON 可解析]
- [可机械判断的标准 3,例如:无 lint 警告]
不需要每次都写满------简单任务一两条就够。但只要超过 100 字,三个分区都先列一下再开始写正文,效率会立刻不一样。
我自己上周就靠它救过一次。让 Claude 重构一段订单状态机的代码,第一次没写约束,它顺手把状态枚举从字符串改成了 IntEnum------上游一堆 SQL 全炸了,回滚花了我 20 分钟。
第二次我把"不改状态值的字符串表示 / 不引入新枚举类型 / 不动数据库结构"塞进约束,同一段代码安静地改完,零回归。
这一节 30 秒,省了我半小时。
6. 收尾
在所有 Prompt 改进技巧里,三要素在按下回车前多花 30 秒把请求结构化。
这套方法论我自己每天在用------我用它搭了一个产品:AI 帮你打磨面试和销售话术。想看实际效果可以试一下:ScoreMe。
下一篇会写四象限任务分类法------什么该交给 AI,什么自己来。
如果觉得有用,下一篇见。
关于作者
AI + 工程落地工程师,15 年系统工程经验,做过架构师 / Tech Lead / 独立 builder 三种角色。现在专注 ScoreMe(AI 评分官),用 AI 协作把想法快速变成可运行的付费产品。本系列分享我在这条路上沉淀的方法论与踩坑复盘。
试用 ScoreMe → https://aiscoreme.com/