💬 Prompt提示词工程:同样的AI,为什么别人用出10倍效果?

第02期 · Prompt 提示词工程:让 AI 真正为你所用

系列 :每日 AI 知识点
期数 :第 02 期
主题 :Prompt 提示词工程
难度 :⭐⭐(入门)
一句话:同样的问题,问法不同,回答质量可以差 10 倍。Prompt 工程就是研究如何用最有效的方式跟 AI 沟通的学问。


一、什么是 Prompt 工程?

Prompt(提示词) ,就是你给 AI 说的话。但 Prompt 工程不只是"说话",而是有技巧、有结构、有策略地说话

一个真实的对比实验:

场景:让 AI 帮你分析一段代码的性能问题

markdown 复制代码
❌ 普通问法:
"这段代码有性能问题吗?"

✅ 工程化问法:
"你是一位专注于 Android 性能优化的高级工程师,有 8 年经验。
以下是我们刷掌终端 POS 应用的支付回调处理代码,在高并发场景下
(每秒 50+ 笔交易)出现了明显的 ANR(应用无响应)问题。

请你:
1. 找出可能导致主线程阻塞的代码位置
2. 分析每个问题的严重程度(P0/P1/P2)
3. 给出具体的优化方案,包括代码示例

[代码内容]"

结果差异:第一种问法得到的是泛泛的"可能有循环优化空间";第二种得到的是精准定位到具体行的分析报告,直接可以指导修复。

这就是 Prompt 工程的价值------不改变 AI 的能力,但大幅提升 AI 为你服务的效果


二、Prompt 的五要素结构

优秀的 Prompt 通常包含五个核心要素:

要素 作用 示例
角色(Role) 定义 AI 的身份和视角 "你是一位资深 Java 工程师"
任务(Task) 明确要做什么 "帮我 review 以下代码"
背景(Context) 提供必要的上下文 "这是支付系统的核心模块,每天处理百万笔交易"
格式(Format) 指定输出形式 "用 Markdown 表格输出,包含问题描述和修复建议"
约束(Constraint) 限制范围或风格 "不超过 500 字,使用简洁的工程师语言"

💡 重要提示:五要素不必全用,根据任务复杂度灵活组合。简单任务可能只需要"任务"+"背景"两个要素,复杂任务才需要全部五个。

实战示例:生成测试用例

只有"任务"(效果差)

复制代码
帮我生成测试用例

五要素完整版(效果好)

arduino 复制代码
角色:你是一位有 5 年 IoT 设备测试经验的高级测试工程师
任务:为刷掌支付功能生成完整的测试用例集
背景:刷掌终端是一款支持掌纹识别支付的 POS 设备,
      部署在超市、便利店等零售场景,每天处理数万笔交易
格式:按照"用例名称/前置条件/操作步骤/预期结果/优先级"的格式输出
约束:重点覆盖异常场景(网络中断、识别失败、超时),每类场景至少 3 个用例

三、从差到好:Prompt 进化三级

Level 1:❌ 差的 Prompt

特征:没有背景、没有要求、没有约束

复制代码
帮我看看这个 bug

问题:AI 不知道是什么代码、什么环境、什么现象、你期望什么样的回答。

Level 2:🔶 普通 Prompt

特征:有了内容,但缺少角色和期望

css 复制代码
这段代码有 bug,帮我找出来:
[代码]

问题:AI 会给出回答,但可能只找到表面问题,无法深入分析。

Level 3:✅ 优秀 Prompt

特征:角色明确、背景完整、要求具体

markdown 复制代码
你是一位有 10 年经验的 Android 工程师,专注于支付系统开发。
以下是我们刷掌终端 POS 应用中的支付回调处理代码,
在某些网络超时场景下会出现订单状态不一致的问题(用户扣款成功但显示失败)。

请你:
1. 找出可能导致状态不一致的代码逻辑(标注具体行号)
2. 解释为什么这个场景下会出现这个问题
3. 给出修复建议,并说明修复后的优势

代码:
[代码内容]

效果:AI 会以资深工程师的视角,深入分析竞态条件、事务一致性等问题,给出生产级别的修复方案。


四、5 大核心 Prompt 技巧

技巧一:角色扮演(Role Prompting)

给 AI 一个明确的"身份",它会以这个身份的知识体系和思维方式来回答。

为什么有效:LLM 在训练时见过大量不同角色的文本,当你指定角色时,它会激活与该角色相关的知识和表达方式。

