诊断并修复糟糕的提示
使用系统化的调试检查清单改进效果不佳的提示
诊断并修复糟糕的提示 是 CoddyKit 上的免费 AI Prompt Engineering 课时。 这是第 4 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Prompt Engineering 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Prompt Engineering 课程共包含 4 节课。
调试思维
当提示词生成了糟糕的输出时,大多数人的第一反应是责怪模型。但在大多数情况下,问题出在提示词上——根据收到的指令,模型其实正按照预期运行。
把提示词失败视为调试问题会更有成效。就像调试代码一样,您需要系统地找出根本原因,提出修复方案,进行测试,并验证结果。这种思维方式比沮丧地反复试错能更快带来改进。
提示词调试检查清单
当提示词失效时,请系统地逐项检查以下五个维度:
- 具体性——是否过于模糊?是否需要更精确地定义任务?
- 上下文——是否缺少模型所需的背景信息?
- 格式——是否指定了所需的输出格式和长度?
- 约束——约束是否表述清楚?其中是否存在冲突?
- 示例——提供一个优质输出的示例是否能消除歧义?
每个维度都对应一种具体的修复方案。请找出失效的维度,并采取相应的修复措施。
维度 1:具体性检查
具体性不足会导致:主题错误、角度错误、受众层级不匹配,以及遗漏任务的关键方面。
诊断问题:
- 一个聪明的陌生人是否可能以不同于我原意的方式理解这个提示词?
- 是否存在需要替换的模糊词语(良好、更好、合适、专业)?
- 是否指定了任务类型(文章?邮件?摘要?分析?)?
- 对受众的定义是否足够精确?
修复:用具体词语替换模糊词语。明确任务类型。说明受众的背景。添加一句您希望得到的输出示例。
维度 2:上下文检查
上下文不足会导致:忽略您具体情况的泛泛建议;错误地假设您的技术栈、公司或受众;以及在其他上下文中可行、但不适用于您的回复。
诊断问题:
- 关于我的具体情况,模型有哪些无法从通用训练中获知的信息?
- 我是否提供了任务涉及的相关代码、文档或数据?
- 我是否描述了环境中的约束?
修复:在任务指令之前添加“背景”部分。直接将相关代码或内容粘贴到提示词中。
维度 3:格式检查
格式错误会导致:内容正确、结构错误——您需要项目符号时得到散文,需要分步指南时得到文章,需要导航结构时却没有标题。
诊断问题:
- 我是否指定了输出格式(项目符号、编号列表、散文、表格、代码块)?
- 我是否指定了长度?
- 我是否指定了必需的部分或结构?
修复:添加明确的格式指令。使用以下模式:“格式:[结构]。长度:[目标长度]。部分:[列表]。” 对于复杂格式,请提供一个包含占位文本的模板,让模型填入内容。
维度 4:约束检查
约束失效会导致:输出包含您希望排除的内容,或者由于约束相互冲突而显得机械。
诊断问题:
- 我的约束是否表述清楚,还是仅仅暗示出来的?
- 是否有约束彼此冲突?
- 我的约束是否与内容范围或长度冲突?
- 对于接近冲突的约束,是否指定了优先级指令?
修复:将隐含约束明确写出。添加优先级指令。通过选择优先满足的约束来解决冲突。检查范围和长度是否相互兼容。
维度 5:示例检查
当前四个维度看起来都没有问题,但输出仍然不理想时,缺少示例往往是原因。示例能够传达语言无法传达的信息。
诊断问题:
- 展示一个优质输出的示例,是否能明确预期的风格、语气或格式?
- 负面示例(不应生成的内容)是否会有所帮助?
- 是否有可以用作参考的该任务类型的现有输出?
修复:在提示词中添加一到两个理想输出的示例。使用以下模式:“以下是我希望得到的示例:[示例]。现在请对[您的实际任务]执行相同操作。”
提示词调试工作流程
以下是一套完整的诊断工作流程,您可以将其应用于任何失效的提示词:
def diagnose_prompt(original_prompt, failed_output, problem_description):
'''
Use a second LLM call to diagnose why a prompt produced a bad output.
Returns a diagnosis and an improved prompt.
'''
import openai
client = openai.OpenAI(api_key='sk-...')
diagnosis_prompt = f'''You are a prompt engineering expert.
A user ran this prompt:
---PROMPT---
{original_prompt}
---END PROMPT---
It produced this output (which was unsatisfactory):
---OUTPUT---
{failed_output[:500]}...
---END OUTPUT---
The problem the user identified: {problem_description}
Diagnose the prompt failure using this framework:
1. Specificity: Is anything too vague?
2. Context: What background information is missing?
3. Format: Is the desired format/length unclear?
4. Constraints: Are there missing or conflicting constraints?
5. Examples: Would an example help?
Then write an improved version of the prompt that addresses the root cause.
Format: Diagnosis: [analysis] || Improved prompt: [new prompt]'''
response = client.chat.completions.create(
model='gpt-4o-mini',
messages=[{'role': 'user', 'content': diagnosis_prompt}]
)
return response.choices[0].message.content根本原因与症状
常见的调试错误是处理症状,而不是寻找根本原因。
症状:输出过于笼统。
症状修复:在提示词中添加“请更加具体”。
根本原因:没有定义受众,因此模型默认面向一般受众。
根本原因修复:添加精确的受众说明。
处理症状只能带来有限的改进。处理根本原因才能带来可靠的改进。在编写修复方案之前,先再深入一层询问“为什么会出现这个症状?”。
记录提示词失败日志
对于反复出现的任务类型,记录提示词失败日志可以加快长期改进。每条记录包括:
- 原始提示词
- 糟糕的输出(或对问题的描述)
- 诊断出的根本原因(具体性/上下文/格式/约束/示例)
- 采取的修复措施
- 结果
记录 10 到 20 条后,模式就会显现出来。您可能会发现,同一个根本原因(例如缺少受众上下文)占某一类别失败的 60%。将其修复到模板中,这种模式就会消失。
改进后的提示词模板
大多数结构良好的提示词都遵循一致的模板,主动涵盖全部五个调试维度:
ROBUST_PROMPT_TEMPLATE = '''
## Role
[Who the model should act as — establishes expertise level and perspective]
## Context
[Background the model needs: company, audience, product, prior decisions, constraints]
## Task
[Specific, precise description of what to produce]
## Format
[Output structure: bullet points / prose / numbered list / table]
[Length: word count or sentence count]
[Required sections: list them if the output needs specific sections]
## Constraints
[What to include: required elements]
[What to exclude: off-limits content or approaches]
[Priority: if constraints conflict, X takes priority over Y]
## Example
[One example of good output for this task type — optional but powerful]
'''
print(ROBUST_PROMPT_TEMPLATE)知识检查:提示词调试
某个提示词生成的输出文笔流畅,但关注的是该主题的一般最佳实践,而不是任务中描述的具体情况。格式和长度都正确,也没有违反约束。哪个调试维度是根本原因?
回顾:诊断和修复糟糕的提示词
提示词调试是一个系统化过程,而不是反复试错。五维检查清单——具体性、上下文、格式、约束、示例——将每种常见失败类型对应到具体的修复方案。
稳健的提示词模板会主动涵盖全部五个维度,在大多数失败发生之前就加以预防。调试工作流程(识别症状 → 找到根本原因 → 应用修复方案 → 验证)能够带来可靠的改进。提示词失败日志则能加快不同会话之间的学习。
借助这些工具,您可以有条理且一致地诊断和修复任何提示词失败。
常见问题解答
「诊断并修复糟糕的提示」课时是免费的吗?
是的 — 「诊断并修复糟糕的提示」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Prompt Engineering 课程的其余内容,请升级到 CoddyKit PRO。 AI Prompt Engineering 课程共包含 4 节课。
「诊断并修复糟糕的提示」这节课中我会学到什么?
使用系统化的调试检查清单改进效果不佳的提示 你通过在浏览器中直接运行的动手代码来练习 AI Prompt Engineering,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 AI Prompt Engineering 需要有经验吗?
无需任何先前经验。CoddyKit 上的 AI Prompt Engineering 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 4 节课,共 4 节。
「诊断并修复糟糕的提示」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 AI Prompt Engineering 课中编写并运行代码吗?
能。每节 AI Prompt Engineering 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 过于模糊的指令
- 相互矛盾的要求
- 缺少上下文导致的错误
- 诊断并修复糟糕的提示