有效提示的 七大心法
提供丰富上下文
语言、框架、代码片段、错误信息……信息越全,AI 越懂你。
明确具体目标
不要说“修复它”,而是说“它本应返回 A,却返回了 B,为什么?”
分解复杂任务
将大功能拆解成小步骤,逐一提示,迭代构建,如同人类开发一样。
包含输入/输出示例
给出具体范例,如“输入[1,2]应返回[2,1]”,能极大减少歧义。
赋予特定角色
让 AI 扮演“资深架构师”或“安全专家”,能获得更专业、深入的回答。
迭代与优化
提示工程是对话,不是一次性命令。根据反馈不断追问和修正。
提示工程 十大实战技术
一个“提示工程大师”能在各项技术中取得平衡,灵活运用于不同场景。
- 角色提示: 模拟专家视角。
- 明确上下文: 清晰地陈述问题。
- 输入/输出示例: 通过范例指导 AI。
- 迭代式链接: 分步解决大问题。
- 模拟调试: 让 AI 逐行分析代码。
- 功能蓝图: 规划和搭建新功能。
- 重构指导: 设定明确的重构目标。
- 寻求替代方案: 探索多种实现方式。
- 小黄鸭调试法: 向 AI 解释你的思路。
- 约束锚定: 设定技术或性能限制。
天壤之别:提示质量决定输出质量
❌ 糟糕的提示
“我的 mapUsersById 函数为什么不工作?”
AI 回复 (模拟):
“很难说。你确定传入了正确的用户数组吗?也许数组是空的,或者用户对象没有 id 属性……”
分析:由于缺乏上下文,AI 只能给出宽泛、无用的猜测,无法定位到真正的 bug。
✅ 优秀的提示
“我的 JS 函数 mapUsersById 本应将用户数组转为 Map,但它抛出了 'TypeError: Cannot read property 'id' of undefined' 错误。这是代码和示例输入……”
function mapUsersById(users) {
const userMap = {};
// BUG: 循环条件应为 i < users.length
for (let i = 0; i <= users.length; i++) {
const user = users[i];
userMap[user.id] = user;
}
return userMap;
}
AI 回复 (模拟):
“问题在于你的 for 循环条件 `i <= users.length`。当 `i` 等于数组长度时,`users[i]` 会是 `undefined`,从而导致访问 `user.id` 时出错。请将其改为 `i < users.length`。”
分析:提供了语言、意图、错误信息、代码和示例,AI 精准定位了“差一错误”并给出正确修复方案。
避坑指南:常见的提示反模式
模糊不清
如“它坏了,修好它”,缺乏任何有效信息。
信息过载
一次性要求 AI 完成一个包含多个功能的完整应用。
缺少问题
只粘贴代码,却没有说明你想让 AI 做什么。
成功标准不明
要求“让代码更快”,但没定义“快”的标准(时间复杂度?内存?)。
忽略 AI 反问
AI 为了澄清问题而提问时,选择无视并重复原提示。
上下文引用混乱
在长对话中用“上面的代码”指代,容易让 AI 混淆。