第02期 · Prompt 提示词工程:让 AI 真正为你所用
系列:每日 AI 知识点
期数:第 02 期
主题:Prompt 提示词工程
难度:⭐⭐(入门)
一句话:同样的问题,问法不同,回答质量可以差 10 倍。Prompt 工程就是研究如何用最有效的方式跟 AI 沟通的学问。
一、什么是 Prompt 工程?
Prompt(提示词),就是你给 AI 说的话。但 Prompt 工程不只是"说话",而是有技巧、有结构、有策略地说话。
一个真实的对比实验:
场景:让 AI 帮你分析一段代码的性能问题
❌ 普通问法:
"这段代码有性能问题吗?"
✅ 工程化问法:
"你是一位专注于 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 字,使用简洁的工程师语言" |
💡 重要提示:五要素不必全用,根据任务复杂度灵活组合。简单任务可能只需要"任务"+"背景"两个要素,复杂任务才需要全部五个。
实战示例:生成测试用例
只有"任务"(效果差):
帮我生成测试用例
五要素完整版(效果好):
角色:你是一位有 5 年 IoT 设备测试经验的高级测试工程师
任务:为刷掌支付功能生成完整的测试用例集
背景:刷掌终端是一款支持掌纹识别支付的 POS 设备,
部署在超市、便利店等零售场景,每天处理数万笔交易
格式:按照"用例名称/前置条件/操作步骤/预期结果/优先级"的格式输出
约束:重点覆盖异常场景(网络中断、识别失败、超时),每类场景至少 3 个用例
三、从差到好:Prompt 进化三级
Level 1:❌ 差的 Prompt
特征:没有背景、没有要求、没有约束
帮我看看这个 bug
问题:AI 不知道是什么代码、什么环境、什么现象、你期望什么样的回答。
Level 2:🔶 普通 Prompt
特征:有了内容,但缺少角色和期望
这段代码有 bug,帮我找出来:
[代码]
问题:AI 会给出回答,但可能只找到表面问题,无法深入分析。
Level 3:✅ 优秀 Prompt
特征:角色明确、背景完整、要求具体
你是一位有 10 年经验的 Android 工程师,专注于支付系统开发。
以下是我们刷掌终端 POS 应用中的支付回调处理代码,
在某些网络超时场景下会出现订单状态不一致的问题(用户扣款成功但显示失败)。
请你:
1. 找出可能导致状态不一致的代码逻辑(标注具体行号)
2. 解释为什么这个场景下会出现这个问题
3. 给出修复建议,并说明修复后的优势
代码:
[代码内容]
效果:AI 会以资深工程师的视角,深入分析竞态条件、事务一致性等问题,给出生产级别的修复方案。
四、5 大核心 Prompt 技巧
技巧一:角色扮演(Role Prompting)
给 AI 一个明确的"身份",它会以这个身份的知识体系和思维方式来回答。
为什么有效:LLM 在训练时见过大量不同角色的文本,当你指定角色时,它会激活与该角色相关的知识和表达方式。
# 普通问法
"解释一下 TCP 三次握手"
# 角色扮演
"你是一位正在给应届生讲课的网络工程师,
请用生活中的例子解释 TCP 三次握手,
要求让没有网络基础的人也能听懂"
实测效果:角色扮演版本的回答更具体、更有针对性,通常比普通问法的回答质量高出 2-3 倍。
技巧二:少样本提示(Few-shot Prompting)
给几个例子,AI 会模仿你的格式和风格来生成内容。
最适合场景:需要 AI 按照特定格式输出的任务(测试用例、报告、日志分析等)
请按照以下格式生成测试用例:
【示例1】
用例名称:正常刷掌支付
前置条件:设备已激活,用户已注册掌纹,账户余额充足
操作步骤:
1. 用户将手掌放置在识别区域
2. 等待识别完成(≤3秒)
3. 确认支付金额
预期结果:支付成功,设备显示"支付成功",账户扣款正确
优先级:P0
现在请按照相同格式,生成"网络中断时刷掌支付"的测试用例
技巧三:思维链(Chain of Thought,CoT)
让 AI 把推理过程展示出来,而不是直接跳到结论。
为什么重要:直接问结论,AI 可能会"拍脑袋"给出错误答案;要求展示推理过程,错误往往在中间步骤就能被发现。
# 直接问结论(容易出错)
"这个告警是什么原因?"
# 思维链方式
"请一步一步分析这个告警的根因:
第一步:描述告警的现象和关键信息
第二步:列出可能的原因(3-5个)
第三步:根据告警详情逐一排除
第四步:得出最可能的根因
第五步:给出验证方法和解决建议
告警信息:[粘贴告警内容]"
真实案例:某团队使用 CoT 分析告警,根因定位准确率从 45% 提升到 78%。
技巧四:结构化输出
指定 JSON、表格、Markdown 等特定格式,方便后续处理和使用。
请分析以下代码的安全风险,用 JSON 格式输出:
{
"风险列表": [
{
"风险类型": "SQL注入/XSS/越权等",
"严重程度": "P0/P1/P2/P3",
"代码位置": "第X行",
"风险描述": "详细说明",
"修复建议": "具体修复方法"
}
],
"整体安全评级": "高危/中危/低危",
"优先修复项": "最需要立即修复的问题"
}
技巧五:迭代优化
第一次不满意,不要重新开始,而是在原对话基础上追问和修正。
# 第一轮:AI 给了一个宽泛的分析
你:[发送分析请求]
AI:[给出分析结果,但比较泛泛]
# 第二轮:追问细化
你:"你的分析方向是对的,但第2点太宽泛了。
请聚焦在'内存泄漏'这个具体原因上,
并给出如何用 Android Studio 的 Memory Profiler
来验证和定位的步骤"
# 第三轮:要求输出示例
你:"很好!现在请给出修复后的代码示例,
重点展示如何正确管理生命周期"
五、Prompt 的 4 大常见误区
误区一:越长越好
很多人认为 Prompt 越详细越好,于是写了几百字的超长 Prompt。
问题:无关的内容会"稀释"关键信息,让 AI 抓不住重点。AI 的注意力是有限的,冗余信息会降低关键指令的权重。
正确做法:精准描述核心需求,删除所有非必要信息。
误区二:一次问完所有问题
❌ "请帮我分析这个 Bug,顺便生成测试用例,
再写一份测试报告,最后给出优化建议"
问题:复杂的组合任务会让 AI 在各个子任务之间分散注意力,每个部分都做得不够好。
正确做法:分多轮对话,每轮专注一个任务:
- 第一轮:分析 Bug
- 第二轮:基于分析结果生成测试用例
- 第三轮:整理成测试报告
误区三:不给上下文就问具体问题
❌ "这个函数有什么问题?"
AI 完全不知道你在说哪个函数,只能给出泛泛的"可能有"式回答。
正确做法:始终提供足够的上下文——代码、日志、环境信息、问题现象。
误区四:不满意就重新问同样的问题
很多人遇到不满意的回答,会关掉对话重新开始,输入同样的问题。
问题:LLM 有一定的随机性,你可能得到类似的回答;而且浪费了已经建立的上下文。
正确做法:告诉 AI 哪里不满意,让它在原有基础上改进:
"你的回答太简略了,第3点只有一句话,
请详细展开,并给出具体的代码示例"
六、工作场景实战:Prompt 模板库
以下是针对测试工程师日常工作的实用 Prompt 模板:
模板一:测试用例生成
角色:你是一位有 5 年 IoT 设备测试经验的高级测试工程师
任务:为以下功能生成完整的测试用例集
功能描述:[粘贴需求文档或功能说明]
要求:
1. 覆盖正常流程、异常流程、边界条件
2. 特别关注:网络异常、超时、并发、数据一致性场景
3. 格式:用例名称 / 前置条件 / 操作步骤 / 预期结果 / 优先级(P0-P3)
4. 至少生成 15 个用例,其中 P0 用例不少于 5 个
模板二:告警日志分析
角色:你是一位有 8 年经验的 IoT 系统运维工程师,
熟悉刷掌支付终端的技术架构
任务:分析以下告警日志,找出根因
背景:刷掌终端部署在零售场景,告警发生时间:[时间],
影响设备数量:[数量],用户反馈:[现象描述]
告警日志:
[粘贴日志内容]
请按以下结构输出:
1. 告警现象概述
2. 可能根因(按可能性排序)
3. 推荐的排查步骤
4. 临时解决方案(如有)
5. 根本解决方案
模板三:代码理解
角色:你是一位精通 C++/Kotlin/Python 的高级工程师
任务:帮我理解以下代码的逻辑
重点说明:
1. 这段代码的整体功能是什么
2. 关键函数的作用和参数含义
3. 异常处理逻辑
4. 可能存在的风险点
代码:
[粘贴代码]
模板四:技术方案评审
角色:你是一位资深架构师,专注于 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 从"随便说说"变成"精准执行"。
延伸阅读
- 论文:Chain-of-Thought Prompting Elicits Reasoning in Large Language Models
- 工具:PromptPerfect — AI 自动优化你的 Prompt
- 实践:OpenAI Prompt Engineering Guide
下一期预告:第03期 · AI 幻觉与可信度 — AI 会一本正经地"编造"答案。了解幻觉的类型和成因,学会判断什么时候该信任 AI,什么时候必须人工核实。