Prompt工程实战:同一个需求换3种写法:效果差10倍

作者:袖梨 2026-07-16

写AI应用到现在,我一直有个尴尬的发现:代码写得再好,Prompt写得烂,AI一样输出垃圾。

Prompt工程实战:同一个需求换3种写法,效果差10倍

第3篇RAG,知识库检索到了正确内容,但AI回答还是偏——因为Prompt没告诉它"只基于检索结果回答"。第6篇Agent,AI调错了工具——因为Prompt没说清楚什么问题用什么工具。第10篇多Agent协作,写作Agent只会复制粘贴——因为Prompt没规定输出格式。

Prompt是AI应用的"接口文档"。  你给AI的指令越清楚,AI的输出越靠谱。但写好Prompt不是靠灵感,是有套路的。

我把自己踩过的Prompt坑整理成4个实战技巧,每个技巧都有"烂写法"和"好写法"的对比。同一个需求,换种写法,效果能差10倍。


先说结论

技巧核心思路效果提升
角色设定让AI知道"你是谁"输出专业度提升3倍
示例驱动给AI看1-2个正确输出样例格式正确率从60%→95%
约束边界明确告诉AI"不要做什么"减少幻觉和跑题50%+
思维链让AI"先想后答"复杂推理准确率提升5倍

用Java人的理解:Prompt ≈ 给一个新来的实习生布置任务。你不会只说"帮我处理一下订单"——你会说角色(你是客服)、格式(用这个模板)、约束(不能透露价格)、思路(先查库再回复)。AI也一样。


坑1:没有角色设定,AI像一个没有岗位说明的实习生

翻车现场

python

 复制代码# 烂写法:没有角色
prompt = "请分析一下新能源汽车行业的竞争格局。"result = llm.invoke(prompt)

输出:

 复制代码新能源汽车行业竞争格局分析随着全球对环境保护意识的不断增强……(200字宏观背景)
主要竞争对手包括特斯拉、比亚迪等……(300字泛泛介绍)
未来展望:行业将朝着智能化方向发展……(100字空话)

像百度百科——什么都说了一点,但没有深度、没有观点、没有数据支撑。  因为AI不知道你是要写给谁看的、什么深度、什么角度。

正确写法:给角色+受众+风格

python

 复制代码# 好写法:角色设定
prompt = """你是一位有10年经验的证券分析师,擅长新能源汽车赛道。受众:投资决策委员会(资深投资人,不需要基础概念科普)要求:
- 用数据说话,引用具体市占率、增长率
- 给出明确的投资建议,不要"既要又要"
- 控制在500字以内请分析新能源汽车行业的竞争格局。"""

输出:

 复制代码新能源车竞争格局(2025年)头部集中:比亚迪(市占率28%)+特斯拉(18%)合计占46%,二线品牌(蔚来、小鹏、理想)合计仅15%,行业马太效应显著。关键变量:智能化。L3渗透率从8%→25%是未来2年最大增量,比亚迪自研芯片+特斯拉FSD是核心壁垒,二线品牌依赖供应商方案,差异化不足。投资建议:超配比亚迪,标配特斯拉供应链,回避二线品牌。风险:价格战持续,比亚迪2025年单车利润同比-12%,若L3渗透不及预期,估值承压。

同一个问题,输出质量天差地别。  关键差异:

要素烂写法好写法
角色"10年经验证券分析师"
受众无(默认大众)"投资决策委员会"
深度浅层科普数据+观点+建议
格式约束"500字以内"
风格百科体投资研报体

角色设定模板:

 复制代码你是一位{角色描述},{经验/特长}。
你的受众是{目标读者},{他们的背景}。
你的风格:{写作风格要求}。

坑2:光描述要求不给示例,AI自由发挥跑偏

翻车现场

需求:让AI从用户评论中提取情感标签。

python

 复制代码# 烂写法:只描述要求,不给示例
prompt = """请从以下用户评论中提取情感标签。用户评论:这个耳机音质不错,但戴久了耳朵疼,降噪效果一般。请提取情感标签,包含维度和极性。"""result = llm.invoke(prompt)

输出(3次运行3种格式):

 复制代码# 第1次
情感标签:
- 音质:正面
- 舒适度:负面
- 降噪:中性# 第2次
{
  "sentiments": [
    {"aspect": "sound quality", "polarity": "positive"},
    {"aspect": "comfort", "polarity": "negative"},
    {"aspect": "noise cancellation", "polarity": "neutral"}
  ]
}# 第3次
该用户对音质表示满意,对舒适度不满意,对降噪效果持中性态度。

3次输出3种格式。  因为我只说了"提取情感标签",但没说用什么格式输出。

正确写法:给1-2个示例(Few-shot)

python

 复制代码# 好写法:给示例
