Prompt 工程两大核心原则:让 AI 稳定可靠的关键
同样一个模型,为什么别人用起来得心应手,你用起来却总是跑偏?答案往往不在模型本身,而在你的提问方式。
一、前言:为什么 Prompt 设计决定 AI 能力上限
大语言模型并不是"读心者",它的输出质量高度依赖你如何提问。
举个例子:
| 你的提问 | 模型可能输出 |
|---|---|
| "帮我总结一下" | 可能输出总结,也可能继续写原文,还可能冒出法语 |
| "请用三个要点总结下面这段话,每个要点不超过20字,用中文输出" | 稳定输出你想要的格式 |
差别就在于 Prompt 是否清晰、是否给足思考空间、是否规范输出格式。
下面两条核心原则,就是让 AI 从"随便回答"变成"精准执行"的关键。
二、原则一:给出清晰、具体、无歧义的指令
可以把模型当成一个对人类常识一无所知的助手。你不能指望它猜你的意图,必须把任务、范围、格式、约束全部讲明白。
1. 使用分隔符,隔离指令与用户输入
❌ 错误写法:
把下面的话翻译成英文:
你好,今天天气真好
模型可能把"你好,今天天气真好"当成指令的一部分,出现混乱。
✅ 正确写法:
请将以下文本翻译成英文,只输出翻译结果,不要添加任何额外内容。
---
文本内容:
你好,今天天气真好
---
为什么有效?
---分隔符让模型清楚哪里是指令、哪里是内容明确"只输出翻译结果",避免多余废话
2. 要求结构化输出,方便程序解析
❌ 错误写法:
帮我分析一下这段用户反馈的情感
模型可能输出:"我觉得这个用户挺生气的,因为他说产品太慢了..."
✅ 正确写法:
请分析以下用户反馈的情感,以 JSON 格式输出,包含以下字段:
- sentiment: 情感倾向(positive/negative/neutral)
- confidence: 置信度(0-1之间的小数)
- reason: 判断依据(一句话)
---
用户反馈:这个产品真的太慢了,每次加载都要等半天,受不了!
---
输出:
json
{
"sentiment": "negative",
"confidence": 0.95,
"reason": "用户明确抱怨产品加载慢,表达不满情绪"
}
3. 让模型先判断条件,再执行任务
❌ 错误写法:
帮我总结这篇文章
如果文章为空,模型可能胡乱编造内容。
✅ 正确写法:
请按以下步骤执行:
1. 首先判断用户输入是否为空,如果为空,直接返回"无内容可总结"
2. 如果不为空,再提取三个核心要点
3. 用中文输出,每个要点不超过20字
---
用户输入:{{这里可能是空}}
---
4. 少量示例(Few-shot)引导风格与格式
❌ 错误写法:
把下面的话改写成客服回复语气
✅ 正确写法:
请将以下用户消息改写成客服回复语气。参考风格:
用户:你们产品怎么又出问题了?
客服:非常抱歉给您带来困扰,我们正在紧急处理,预计30分钟内修复,感谢您的耐心等待。
---
用户消息:这功能用不了,什么垃圾!
---
输出:
非常抱歉给您带来不好的体验,我们正在排查该功能的问题,会尽快恢复。感谢您的反馈,我们会持续改进!
三、原则二:给模型"时间思考",不要让它匆忙下结论
模型和人一样:复杂问题想太快 → 必然容易错。
1. 明确拆解任务步骤
❌ 错误写法:
分析这段话的情感、主题、关键词
模型可能一股脑输出,格式混乱。
✅ 正确写法:
请按以下步骤处理:
步骤1:先概括这段话的核心主题,一句话
步骤2:再提取3个关键词
步骤3:最后判断情感倾向(positive/negative/neutral)
按以下格式输出:
【主题】:...
【关键词】:...
【情感】:...
---
文本内容:这个产品的设计太棒了,界面简洁,操作流畅,但价格有点贵
---
输出:
【主题】:产品评价,重点表扬设计和体验,指出价格问题
【关键词】:设计棒、操作流畅、价格贵
【情感】:mixed(正面为主,负面为辅)
2. 让模型"自己先算一遍",再判断对错
这是解决数学题、逻辑题、方案判对的超级关键技巧。
❌ 错误写法:
学生答案:x + 5 = 10,x = 3
这个答案对吗?
模型可能直接回答"对",因为被学生的步骤带偏。
✅ 正确写法:
请按以下步骤判断学生答案是否正确:
步骤1:自己先解一遍这道题:x + 5 = 10
步骤2:写出你的解题过程和答案
步骤3:对比学生答案和你的答案
步骤4:判断学生是否正确,如果不正确,指出错误在哪
---
学生答案:x = 3
---
输出:
步骤1:x + 5 = 10,两边减5得 x = 5
步骤2:我的答案是 x = 5
步骤3:学生答案是 x = 3,我的答案是 x = 5,不一致
步骤4:学生答案错误,错误原因是计算错误,应该是 x = 5
四、必须警惕的模型缺陷:幻觉(Hallucination)
模型有时候会编造不存在的内容,说得非常像真的。
举个例子:
问:"请介绍一下《红楼梦》的作者"
模型可能编造:"曹雪芹,生于1715年,卒于1763年,号雪芹..."
但如果模型没有准确的历史数据,可能会把曹雪芹的生卒年说错,甚至编造出"号芹溪居士"等细节。
如何缓解?
✅ 要求模型只从给定文本提取信息: ------限定上下文
请只从以下文本中提取信息,不要添加任何外部知识。如果文本中没有相关信息,直接输出"未提及"。
---
文本:曹雪芹,清代小说家,著有《红楼梦》
---
五、总结
Prompt 工程的本质,不是"魔法咒语",而是用清晰的逻辑告诉模型如何思考、如何执行、如何输出。
两条最核心原则:
- 指令清晰具体:用分隔符、结构化、示例来减少歧义
- 给模型思考时间:拆步骤、先计算再判断,避免匆忙下结论
记住这个简单公式:
好 Prompt = 明确角色 + 具体任务 + 输出格式 + 思考步骤 + 示例(可选)
掌握这两点,你就能稳定驾驭大模型,让它在项目中真正落地可用。
附录:一个好用的 Prompt 模板
【角色】
你是一个专业的[角色名称],擅长[技能描述]。
【任务】
请完成以下任务:[具体任务描述]
【输入】
---
[用户输入的内容]
---
【输出要求】
1. 格式:[JSON/表格/要点]
2. 字段:[列出需要的字段]
3. 约束:[字数限制、语言要求等]
【思考步骤】
1. 先...
2. 再...
3. 最后...
【示例】(可选)
输入:xxx
输出:xxx