下面是一个有问题的 prompt 和 AI 的输出。请识别问题并给出修复方案。
Level 1:诊断 prompt 问题Prompt:
AI 输出(三次运行的结果):
- 第一次:一段 200 字的文字总结
- 第二次:5 个项目符号要点
- 第三次:一句话概括 + 三段详细说明
问题:输出格式不稳定,每次都不一样。
本课目标:
- 学会系统化地识别 prompt 问题
- 掌握诊断问题原因的方法
- 建立有效的迭代优化流程
前置知识:<< 04 Chain-of-Thought | 下一课 06 >>
你精心写了一个 prompt,包含了角色、任务、格式、示例——然后 AI 输出的结果还是不对。可能是格式乱了、内容偏了、或者漏掉了关键信息。这时候该怎么办?
随机改几个词、祈祷下次运气好?还是系统化地找出问题、针对性地修正?本课教你后者——像调试代码一样调试 prompt:识别症状、诊断原因、小步修改、验证效果1。
Prompt 调试跟调试代码很像1:
关键是一次只改一个变量。如果你同时改了三个地方,就不知道是哪个改动起了作用。
"输出不对"太笼统,要具体到哪里不对1。
常见问题类型:
示例:识别问题
你的 prompt:
AI 输出:
问题识别:格式不是你要的列表格式,而且没有说是几个要点。
找出 prompt 的哪个部分(或缺失的部分)导致了问题。
诊断问题的清单:
诊断结果:缺少格式说明和数量约束。
一次只改一个问题,测试是否改善。
修改 1:明确数量和格式
测试结果:格式对了,但每个要点太长,超过一句话。
修改 2:加入长度约束
测试结果:符合预期。
记录有效的修改,下次遇到类似问题可以复用。
症状:有时输出 JSON,有时输出纯文本;有时用冒号,有时用等号。
诊断:缺少格式示例,或者示例之间格式不一致。
修复:
症状:输出只包含部分信息,总是漏掉某些字段。
诊断:你要求的信息没有明确列出来。
修复:
关键是明确列出所有必填字段,并说明找不到时该怎么办。
症状:你只要代码,AI 给了代码 + 一大段解释;你只要列表,AI 在列表前后加了介绍和总结。
诊断:缺少"只输出 X"的约束。
修复:
或者:
症状:AI 理解错了你的意图,回答了相关但不对的问题。
诊断:用词有歧义,或者缺少上下文。
示例:
AI 可能分析:
你要的是逻辑错误,但 prompt 里没说。
修复:
明确你要的维度,排除其他维度。
准备 3-5 个代表性的输入,每次修改后都用这些输入测试1。
示例:你在优化"提取产品评论的情感"这个 prompt。
测试用例:
每次修改 prompt 后,用这 5 个输入测试,看是否都分类正确。
像代码版本管理一样管理 prompt 版本1。
简单的记录方式:
这样你知道每个改动带来了什么效果,如果新版本反而变差了,可以回退到上一个好版本。
不确定某个改动是否有效?同时保留两个版本,各测试 10 次,比较成功率。这就是 A/B 测试:一次只变一个因素,用数据判断优劣。
示例:你不确定加"让我们一步步思考"是否真的有帮助。
数据说话,B 更好。
不要一上来就写一个 500 字的复杂 prompt。从最简单的版本开始,逐步添加约束1。
迭代路径:
每一步只解决一个问题,最后得到一个刚好够用的 prompt,没有多余的废话。
完整的调试流程是一个循环:运行 prompt → 检查输出 → 如果不符合预期就识别问题、诊断原因、修改一个地方、用测试用例验证 → 重复直到符合预期 → 记录成功版本。
下图展示了这个迭代循环的每个步骤:
关键原则:
Prompt 优化没有终点,但有一个够用标准:
✅ 可以停止优化的信号:
❌ 还需要继续的信号:
实用主义原则:够用就行,别追求完美。如果 90% 的情况下都工作良好,剩下 10% 的边界情况可以人工介入。
调试 prompt 的流程是:识别具体问题 → 诊断原因 → 小步修改 → 验证效果。关键是一次只改一个变量,用测试用例验证每次改动,记录版本和效果。
常见问题包括格式不稳定、遗漏信息、过度解释、理解偏差。针对每种问题有对应的修复策略:加示例、明确字段、加"只输出"约束、排除歧义。
从简单版本开始,逐步添加约束,直到在测试用例上成功率达到 90% 以上。记录有效的 prompt 版本,下次可以复用。
下一课学习针对不同任务类型的 prompt 策略——代码生成、文档写作、数据分析各有什么特定技巧。
Prompt:
AI 输出(三次运行的结果):
问题:输出格式不稳定,每次都不一样。
场景:让 AI 从会议记录中提取待办事项。
要求:
Jot down thoughts, sticking points, things you didn't get. Written to this course's appendix only — the lesson file is never touched.
总结这篇文章的要点这篇文章讨论了三个要点:首先是……其次是……最后是……用三个要点总结这篇文章,每个要点一句话,用项目符号列表格式。用三个要点总结这篇文章。
要求:- 每个要点不超过 20 字- 用项目符号(- )列表- 只输出要点,不要输出"要点如下"之类的引导语提取以下所有字段(必填):1. 标题2. 作者3. 发布日期4. 摘要
如果某个字段在原文中找不到,输出"未提供",不要省略该字段。只输出可运行的代码,不要输出任何解释、注释或说明。只输出列表,不要输出"以下是列表"之类的引导语或总结。分析这段代码的问题分析这段代码中的逻辑错误。忽略代码风格和性能问题,只关注会导致输出错误的逻辑bug。版本 v1 (2024-01-15):提取评论情感
效果:- 明显情况 OK- 边界情况不稳定
---
版本 v2 (2024-01-15):将评论分类为"正面"、"负面"或"中性"。示例:[3个示例]
效果:- 边界情况改善- 但输出格式不统一(有时输出"positive"、有时"正面")
---
版本 v3 (2024-01-15):[v2 内容] + 约束:只输出中文"正面"、"负面"、"中性"三个词之一。
效果:✅ 通过所有测试用例v1: 总结这篇文章 → 不够具体
v2: 用三个要点总结这篇文章的核心观点 → 要点太长
v3: 用三个要点总结这篇文章的核心观点,每个要点不超过 20 字 → 格式不统一
v4: [v3] + 用项目符号列表,只输出要点不要输出引导语 → ✅ 效果好总结这篇文章的要点