bash 复制代码
# 普通问法
"解释一下 TCP 三次握手"

# 角色扮演
"你是一位正在给应届生讲课的网络工程师,
请用生活中的例子解释 TCP 三次握手,
要求让没有网络基础的人也能听懂"

实测效果:角色扮演版本的回答更具体、更有针对性,通常比普通问法的回答质量高出 2-3 倍。

技巧二:少样本提示(Few-shot Prompting)

给几个例子,AI 会模仿你的格式和风格来生成内容。

最适合场景:需要 AI 按照特定格式输出的任务(测试用例、报告、日志分析等)

markdown 复制代码
请按照以下格式生成测试用例:

【示例1】
用例名称:正常刷掌支付
前置条件:设备已激活,用户已注册掌纹,账户余额充足
操作步骤:
  1. 用户将手掌放置在识别区域
  2. 等待识别完成(≤3秒)
  3. 确认支付金额
预期结果:支付成功,设备显示"支付成功",账户扣款正确
优先级:P0

现在请按照相同格式,生成"网络中断时刷掌支付"的测试用例

技巧三:思维链(Chain of Thought,CoT)

让 AI 把推理过程展示出来,而不是直接跳到结论。

为什么重要:直接问结论,AI 可能会"拍脑袋"给出错误答案;要求展示推理过程,错误往往在中间步骤就能被发现。

bash 复制代码
# 直接问结论(容易出错)
"这个告警是什么原因?"

# 思维链方式
"请一步一步分析这个告警的根因:
第一步:描述告警的现象和关键信息
第二步:列出可能的原因(3-5个)
第三步:根据告警详情逐一排除
第四步:得出最可能的根因
第五步:给出验证方法和解决建议

告警信息:[粘贴告警内容]"

真实案例:某团队使用 CoT 分析告警,根因定位准确率从 45% 提升到 78%。

技巧四:结构化输出

指定 JSON、表格、Markdown 等特定格式,方便后续处理和使用。

javascript 复制代码
请分析以下代码的安全风险,用 JSON 格式输出:
{
  "风险列表": [
    {
      "风险类型": "SQL注入/XSS/越权等",
      "严重程度": "P0/P1/P2/P3",
      "代码位置": "第X行",
      "风险描述": "详细说明",
      "修复建议": "具体修复方法"
    }
  ],
  "整体安全评级": "高危/中危/低危",
  "优先修复项": "最需要立即修复的问题"
}

技巧五:迭代优化

第一次不满意,不要重新开始,而是在原对话基础上追问和修正。

bash 复制代码
# 第一轮:AI 给了一个宽泛的分析
你:[发送分析请求]
AI:[给出分析结果,但比较泛泛]

# 第二轮:追问细化
你:"你的分析方向是对的,但第2点太宽泛了。
     请聚焦在'内存泄漏'这个具体原因上,
     并给出如何用 Android Studio 的 Memory Profiler 
     来验证和定位的步骤"

# 第三轮:要求输出示例
你:"很好!现在请给出修复后的代码示例,
     重点展示如何正确管理生命周期"

五、Prompt 的 4 大常见误区

误区一:越长越好

很多人认为 Prompt 越详细越好,于是写了几百字的超长 Prompt。

问题:无关的内容会"稀释"关键信息,让 AI 抓不住重点。AI 的注意力是有限的,冗余信息会降低关键指令的权重。

正确做法:精准描述核心需求,删除所有非必要信息。

误区二:一次问完所有问题

arduino 复制代码
❌ "请帮我分析这个 Bug,顺便生成测试用例,
    再写一份测试报告,最后给出优化建议"

问题:复杂的组合任务会让 AI 在各个子任务之间分散注意力,每个部分都做得不够好。

正确做法:分多轮对话,每轮专注一个任务:

  1. 第一轮:分析 Bug
  2. 第二轮:基于分析结果生成测试用例
  3. 第三轮:整理成测试报告

误区三:不给上下文就问具体问题

arduino 复制代码
❌ "这个函数有什么问题?"

AI 完全不知道你在说哪个函数,只能给出泛泛的"可能有"式回答。

正确做法:始终提供足够的上下文------代码、日志、环境信息、问题现象。

误区四:不满意就重新问同样的问题

很多人遇到不满意的回答,会关掉对话重新开始,输入同样的问题。