prompt = """请从用户评论中提取情感标签,输出JSON数组格式。示例1:
评论:手机拍照很清晰,续航也给力,就是屏幕有点小。
输出:
```json
[
  {"aspect": "拍照", "polarity": "正面"},
  {"aspect": "续航", "polarity": "正面"},
  {"aspect": "屏幕", "polarity": "负面"}
]

示例2: 评论:物流快,包装好,产品一般。 输出:

json

 复制代码[  {"aspect": "物流", "polarity": "正面"},  {"aspect": "包装", "polarity": "正面"},  {"aspect": "产品", "polarity": "负面"}]

现在请处理: 评论:这个耳机音质不错,但戴久了耳朵疼,降噪效果一般。 输出:"""

result = llm.invoke(prompt)

 复制代码
输出(10次运行全部一致):```json
[  {"aspect": "音质", "polarity": "正面"},  {"aspect": "舒适度", "polarity": "负面"},  {"aspect": "降噪", "polarity": "中性"}]

Few-shot的威力:

方式格式一致率字段准确率适用场景
Zero-shot(不给示例)30-60%70%简单任务,输出格式不敏感
1-shot(给1个示例)85%+90%大多数场景推荐
2-3 shot(给2-3个示例)95%+95%格式要求严格的场景
5+ shot97%+95%边际收益递减,Token浪费

用Java人的理解:Few-shot ≈ 给实习生看一个完成的案例。"照着这个格式做"比"你自由发挥"靠谱100倍。

示例选择原则:

原则说明
示例要有代表性覆盖最常见的输入模式
示例要有差异性两个示例不要太像,覆盖不同情况
示例要简短每个示例5-10行,别写太多浪费Token
输出格式和示例一致示例用什么格式,AI就会用什么格式

坑3:只说"要做什么"不说"不要做什么",AI疯狂幻觉

翻车现场

需求:做一个客服AI,只回答公司产品相关的问题。

python

 复制代码# 烂写法:只说了要做什么
prompt = """你是XX公司的客服助手,请回答用户的问题。"""result = llm.invoke("今天北京天气怎么样?")
# "今天北京晴转多云,最高温度32度……"(瞎编的,还回答了)result = llm.invoke("你们公司的退货政策是什么?")
# "退货政策:7天无理由退货,15天换货……"(编造的政策,不是公司的)

AI不知道"不该做什么",就会什么都答——包括编造答案。

正确写法:加约束边界

python

 复制代码# 好写法:要做什么 + 不要做什么
prompt = """你是XX公司的客服助手。## 你的职责
- 回答用户关于公司产品功能、价格、使用方法的问题
- 处理退货、换货等售后问题## 你必须遵守的规则
- 只回答与公司产品和服务相关的问题
- 不确定的信息,说"我需要帮您确认,请稍等"
- 不要编造任何产品信息、价格、政策
- 不在知识库中的信息,说"抱歉,我暂时无法回答该问题"## 遇到以下情况的处理方式
- 非公司相关问题 → "抱歉,我只能回答与公司产品和服务相关的问题"
- 你不知道答案 → "我需要帮您确认,请稍等"或"建议您联系人工客服"
- 用户情绪激动 → 语气更温和,优先安抚,然后解决问题"""result = llm.invoke("今天北京天气怎么样?")
# "抱歉,我只能回答与公司产品和服务相关的问题。"result = llm.invoke("你们公司的退货政策是什么?")
# 根据知识库回答准确的退货政策

约束边界的4个维度:

维度对应的"不要"示例
范围约束不要回答范围外的问题"只回答公司产品相关问题"
事实约束不要编造不确定的信息"不确定时说'我帮您确认'"
格式约束不要用错误格式输出"输出JSON,不要输出Markdown"
语气约束不要用不当语气"不要使用绝对性表述"

约束模板:

 复制代码## 你必须遵守的规则
- {规则1:范围}
- {规则2:事实}
- {规则3:格式}## 遇到以下情况的处理方式
- {异常情况1} → {处理方式}
- {异常情况2} → {处理方式}

用Java人的理解:这和异常处理一个道理——不仅要写正常流程(try),还要写异常流程(catch)。Prompt里只写正常流程不给异常处理,AI遇到边界情况就会乱来。


坑4:复杂推理题AI直接给答案,错得离谱

翻车现场

需求:AI判断订单是否可以退货(需要多步推理)。

python

 复制代码# 烂写法:直接问结果
prompt = """退货规则:
1. 收货后7天内可退货
2. 定制商品不可退货
3. 已使用商品不可退货(拆封不等于使用)
4. 会员可延长至15天订单信息:用户张三,非会员,6月1日收货,购买的是标准款耳机(非定制),已拆封未使用,今天6月10日。该订单可以退货吗?请回答可以或不可以。"""result = llm.invoke(prompt)
# "不可以"(错误!拆封≠使用,且6月10日-6月1日=9天,但等等……让我再算算)

AI直接跳到结论,中间的推理步骤跳过了。  结果经常出错——因为复杂推理需要一步步判断,AI一步想太多就容易漏。

正确写法:思维链(Chain of Thought)——让AI先想后答

python

 复制代码# 好写法:要求AI展示推理过程
prompt = """退货规则:
1. 收货后7天内可退货
2. 定制商品不可退货
3. 已使用商品不可退货(拆封不等于使用)
4. 会员可延长至15天订单信息:用户张三,非会员,6月1日收货,购买的是标准款耳机(非定制),已拆封未使用,今天6月10日。请按以下步骤推理,最后给出结论:步骤1:判断是否在退货时限内
- 用户是否会员?
- 退货时限是多少天?
- 收货至今多少天?
- 是否在时限内?步骤2:判断商品是否符合退货条件
- 是否定制商品?
- 是否已使用?
- 拆封是否等于使用?步骤3:综合判断
- 时限条件是否满足?
- 商品条件是否满足?
- 最终结论:可以/不可以退货"""result = llm.invoke(prompt)

输出:

 复制代码步骤1:判断是否在退货时限内
- 用户是否会员?非会员
- 退货时限是多少天?7天(非会员)
- 收货至今多少天?6月10日 - 6月1日 = 9天
- 是否在时限内?否,9天 > 7天步骤2:判断商品是否符合退货条件
- 是否定制商品?否,标准款耳机
- 是否已使用?否,已拆封未使用
- 拆封是否等于使用?否,规则3明确说明拆封≠使用步骤3:综合判断
- 时限条件:不满足(9天超过7天时限)
- 商品条件:满足(非定制、未使用)
- 最终结论:不可以退货(时限已过)

一步步推理,结论正确且可验证。  如果AI跳步直接给结论,9天>7天这种计算很容易搞错。

思维链的3种用法:

用法怎么做适用场景
显式要求Prompt里写"请一步步推理"复杂推理题
步骤模板Prompt里给出推理步骤框架推荐,效果最稳定
自发CoT让AI自己想,不加约束简单问题,别浪费Token

步骤模板就是上面用的方法——你在Prompt里写好推理步骤,AI按步骤填空。  这比"请一步步想"可靠10倍,因为你控制了推理的方向。

用Java人的理解:思维链 ≈ 断点调试。AI直接给答案 ≈ 不调试直接运行,对了也不知道为什么对,错了也不知道错在哪。思维链 ≈ 逐步执行+打印中间变量,每一步都能检查。


4个技巧的完整Prompt模板

python

 复制代码# 综合运用4个技巧的Prompt模板SYSTEM_PROMPT = """你是一位{角色},{经验/特长描述}。
你的受众是{目标读者}。## 你的职责
- {职责1}
- {职责2}## 你必须遵守的规则
- {规则1:范围约束}
- {规则2:事实约束}
- {规则3:格式约束}## 遇到以下情况的处理方式
- {异常情况1} → {处理方式}
- {异常情况2} → {处理方式}## 输出格式
{给出1-2个示例}## 推理步骤(适用于复杂判断)
步骤1:{第一步要判断什么}
步骤2:{第二步要判断什么}
步骤3:{综合判断}先按步骤推理,再给出最终结论。"""

这个模板覆盖了4个技巧:

技巧在模板中的位置
角色设定第1-2行
约束边界"遵守的规则"+"异常处理"
示例驱动"输出格式"
思维链"推理步骤"

不同场景的Prompt速查表

场景角色设定关键约束示例要求是否需要CoT
客服AI"XX公司客服"只回答公司相关对话格式示例
知识库问答"文档分析专家"只基于检索结果Q&A格式示例
数据提取"数据分析师"输出JSON,不编造输入→JSON示例
意图判断"意图识别引擎"只返回预定义意图5种意图示例
订单判断"退货审核员"按规则逐步判断判断流程示例 必须
投资分析"证券分析师"用数据说话,给明确建议研报格式示例 必须
多Agent调度"项目经理"先分解再分配任务分配示例 必须

4个技巧的总结

#技巧核心思路一句话
1角色设定告诉AI"你是谁"没角色的AI = 没岗位的实习生
2示例驱动给1-2个正确输出样例示例 > 描述,1个示例胜过100字说明
3约束边界明确"不要做什么"只说"要做什么"= 给AI开空白支票
4思维链让AI先想后答复杂推理必须拆步骤,别让AI一步到位

你写Prompt踩过什么坑?有什么独门技巧?评论区聊聊

点赞关注「荣码」,大模型转型系列持续更新~

相关文章

精彩推荐