第二课:问题定位——如何识别提示词输出中的错误?
调试提示词,说白了就是找茬。
你写了一段提示词,模型给了你一段输出。你觉得不对劲,但又说不上来哪里不对。我刚开始做提示词工程时,经常卡在这一步——明明感觉有问题,就是找不到根因。
后来我总结了一套方法。今天咱们就聊聊,怎么快速定位提示词输出中的错误。
错误类型一:逻辑错误
这是最隐蔽的问题。模型说的话看起来都对,但仔细一推敲,逻辑上站不住脚。
举个例子。我问模型:「小明比小红高,小红比小刚高,谁最矮?」模型回答:「小刚最矮。」这没问题。但换个问法:「A比B大,B比C大,C比A大,这个关系成立吗?」模型有时会回答「成立」。这就出问题了。
为什么会这样?因为模型在「生成」答案,而不是在「推理」答案。它更擅长匹配模式,而不是执行严格的逻辑运算。
我个人的判断标准:
- 输出中是否存在自相矛盾的陈述?
- 因果关系是否成立?
- 数字计算、时间顺序是否合理?
我在项目中遇到过最典型的案例:让模型生成一份产品需求文档,它写「用户点击按钮后,系统会在1秒内响应,同时发送邮件通知」。听起来没问题对吧?但仔细看,它把「同步操作」和「异步操作」混在一起了。点击按钮后的即时响应和邮件发送,根本不是一个时间维度的事。这就是逻辑错误。
错误类型二:格式错误
这类错误最好发现,也最好修。说白了就是模型没按你要求的格式输出。
你要求输出JSON,它给你一段带注释的文本。你要求Markdown表格,它给你一个HTML表格。你要求列表用数字编号,它给你用圆点。
一个小技巧:
我建议在提示词里明确给出输出模板。比如:
请按以下格式输出:
{
"name": "产品名称",
"price": 价格数字,
"description": "简短描述"
}
不要添加任何额外内容。
格式错误还有一个变种——「幻觉式填充」。模型为了凑够格式,会自己编造内容。我记得有一次,我让模型生成一份会议纪要,要求包含「参会人」「议题」「结论」三个字段。模型乖乖输出了格式,但「参会人」一栏里出现了「张三、李四、王五」——这三个名字根本不在我提供的上下文里。
注意:
格式错误往往伴随着内容偏差。模型为了满足格式要求,会「创造」内容来填空。这是最危险的情况。
错误类型三:内容偏差
内容偏差,就是模型输出的信息与事实不符,或者与你的预期不符。
这里分两种情况:
| 偏差类型 | 表现 | 常见原因 |
|---|---|---|
| 事实性偏差 | 输出与客观事实不符 | 模型训练数据过时、模型幻觉 |
| 意图性偏差 | 输出与你的需求不匹配 | 提示词表述模糊、缺少约束条件 |
事实性偏差好理解。你问「2024年奥运会主办城市是哪里?」模型回答「东京」。这就是事实错误——2024年奥运会主办城市是巴黎。模型可能把2020年(实际2021年举办)的东京奥运会信息混进来了。
意图性偏差更常见。你让模型「写一段产品介绍」,它给你写了一篇学术论文风格的分析。你明明要的是营销文案,它给你的是技术文档。这不是模型笨,是你没把「风格」「受众」「用途」说清楚。
我常用的排查方法:
- 先问自己:我到底想要什么?把需求写下来。
- 再看输出:它给的东西,和我的需求差在哪?
- 逐条对比:是事实错了,还是风格错了,还是结构错了?
如何系统化定位错误?
光知道错误类型还不够。你得有一套排查流程。我分享一个自己用了很久的方法,叫「三遍检查法」。
第一遍:扫读。快速浏览输出,看有没有明显的格式问题、错别字、数字错误。这遍花30秒就够了。
第二遍:精读。逐句分析逻辑。问自己:这句话成立吗?前后矛盾吗?有没有偷换概念?这遍花2-3分钟。
第三遍:对照。把输出和你的提示词放在一起看。你的要求它都满足了吗?有没有遗漏?有没有多余?这遍花1-2分钟。
嗯,这里要注意:
三遍检查法不是死板的流程。你熟练之后,可以合并成一遍。但刚开始,我建议老老实实走三遍。我在项目里吃过亏——扫读觉得没问题,精读才发现逻辑漏洞。后来再也不敢跳步骤了。
一个实战案例
给你看看我最近调试的一个例子。提示词是这样的:
请列出5种提高代码质量的方法,用数字编号,每点不超过20字。
模型输出:
1. 编写单元测试
2. 代码审查
3. 使用静态分析工具
4. 遵循编码规范
5. 重构代码
乍一看没问题对吧?但仔细看——「使用静态分析工具」这行,超过了20个字。这就是格式错误。另外,第5点「重构代码」太笼统,没有说明「什么时候重构」「怎么重构」,这属于内容偏差——信息密度不够。
你看,一个简单的提示词,就能同时出现两种错误。所以我说,调试是个细致活。
我曾经犯过的错:
有一次我让模型生成一份技术方案,它输出了一篇非常漂亮的文档。我直接用了,结果评审时被同事指出方案里有个技术路线根本不可行。那就是逻辑错误——模型把两个不兼容的技术方案拼在一起了。从那以后,我再也不敢完全信任模型的输出。每份输出,我都会亲自过一遍逻辑。
总结一下
识别错误,其实就三步:
- 看格式对不对——这是最表面的
- 看逻辑通不通——这是最关键的
- 看内容准不准——这是最根本的
你想想看,这三个层次一层层往下挖,大部分问题都能定位到。下一节课,咱们聊聊具体怎么修这些错误。到时候我会分享一些我压箱底的调试技巧。