问题:LLM 有一定的随机性,你可能得到类似的回答;而且浪费了已经建立的上下文。

正确做法:告诉 AI 哪里不满意,让它在原有基础上改进:

arduino 复制代码
"你的回答太简略了,第3点只有一句话,
请详细展开,并给出具体的代码示例"

六、工作场景实战:Prompt 模板库

以下是针对测试工程师日常工作的实用 Prompt 模板:

模板一:测试用例生成

markdown 复制代码
角色:你是一位有 5 年 IoT 设备测试经验的高级测试工程师

任务:为以下功能生成完整的测试用例集

功能描述:[粘贴需求文档或功能说明]

要求:
1. 覆盖正常流程、异常流程、边界条件
2. 特别关注:网络异常、超时、并发、数据一致性场景
3. 格式:用例名称 / 前置条件 / 操作步骤 / 预期结果 / 优先级(P0-P3)
4. 至少生成 15 个用例,其中 P0 用例不少于 5 个

模板二:告警日志分析

markdown 复制代码
角色:你是一位有 8 年经验的 IoT 系统运维工程师,
      熟悉刷掌支付终端的技术架构

任务:分析以下告警日志,找出根因

背景:刷掌终端部署在零售场景,告警发生时间:[时间],
      影响设备数量:[数量],用户反馈:[现象描述]

告警日志:
[粘贴日志内容]

请按以下结构输出:
1. 告警现象概述
2. 可能根因(按可能性排序)
3. 推荐的排查步骤
4. 临时解决方案(如有)
5. 根本解决方案

模板三:代码理解

markdown 复制代码
角色:你是一位精通 C++/Kotlin/Python 的高级工程师

任务:帮我理解以下代码的逻辑

重点说明:
1. 这段代码的整体功能是什么
2. 关键函数的作用和参数含义
3. 异常处理逻辑
4. 可能存在的风险点

代码:
[粘贴代码]

模板四:技术方案评审

markdown 复制代码
角色:你是一位资深架构师,专注于 IoT 和支付系统

任务:评审以下技术方案

评审维度:
1. 方案的合理性和可行性
2. 潜在的技术风险
3. 性能和扩展性考虑
4. 安全性风险
5. 与现有系统的兼容性

请给出:
- 整体评价(强烈推荐/推荐/谨慎/不推荐)
- 主要风险点(按严重程度排序)
- 改进建议

方案内容:
[粘贴方案文档]

七、Prompt 工程的进阶方向

掌握了基础五要素和五大技巧后,还可以探索以下进阶方向:

进阶方向 说明 适用场景
系统提示词(System Prompt) 在对话开始前设定全局角色和规则 构建专用 AI 助手
自我一致性(Self-Consistency) 让 AI 多次回答同一问题,取最一致的答案 需要高可靠性的推理
思维树(Tree of Thought) 让 AI 探索多条推理路径 复杂决策问题
ReAct 模式 推理(Reason)+ 行动(Act)交替进行 Agent 任务规划
Prompt 链(Prompt Chaining) 将复杂任务分解为多个 Prompt 依次执行 长流程自动化

八、一句话总结

Prompt 工程 = 用结构化的方式跟 AI 沟通,通过角色、任务、背景、格式、约束五要素组合,配合少样本、思维链、迭代优化等技巧,让 AI 从"随便说说"变成"精准执行"。


延伸阅读


下一期预告:第03期 · AI 幻觉与可信度 --- AI 会一本正经地"编造"答案。了解幻觉的类型和成因,学会判断什么时候该信任 AI,什么时候必须人工核实。

相关推荐
Mintopia2 小时前
学技术总半途而废?因为你没找对输入方式
前端
巫山老妖2 小时前
🔍 RAG检索增强生成:让AI「说话有依据」,彻底告别幻觉!
前端
mfxcyh2 小时前
实现签名画板
前端·javascript·vue.js
是大强2 小时前
electron调用dll 方案
前端·javascript·electron
IT_陈寒2 小时前
Java线程池用完不关闭?小心内存泄漏找上门
前端·人工智能·后端
ZHENGZJM2 小时前
前端基石:React + Vite + TypeScript 项目搭建
前端·react.js·typescript
SP八岐大兔2 小时前
NPM管理OpenClaw安装、卸载及运维命令
运维·前端·npm·openclaw
在路上`2 小时前
前端常见问题汇总(十一)_融合AI
前端