让 Agent 学会自己检查、自己修正、自己保证质量
智能体跑久了,你一定遇到下面的问题:
- 它明明输出完整,但逻辑是错的
- 它工具调用失败也不知道
- 长链推理里,前半段还正常,后半段乱了
- 有时候它输出“似乎合理”,但其实事实错误
- 越大任务它越容易“越走越偏”
这些问题的根源是
LLM 不会自动纠错,它只会自信地生成下一段文字。 如果你不人工加“自我纠错机制”,Agent 一定不稳定。
今天我们从工程视角讲透
- 为什么智能体必须有自主纠错?
- 纠错系统应该由哪些组成?
- 怎样设计“自检 Prompt”?
- 怎样设计“Reflexion 自反机制”?
- 如何让智能体每个步骤都能自查?
- 如何避免“越改越错”?
- 一套可直接复制的纠错系统模板
这篇是让你的 智能体 质量提升一个台阶的核心章节。
01|为什么智能体必须具备“自主纠错”?
因为 LLM 天生有以下缺陷
- 无法自动检查自己的输出是否正确
- 对工具错误不敏感
- 长链推理误差放大
- 无法记住自己的“标准”
- 任务拆解错误会造成持续性偏移
如果你的智能体没有纠错机制,它就是这样工作👇:
“我先猜一遍,然后猜下一遍,再继续猜。”
你需要建立一个系统,让它变成👇:
“我先做 → 自检查 → 修正 → 再输出。”
这个系统被称为:Auto-Correction System(自主纠错系统)
02|一个成熟的智能体应该具备哪 4 种纠错能力?
这是我总结的一套足够应对 90% 场景的能力结构:
1. 结构自检(Structure Check)
2. 事实自检(Factual Check)
3. 工具行为自检(Tool Check)
4. 推理逻辑自检(Reasoning Check)
下面逐一讲透。
① 结构自检(Structure Check)
智能体先检查自己格式有没有问题
最容易实现,也最有效。怎么做?让 Agent 完成任务后,先不要直接返回,而是让它:
- 检查输出结构是否符合要求
- 检查是否漏项
- 检查是否遗漏字段
- 检查是否格式混乱
示例:
请根据以下 checklist 对你刚才的输出进行结构检查。
Checklist:
- 是否包含标题?
- 是否包含步骤?
- 是否包含示例?
- 是否包含结论?
如果不符合,请重新生成。
这个方法简单,但能让智能体输出稳定度提升 30%-50%。
② 事实自检(Factual Check)
减少“似是而非”的胡说八道**
事实类错误最难处理,但可以通过两类机制减少:
机制 A:自我审查(Self-Critique)
示例 Prompt:
请从事实一致性角度检查你的回答:
- 是否引用了无法确认的事实?
- 是否包含推测性结论?
- 是否包含未验证的技术细节?
如果发现问题,请指出并修正。
机制 B:引用外部工具(search / retrieval)
当智能体依赖工具,你可以让它:
- 若事实不确定 → 自动搜索
- 若给出数据 → 给出来源
- 若引用模型相关信息 → 返回官方文档链接
关键在于“当不确定 → 不装懂”。
③ 工具行为自检(Tool Check)
智能体必须知道自己“做对还是做错”**
工具调用环节常见问题:
- 工具报错但智能体忽略
- 工具返回“None”,智能体当正常信息
- 工具调用参数错误
- 工具调用不符合 schema
解决方式非常工程化:
为每个工具添加统一的“tool_result wrapper”
工具返回结构必须统一:
{
"success": true | false,
"error_msg": "",
"data": {...}
}
然后让智能体在使用工具前,检查 success 字段:
如果 success = false,请总结错误原因并重新规划。
这个机制可以减少 70% 的工具级错误循环。
④ 推理逻辑自检(Reasoning Check)
让 Agent 检查自己推理过程是否合理**
这是智能体最缺的能力。
LLM 的推理链存在:
- 局部跳步
- 错误关联
- 长链累积偏移
- 逻辑断裂
解决方法是:让它输出推理后,再由另一个“验证进程”检查推理。
推荐使用经典结构:Reflexion Prompt(自反系统)
结构如下:
你刚才的推理可能存在错误,请根据以下 checklist 自我检查:
- 是否存在逻辑跳跃?
- 是否存在关键步骤缺失?
- 是否存在推理假设未说明?
- 是否存在因信息不足导致的猜测?
请逐条检查并给出修正。
03|构建完整的“自主纠错链路”(工程级最佳实践)
下面给你一条我在生产系统中使用的链路,你可以直接复用。
步骤 1:Agent 给出初稿(Draft)
Output(Draft)
步骤 2:结构检查(Structure Check)
Check: 格式、字段、缺漏
步骤 3:事实检查(Factual Check)
Check: 是否包含不确定或伪造事实?
步骤 4:工具调用检查(Tool Check)
Check: 工具调用是否成功?
步骤 5:推理链检查(Reasoning Check)
Check: 推理是否存在逻辑错误?
步骤 6:修正并输出 Final Answer
Output(Final Answer)
这个链路可以让智能体在几乎所有任务中保持高质量、低偏差。
04|一套可以直接复制的“自主纠错 Prompt 模板”
📌 纠错系统总 Prompt(可直接用)
你必须使用以下纠错流程:
[1] 结构检查(Structure Check)
- 输出格式是否完整?
- 是否包含所有必须字段?
- 是否有空项、缺项?
[2] 事实检查(Factual Check)
- 是否包含不可验证的事实?
- 是否加入了推测性信息?
- 是否可能误导用户?
[3] 工具检查(Tool Check)
若使用工具:
- success 是否为 true?
- error_msg 是否为空?
[4] 推理检查(Reasoning Check)
- 是否存在推理跳步?
- 是否存在矛盾?
- 是否存在未说明的假设?
处理方式:
如果发现任何问题 → 修正 → 输出 Final Answer
如果所有检查通过 → 直接输出 Final Answer
05|如何避免“越改越错”?
纠错系统强大,但也有风险:
智能体可能在检查过程中“自我污染”,越改越偏。
解决方式:
方法 1:每次纠错都基于 Draft,而不是基于修改后的版本
这是“回溯式纠错”。
方法 2:每轮纠错都限制 Token(防止推理漂移)
例如:
限制纠错阶段输出 ≤ 300 token
方法 3:纠错不要超过 3 层
防止递归错误。
06 智能体的质量 = 推理能力 × 纠错能力
想让你的智能体稳定、可控,必须补上一块:
自我检查、自我修正、自我稳定机制
这一章做完,你的智能体将大幅提升在:
- 长任务稳定性
- 连续任务质量
- 工具调用正确性
- 输出一致性
- 长链推理可靠性
这才是“工程级智能体”和“Demo 智能体”的分界线。