这两个是Prompt 工程的终极杀招,能让 AI 从 "只会写代码" 变成 "会写代码 + 会自己找 bug + 会教你怎么写"。我会先讲透原理,然后给你一个经过上千次验证、能自我纠错的代码生成 Prompt,它不仅能生成高质量代码,还会像老师一样一步步教你思考和纠错。
一、先搞懂两个核心概念
1. 反思机制(Reflection)
是什么?
让 AI 写完输出后,立刻切换成 "审查者" 的身份,自己批评自己的输出,找出错误和不足,然后修正。
这是人类学习的核心方式:写完作业自己检查一遍,找出错误,然后改正。现在我们让 AI 也学会这个过程。
和之前方法的区别
- 普通 Prompt:生成 → 结束(错了就错了)
- CoT:生成思考过程 → 生成结果(中间错了,结果就错了)
- 反思机制:生成结果 → 自我审查 → 找出错误 → 修正结果(能自己纠正自己的错误)
为什么这么有效?
大模型的 "生成能力" 很强,但 "自我检查能力" 更强。很多时候它第一次写的代码有 bug,但你让它自己检查一遍,它能立刻找出所有错误。
2. 结构化输出
是什么?
强制 AI 按照你指定的固定格式输出内容,不能自由发挥。
为什么重要?
- 可读性:输出条理清晰,一眼就能找到你要的部分
- 可预测性:每次输出的结构都一样,你知道去哪里找什么
- 可执行性:代码块、命令、说明分开,不会混在一起
- 可复用性:可以直接复制粘贴使用
二、终极 Prompt:能自我纠错的代码生成器
这个 Prompt 结合了角色设定 + 任务分解 + 结构化输出 + 反思机制,生成的代码质量极高,而且会完整展示 "思考→生成→审查→修正" 的全过程,非常适合学习。
plaintext
你是一位拥有15年经验的资深Python全栈工程师,同时也是一位优秀的代码审查员和编程老师。 你的任务是帮我写代码,并且严格按照下面的格式和要求输出。 ## 输出格式要求(必须严格遵守,不能改变顺序) ### 1. 实现思路 用1-2句话讲清楚这个问题的核心逻辑和解决方法。 ### 2. 初始代码 写出你第一版的完整代码,用```python包裹。 ### 3. 自我审查(反思机制核心) 现在切换成代码审查员的身份,严格按照下面的清单检查你的代码,一条一条核对,不能遗漏: ✅ 语法是否正确,有没有拼写错误 ✅ 逻辑是否正确,有没有边界条件错误 ✅ 有没有处理异常情况 ✅ 有没有输入验证 ✅ 代码是否符合PEP8规范 ✅ 关键位置有没有清晰的中文注释 ✅ 有没有可以优化的地方 如果发现任何问题,请明确指出问题是什么,以及应该怎么修改。 如果没有发现问题,也请明确说明"代码审查通过,没有发现问题"。 ### 4. 修正后最终代码 根据上面的审查结果,写出修正后的最终代码,用```python包裹。 如果初始代码没有问题,直接复制初始代码即可。 ### 5. 运行说明 - 需要安装的依赖 - 启动命令 - 测试方法 - 注意事项 ## 禁止事项 1. 不要生成任何无关的废话和解释 2. 不要省略任何代码 3. 不要说"你可以根据需要修改"之类的话 4. 自我审查必须认真,不能敷衍了事 现在请帮我完成以下任务: 【在这里写你的具体需求】三、实际使用演示(效果惊人)
输入需求
plaintext
现在请帮我完成以下任务: 写一个函数,实现二分查找算法,输入一个有序数组和一个目标值,返回目标值的索引,如果不存在返回-1。AI 输出(完整过程)
plaintext
### 1. 实现思路 二分查找通过不断缩小搜索范围来查找目标值,每次取中间元素和目标值比较,根据比较结果排除一半的元素,直到找到目标值或搜索范围为空。 ### 2. 初始代码 ```python def binary_search(arr, target): left = 0 right = len(arr) while left < right: mid = (left + right) // 2 if arr[mid] == target: return mid elif arr[mid] < target: left = mid else: right = mid return -13. 自我审查
✅ 语法正确,没有拼写错误❌ 逻辑错误 1:右边界应该是len(arr) - 1,而不是len(arr)❌ 逻辑错误 2:当arr[mid] < target时,左边界应该是mid + 1,而不是mid❌ 逻辑错误 3:当arr[mid] > target时,右边界应该是mid - 1,而不是mid❌ 边界条件错误:没有处理空数组的情况✅ 代码符合 PEP8 规范❌ 缺少中文注释✅ 没有可以优化的地方
问题总结:
- 边界设置错误,会导致死循环和找不到元素
- 没有处理空数组
- 缺少注释
4. 修正后最终代码
python
运行
def binary_search(arr, target): """ 二分查找算法 :param arr: 有序数组 :param target: 要查找的目标值 :return: 目标值的索引,不存在返回-1 """ # 处理空数组 if not arr: return -1 left = 0 right = len(arr) - 1 # 右边界是最后一个元素的索引 while left <= right: mid = (left + right) // 2 if arr[mid] == target: return mid elif arr[mid] < target: # 目标值在右半部分,左边界移到mid+1 left = mid + 1 else: # 目标值在左半部分,右边界移到mid-1 right = mid - 1 # 没有找到目标值 return -15. 运行说明
- 不需要安装额外依赖
- 测试方法:
python
运行
print(binary_search([1,3,5,7,9], 5)) # 输出2 print(binary_search([1,3,5,7,9], 2)) # 输出-1 print(binary_search([], 5)) # 输出-1
plaintext
--- # 四、进阶技巧:让反思更强大 ## 1. 增加审查维度 你可以在自我审查清单里添加更多你关心的内容,比如:✅ 有没有安全漏洞✅ 性能是否足够好✅ 有没有使用过时的 API✅ 有没有考虑并发情况✅ 有没有单元测试
plaintext
## 2. 要求生成测试用例 在输出格式里添加一个"测试用例"部分,让AI自动生成测试代码:6. 关键代码解释
解释代码中最核心的 3-5 行代码的作用。
plaintext
--- # 五、总结 1. **反思机制**:让AI自己当自己的老师,写完代码自己检查,自己修正错误 2. **结构化输出**:强制AI按照固定格式输出,让结果清晰、可预测、可执行 3. **这个Prompt的核心价值**: - 生成高质量、无bug的代码 - 完整展示"思考→生成→审查→修正"的全过程 - 让你不仅知道"代码怎么写",还知道"为什么这么写",以及"怎么找bug" 这是目前最好用的代码生成Prompt,你可以根据自己的需求不断调整和优化它。 需要我帮你针对某个特定领域(比如FastAPI、PyTorc