程序员的提示工程实战手册

释放 AI 编码助手的全部潜能,让每一行提示都精准高效。

信息图改编自 Addy Osmani 的《The Prompt Engineering Playbook for Programmers》

🏷️ 分类: 技术
🔖 标签: #人工智能 #提示工程 #编程 #AI编码助手 #软件开发

有效提示的 七大心法

提供丰富上下文

语言、框架、代码片段、错误信息……信息越全,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 混淆。

循环精进:提示工程的工作流

🎯

定义目标

📚

提供上下文

💬

发起提示

🔄

迭代优化