Day 12|智能体的“自主纠错系统”

127 阅读6分钟

让 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 智能体”的分界线。