Skip to content

编程提示词工程手册

面向 AI 编程助手的高效提示词编写指南与可直接复用的提示词模板库,适用于豆包、ChatGPT、Claude 等主流 AI 编程助手,覆盖代码编写、调试、审查、重构、测试、SQL、文档与方案设计等场景。

提示词的基本结构(RICE 框架)

一段高质量的编程提示词,通常由 5 个要素 组成。对照下表检查你的提示词是否完整:

要素作用示例
角色 Role让 AI 以什么身份作答,决定专业深度「你是一名资深 PHP 全栈工程师」
信息 Input提供代码、报错、需求、环境等输入「以下是 Nginx 报错日志与配置片段……」
指令 Instruction明确要做什么事「请定位根因并给出修复方案」
约束 Constraint限定语言、框架、风格、边界、禁止项「仅使用 PHP 8.6 语法,禁止引入新依赖」
输出 Output规定输出格式与交付形态「输出:根因分析 + 修复代码 + 验证步骤」

记忆口诀:R-I-C-E-O。写提示词前先在脑中过一遍这 5 项,缺哪项补哪项。

通用编写原则

  1. 一次只做一件事:把「生成 + 审查 + 测试」拆成多次对话,避免 AI 顾此失彼。
  2. 先给上下文,再下指令:AI 的上下文窗口有限,关键代码、报错原文要贴全,不要只转述。
  3. 约束写「不能做什么」:比起「要什么」,AI 更常犯错在越界。明确禁止项能大幅减少返工。
  4. 输出格式要可解析:需要直接落地的场景,强制指定「只输出代码块」「代码标注语言」「不用 Markdown 表格」等。
  5. 用「如果……则……」声明分支:让 AI 面对边界情况有明确行为,而不是自由发挥。
  6. 迭代而非一次到位:第一轮拿到基础版本,再通过具体指令逐步优化。

可直接复用的提示词模板

模板中 【 】 内为需替换的占位内容,其余文字可直接复制使用。

代码生成

text
你是一名资深的【语言/框架,如 PHP / JavaScript】工程师。
请根据以下需求编写代码:

【功能需求】
需要实现【功能描述,尽量含业务背景与输入输出】

【输入】
输入数据格式:【如:用户提交的 JSON,包含 name、phone、amount 字段】

【输出】
输出数据格式:【如:返回 JSON,包含 code、msg、data 字段】

【技术约束】
- 运行环境:【如 PHP 8.6 / ThinkPHP 8 / 浏览器端 ES6】
- 禁止使用【不兼容的语法或第三方库】
- 代码风格:【如:函数使用箭头函数、变量使用 camelCase、缩进 4 空格】

