【转】给程序员的提示词工程手册

帮助程序员通过精心设计的提示词与 AI 编码助手(如 Cursor 等)高效协作,来自 Google Chrome 工程负责人

提示工程的基础原则

· 提供丰富上下文:明确说明编程语言、框架、代码功能及问题背景。例如:“这是一个 Node.js Express 函数,抛出 TypeError,代码如下…”
· 明确目标:避免模糊问题,如“代码不工作”,改为“此函数应返回排序数组,但返回 undefined,哪里有问题?”
· 分解复杂任务:将大任务拆分为小步骤,逐步提示。例如,先要求 React 组件骨架,再添加状态管理
· 提供输入输出示例:如“输入[3,1,4],应输出[1,3,4]”,帮助 AI 理解预期结果
· 使用角色扮演:如“扮演 React 高级开发者,审查代码”,可提升回答的专业性
· 迭代与优化:根据 AI 输出调整提示,如要求改用迭代而非递归
· 保持代码清晰:清晰的代码和注释有助于 AI 理解并生成一致的输出

调试代码的提示模式

· 明确问题和症状:描述代码目标、错误信息和实际行为。例如:“此函数应计算数组和,但返回 NaN,错误代码如下。”
· 逐行分析:如“逐行分析此函数,检查变量 total 的值”,帮助发现逻辑错误
· 提供最小可复现示例:简化代码,聚焦问题,方便 AI 定位错误
· 提出具体问题和跟进:如“此错误原因是什么?如何修复?”并根据回答进一步跟进修复
示例:
· 差的提示:“为什么 mapUsersById 不工作?”(AI 猜测,输出模糊)
· 好的提示:“此函数应将用户数组转为 ID 映射,输入 [{id:1, name:'Alice'}] 抛出 TypeError,代码如下…”(AI 精准定位循环边界错误并修复)

重构和优化的提示模式

· 明确目标:如“提高可读性,减少重复代码”或“优化为 O(n) 时间复杂度”
· 提供代码上下文:包括相关代码、语言版本(如 Node.js v14)或框架(如 React Hooks)
· 要求解释:如“重构代码并解释改进点”,便于验证和学习
· 角色扮演:如“扮演 TS 专家,重构代码遵循最佳实践”
示例:
· 差的提示:“重构 getCombinedData 函数”(AI 可能忽略特定需求)
· 好的提示:“重构此函数,消除重复 fetch 逻辑,保持错误分离,优化数据合并,代码如下…”(AI 并行 fetch、使用映射优化并保留错误细节)

实现新功能的提示模式

· 从高层次开始,逐步细化:先描述功能(如“React 产品列表带搜索”),再分解为子任务(如“创建搜索输入组件”)
· 提供上下文或参考代码:如“参考现有 UserList 组件,创建类似 ProductList”
· 使用注释作为内联提示:如// TODO: 验证请求有效性,让 AI 自动补全
· 明确输入输出:如“formatPrice(2.5) 应返回'$2.50'”。
· 迭代优化:根据 AI 输出调整,如“改用 useProducts 钩子而非直接 fetch”
示例:实现 React 产品列表组件,逐步添加搜索和排序功能,AI 生成带状态管理和错误处理的代码。

常见提示反模式及避免方法

· 模糊提示:如“代码不工作”,应补充错误信息和代码
· 超载提示:如“写完整应用”,应拆分为小任务
· 无明确问题:仅提供代码,应明确要求(如“修复 bug”)
· 模糊成功标准:如“优化代码”,应明确“减少内存”或“提高速度”
· 忽略 AI 反馈:AI 提问时应回答或调整提示
· 不一致风格:保持提示格式统一,如始终使用 ES6 语法
· 模糊引用:避免“上述代码”,直接引用或重新提供
· 调整策略:识别 AI 输出偏差,补充缺失细节,分解任务或重新开始