程序员的提示工程实战手册
将 AI 编程助手转变为更可靠的开发伙伴
开发者们正日益依赖 AI 编程助手来加速日常工作流程。这些工具可以自动补全函数、建议错误修复,甚至能生成整个模块或最小可行产品(MVP)。然而,我们中许多人已经体会到,AI 输出的质量在很大程度上取决于你提供的提示词质量。换言之,提示工程已成为一项必备技能。一句措辞不当的请求可能只会得到无关或泛泛的答案,而一个精心设计的提示则能产出深思熟虑、准确甚至富有创意的代码解决方案。本文将从实践角度出发,探讨如何系统地为常见的开发任务构建有效的提示。
AI 结对程序员虽然强大,但并非无所不能——除了你告知或作为上下文包含的信息外,它们对你的具体项目或意图一无所知。你提供的信息越多,输出的效果就越好。我们将提炼出关键的提示模式、可复用的框架以及那些在开发者中引起共鸣且易于记忆的例子。你将看到好提示与坏提示的并排对比,以及它们得到的真实 AI 回应,并附有评论,以理解为何一个成功而另一个失败。这是一份快速入门的备忘单:
给 AI 代码助手的提示词技巧 - @addyosmani
| 技巧 | 提示词模板 | 目的 |
|---|---|---|
| 1. 角色提示 (Role Prompting) | "你是一位资深的 某种语言 开发者。请为了 某个目标 来审查这个函数。" | 模拟专家级的代码审查、调试或重构,获得更高质量的建议。 |
| 2. 明确上下文 (Explicit Context Setup) | "问题是:问题摘要。代码如下。它本应 预期行为,但现在却 实际行为。这是为什么?" | 清晰地框定问题,避免 AI 给出泛泛而谈、流于表面的回答。 |
| 3. 输入/输出示例 (Input/Output Examples) | "当输入为 某个输入 时,这个函数应该返回 预期输出。你能编写或修复这段代码吗?" | 通过具体示例来展示你的意图,引导 AI 智能体准确理解需求。 |
| 4. 迭代式链条 (Iterative Chaining) | "第一步,生成组件的骨架代码。下一步,我们来添加状态管理。最后,处理 API 调用。" | 将复杂的大任务分解成连续的小步骤,避免因提示过于庞大或含糊而导致 AI 混乱。 |
| 5. 模拟调试 (Debug with Simulation) | "请逐行过一遍这个函数。每个变量的值是什么?代码最有可能在哪里出错?" | 让 AI 智能体模拟代码的运行时行为,从 而帮助你发现那些隐藏很深的 bug。 |
| 6. 功能蓝图 (Feature Blueprinting) | "我正在构建 某个功能。需求是:几点核心需求。技术栈是:所用技术。请搭建出初始组件的脚手架,并解释你的选择。" | 借助 AI 主导的规划和脚手架能力,高效启动新功能的开发。 |
| 7. 重构指导 (Code Refactor Guidance) | "请重构这段代码以提升 某个目标,例如 可读性、性能、代码风格等。请用注释来解释你做了哪些更改。" | 确保 AI 的代码重构与你的核心目标对齐,而不是进行随意的、不必要的修改。 |
| 8. 寻求替代方案 (Ask for Alternatives) | "你能用函数式风格重写这段代码吗?如果用递归版本会是什么样子?" | 探索多种不同的实现路径,开阔思路,并丰富你的技术工具箱。 |
| 9. 小黄鸭调试法 (Rubber Ducking) | "我是这样理解这个函数功能的:你的解释。我有什么遗漏吗?这个解释能暴露出什么 bug 吗?" | 让 AI 扮演“小黄鸭”的角色,通过向它解释来挑战你自己的理解,并发现逻辑上的矛盾之处。 |
| 10. 约束锚定 (Constraint Anchoring) | "请避免使用 例如:递归,并严格遵守 例如:ES6 语法,不使用外部库。请为 例如:内存占用 进行优化。函数如下:" | 给 AI 设定明确的边界和限制,防止它“自由发挥”过度,或引入与项目不兼容的代码模式。 |