【输出要求】
- 只输出可直接运行的代码,并用 ```语言 标注代码块
- 关键逻辑处添加中文注释
- 最后用一行说明使用方式

Bug 调试与报错定位

text
你是资深【技术栈,如 PHP8.6 + Nginx】问题排查专家。
以下是我的完整报错信息和相关代码/配置,请帮我精准定位问题根因并给出直接修复方案。

【报错信息】
(粘贴完整错误堆栈 / 日志原文,不要省略)

【环境信息】
- 操作系统:【如 Ubuntu 22.04】
- 软件版本:【如 Nginx 1.24、PHP 8.6、ThinkPHP 8】
- 相关配置片段:(如有,粘贴 nginx.conf / php.ini 关键段)

【相关代码】
(粘贴触发问题的代码片段)

【要求】
1. 先分析可能根因,按可能性排序
2. 给出每种的判断依据和验证命令
3. 只给最终确认的修复方案,附修改前后对比
4. 如果信息不足无法判断,明确列出你还需要哪些信息,不要猜测

代码审查 Code Review

text
你是一名严格的代码审查专家,请审查下面这段代码。
重点关注:安全性(SQL注入 / XSS / 命令注入)、性能、健壮性(空值 / 边界)、可读性、兼容性。

【代码】
(粘贴待审查代码)

【审查要求】
1. 按「严重 / 重要 / 建议」三级输出问题清单
2. 每个问题给出:问题位置、原因、风险等级、修复示例(前后对比)
3. 最后给出总体评分(0-10)与改进建议
4. 没有问题的方面不要赘述

代码重构与优化

text
请对以下代码进行重构。
【重构目标】
- 【如:将传统 function 改写为箭头函数】
- 【如:消除重复逻辑,提取公共方法】
- 【如:保持功能完全不变,不改变对外接口】

【代码】
(粘贴原代码)

【约束】
- 保持【技术栈 / 兼容性】不变
- 不改动非目标范围的逻辑

【输出】
1. 重构后的完整代码
2. 变更点说明(逐个列出)
3. 潜在风险提示(如有)

单元测试生成

text
请为以下函数/方法编写单元测试。

【被测代码】
(粘贴代码)

【测试要求】
- 测试框架:【如 PHPUnit / Jest】
- 覆盖:正常路径、边界值、空值/异常输入、错误分支
- 每个用例写明:输入、期望输出、测试目的
- 输出可直接运行的测试代码,用代码块标注语言

【特殊约束】
- 【如有:被测代码依赖外部服务,需用 mock 的部分】

SQL 编写与优化

text
你是一名 MySQL 性能优化专家。请帮我编写/优化 SQL。

【业务需求】
【如:查询每个分类下销量前 3 的商品】

【表结构】
(粘贴 CREATE TABLE 语句或字段说明,含索引情况)

【现有 SQL / 执行计划】
(如有,粘贴现有 SQL 及 EXPLAIN 结果)

【约束】
- MySQL 版本:【如 5.7】
- 数据量级:【如 orders 表 500 万行】
- 优先保证【索引命中 / 可读性】

【输出】
1. 最终 SQL(代码块)
2. 索引建议(如需要新增索引,给出 DDL)
3. 性能对比说明

接口 / 技术文档生成

text
请根据以下代码生成规范的技术文档。

【代码 / 接口定义】
(粘贴代码)

【输出格式】(Markdown)
1. 接口/函数概述
2. 请求/入参说明表(字段名、类型、必填、说明、示例)
3. 返回/出参说明表
4. 错误码说明
5. 调用示例

【要求】
- 语言:【中文】
- 示例中的敏感信息用占位符

技术方案设计

text
你是一名系统架构师。请为以下需求设计技术方案。

【需求背景】
【如:商城小程序语音搜索,前端 ASR 转文字后,后端需做语音纠错和关键词提取】

【现有技术栈】
【如:PHP 8.6 + ThinkPHP 8 + MySQL + Nginx】

【约束】
- 服务器资源:【如 2核2G 低配】
- 预算 / 依赖限制:【如不能新增付费服务】

【输出要求】
1. 方案总览(架构图用文字/Mermaid 描述)
2. 关键流程步骤
3. 各步骤的技术选型与理由
4. 备选方案对比(至少 2 个,含取舍)
5. 风险点与降级预案

正则表达式

text
请帮我写一段正则表达式。

【需求】
- 匹配对象:【如:中国大陆手机号 / 逗号分隔的数组字符串】
- 匹配目标:【如:提取所有数字 / 校验格式】

【输入输出示例】
输入:【样例字符串】
期望输出:【期望的匹配结果】

【约束】
- 语言环境:【如 PCRE(PHP) / JavaScript】
- 同时给我:正则表达式 + 中文注释解释每一部分含义 + 测试用例

代码讲解与学习

text
请以通俗易懂的方式讲解下面这段代码。

【代码】
(粘贴代码)

【讲解要求】
1. 这段代码实现的核心功能(一句话)
2. 逐行/逐块拆解执行逻辑
3. 涉及的关键概念说明(如闭包、指针、索引)
4. 指出潜在的坑或反模式
5. 给出一个最小可运行的简化示例

【输出】
适合【初学者 / 有一定经验者】理解的水平。

好提示词 vs 差提示词对比

维度❌ 差提示词✅ 好提示词
角色「帮我写个函数」「你是一名 PHP 7.3 兼容性专家,帮我写一个把数组转成逗号分隔字符串的函数」
上下文「这个报错怎么办?」粘贴完整报错堆栈 + 相关代码 + 环境版本
指令「优化一下」「消除这段代码里的重复逻辑,提取公共方法,保持对外接口不变」
约束「注意性能」「orders 表 500 万行,必须命中 idx_user 索引,禁止全表扫描」
输出「只输出代码块,标注语言,附使用说明一行」

示例对比(同一需求):

❌ 差:

text
帮我写个数组去重的代码

✅ 好:

text
你是一名资深 PHP 工程师。请用 PHP 7.3 兼容语法,把一维数组按值去重。
输入:$arr = [1,2,2,3,'3',4](注意 3 和 '3' 视为不同类型,不要误去重)
要求:保持原始顺序,输出一个与输入键无关的新数组。
请先说明使用 array_unique 还是手写循环更合适及理由,再给出最终代码(代码块标注 php)。

差的提示词让 AI 猜需求;好的提示词把「角色、上下文、约束、输出」都定死,一次到位。

实战案例(PHP / JS / MySQL 技术栈)

以下案例来自真实开发场景,可直接套用。

案例 1:PHP 数组转逗号分隔字符串

text
请用 PHP 8.6 语法,把二维数组某个字段提取出来拼接成逗号分隔字符串。
输入:$rows = [['id'=>1,'name'=>'A'],['id'=>2,'name'=>'B']]
目标:输出 "A,B"
要求:
1. 用 array_map + implode 实现
2. 处理空数组边界(返回空字符串)
3. 代码块标注 php,给出完整可直接运行的代码

案例 2:JS 传统函数改箭头函数

text
请把以下 JavaScript 代码中的传统 function 改写为 ES6 箭头函数,其余逻辑保持不变。

【代码】
function getTotal(items) {
  var total = 0;
  for (var i = 0; i < items.length; i++) {
    total += items[i].price * items[i].count;
  }
  return total;
}

要求:
1. 用箭头函数 + 数组 reduce 重构
2. 注意 this 绑定变化(如有),并指出是否受影响
3. 保持变量命名风格
4. 输出重构前后对比和说明

案例 3:MySQL 慢查询优化

text
以下 SQL 执行耗时 3 秒,请优化。

SELECT u.name, o.amount FROM orders o
LEFT JOIN users u ON o.user_id = u.id
WHERE o.status = 'paid' AND o.created_at >= '2026-01-01'
ORDER BY o.amount DESC LIMIT 20;

orders 表 800 万行,现有索引:idx_status(created_at)。EXPLAIN 显示 type=ALL 全表扫描。
请给出:
1. 问题根因
2. 建索引 DDL(考虑最左前缀原则,status 与 created_at 的组合索引设计)
3. 优化后的 SQL
4. 索引失效的常见坑说明

常见坑与最佳实践

常见坑

说明对策
上下文缺失只给报错摘要,不给原文完整粘贴报错堆栈、配置、代码
约束太松AI 用了不兼容语法/新依赖明确版本与禁止项
一次问太多生成+审查+测试混在一起拆分为多轮对话
输出不可解析混有解释文字导致无法直接落地要求「只输出代码块」
边界未定义空数组、空值、超长输入未处理显式声明边界行为
环境信息缺失不说明 PHP 版本、服务器资源每次附上环境版本与资源约束

最佳实践

  1. 建立「提示词模板 + 变量」习惯:把常用模板沉淀成文档,用时替换占位符,效率翻倍。
  2. 对 AI 输出进行验证:生成后运行一次(php -l 检查语法、浏览器实测、EXPLAIN 验证索引),不要直接信任。
  3. 多轮迭代优于一次重写:先拿基础版 → 针对性提优化指令 → 逐步收敛。
  4. 敏感信息脱敏:真实数据、密钥、内网地址用占位符替换后再发给 AI。
  5. 让 AI 自检:末尾追加「输出前请自查一遍:语法是否兼容目标版本?是否存在注入风险?边界是否处理?」。

提示词自检清单

写完后对照勾选,全部通过再发送:

  • [ ] 是否设定了角色(专业身份)?
  • [ ] 是否提供完整输入(代码/报错/环境)?
  • [ ] 是否给出明确指令(一个核心目标)?
  • [ ] 是否写明约束(版本、语法、禁止项、边界行为)?
  • [ ] 是否指定输出格式(代码块/表格/只输出代码)?
  • [ ] 是否声明了边界与分支(空值、异常、信息不足时的处理)?
  • [ ] 是否脱敏了敏感信息?
  • [ ] 是否规划了验证方式(如何确认 AI 输出正确)?

小结

将本手册与常用技术栈(PHP 8.6 / ThinkPHP 8 / MySQL / Nginx / JS)结合,把实战案例沉淀为个人模板库,后续开发效率可明显提升。建议把这份提示词框架做成团队共享的模板文档,谁用谁调,人人都能写出让 AI「一次到位」的好提示词。