菜鸟AI - 让提示词生成更简单! 全站导航 全站导航
AI工具安装 新手教程 进阶教程 辅助资源 AI提示词 热点资讯 技术资讯 产业资讯 内容生成 模型技术 AI信息库

已有账号?

首页 > AI教程 > AI Agent 自我纠错能力实测:自动修复有效吗
进阶教程 自我纠错能力实测

AI Agent 自我纠错能力实测:自动修复有效吗

2026-06-03
阅读 0
热度 0
作者 菜鸟AI编辑部
摘要

摘要

前两天有个典型的 Agent 翻车案例。用户要求整理报销单,指令是“按金额降序排列,超标

前两天有个典型的 Agent 翻车案例。用户要求整理报销单,指令是“按金额降序排列,超标项加标注”。

Agent 做错了,真能自己改吗?

第一轮,Agent 读取表格、提取字段、完成排序,一切正常。第二轮,它开始调用工具,却将金额列误判为“申请时间”。第三轮,系统让它“复核上一步结果是否合理”,它看了一眼,直接回复“没问题”,随后把错误结果提交出去。

很多初次搭建 Agent 的开发者,都会在这里卡壳。大家误以为“反思”是模型突然拥有了自我审查能力——其实不然。工程意义上的反思机制,本质是一套闭环:先执行,再校验结果,发现偏差后修正。听起来简单,但真正的难点在于:如何让系统识别自身错误、定位错因、自主修复,并在达到上限时及时终止。

先说结论

Agent 具备自我修正能力,但条件非常严格。它能自行修复的通常是以下类型:输出格式错误、工具参数偏差、检索未命中需重试、计划步骤不完整需重规划、输出不满足约束需重写。它难以自行修复的通常是:事实性幻觉、用户意图模糊、工具已执行不可逆操作、权限不足、外部环境变化过快而无法推断。因此,不要把“反思”视为模型突然开悟。更准确的定位是:反思不是为了提升模型智商,而是让系统运行更稳健。

反思到底在反什么

很多人把 reflection、critique、self-check、retry、replan 混为一谈。实际上它们有本质区别。最基础的 Agent 流程如下:

def run(task):
    plan = planner(task)
    result = executor(plan)
    return result

这叫执行。如果加上“检查自身是否正确”,流程变为:

def run(task):
    plan = planner(task)
    result = executor(plan)
    verdict = critic(task, plan, result)
    if verdict["ok"]:
        return result
    return executor(verdict["new_plan"])

这就是最基础的反思闭环。请注意,核心不在于“模型是否会思考”,而在于系统多了一个判断层。这个判断层要回答三个问题:结果是否满足任务目标?结果是否违反约束?若不满足,下一步是重试、重写,还是直接宣告失败?

反思机制通常怎么做

1. 先把过程记录下来

没有过程记录,就没有反思依据。Agent 每一步都必须留下 trace:用户原始任务、中间计划、工具调用参数、工具返回结果、最终输出、失败原因。否则你连“它为什么做错”都无从知晓。这一步类似于线上故障排查——日志不是给机器看的,是给后续判断层使用的。

2. 单独做一个 critic

很多系统将“执行模型”与“审查模型”分离。执行模型负责干活,审查模型负责挑刺。审查提示词通常类似如下:

你是审查员。请检查以下结果是否满足:
1. 是否完成用户任务
2. 是否遵守格式要求
3. 是否存在事实错误
4. 是否调用了不该调用的工具
只输出 JSON:{"ok": true/false, "reason": "...", "fix": "..."}

这类设计的核心价值,是把“主观感觉不对劲”转化为“可执行的判定”。否则反思会沦为一句空话:“我觉得还可以再优化一下。”

3. 给它一个可重试的边界

反思不能无限循环。真正上线的系统都会设定上限:最多重试几次、哪些错误可重试、哪些必须中断、哪些需回问用户。例如:网络超时可以重试,JSON 解析失败可以重写,检索结果太少可以换 query,权限不足不能硬改只能报错。这个边界至关重要——因为 Agent 一旦出错还不停自我修正,很容易把错误越滚越大。

它为什么有时候能自己改

能自我修正,靠的不是神秘能力,而是错误可见。只要系统能检测到偏差,就有机会修正。最常见的可修正问题有四类。

第一类,格式问题

例如要求输出 JSON,结果多了一句无关文本。这类最好修。系统只需加一个校验器:

def validate_output(text):
    try:
        json.loads(text)
        return True
    except:
        return False

校验失败后,将错误信息反馈给模型,让它重写。此类修正成功率通常很高,因为错误明确。

第二类,工具调用问题

例如参数字段写错,或漏传必填项。这类也能修,因为工具通常会返回明确的错误信息:参数非法、字段缺失、资源不存在、调用超时。Agent 拿到这个错误后,就能更新自身下一步动作。

第三类,计划问题

例如初始只规划了三个步骤,执行到第二步才发现缺少信息。此时不是修补,而是重规划。典型流程是:回看当前状态,识别缺口,重新生成后续计划。这也是 ReAct、Plan-and-Execute、Reflexion 等方案的核心。

第四类,检索问题

例如知识库未查准,或查到的文档相关度不足。此时 Agent 可以调整 query 再搜一次。这种“自我修正”本质上不是改答案,而是改输入。这个区别很重要。

它为什么经常改不了

因为很多错误根本不可判定,或者已经不可逆。

1. 它不知道自己错了

这是最常见的问题。模型会一本正经地给出看似合理的答案,但答案与事实不符。没有外部校验,Agent 很难自行发现。因此很多系统必须接入规则校验、结构校验、业务校验、人工审核——单靠模型自省远远不够。

2. 它拿不到真实世界反馈

例如用户让 Agent 修改数据库。Agent 可以说“已经改了”。但如果没有事务、返回码、审计日志和最终落库结果,它根本不知道操作是否成功。这就是 Agent 与纯文本生成的最大区别:文本错了可以重写,动作错了可能已经执行出去了。

3. 它的错误不是局部错误

有些问题不是某一步出错,而是最初的目标理解就偏了。比如用户说“帮我整理一下这个方案”,Agent 却理解成“帮我生成一个汇报模板”。后续再怎么反思,都只是在错误方向上优化。所以反思机制救不了根因错误,只能尽量减少错误被放大。

一个更像样的工程实现

放到线上环境,通常不是单个模型单打独斗,而是多层协同:

Task -> Planner -> Executor -> Observer -> Critic -> Retry/Replan

其中:Planner 负责拆解任务,Executor 负责调用工具,Observer 负责收集结果,Critic 负责判断对错,Retry/Replan 负责修正路径。再往前推,最好还能加上:预算控制、失败上限、权限控制、幂等保护、审计日志。因为一旦 Agent 学会反思,它就不仅是“会说话”,而是在“会行动”。会行动就必须受控。

真正有用的反思,不是复读

很多人把反思做成了另一种 prompt 续写。第一轮说错了,第二轮让模型“请认真检查一下”——结果依然错。原因很简单:没有提供新信息,也没有施加新约束,它凭什么突然修对?因此真正有效的反思,至少需要一个新的变量:新的工具反馈、新的校验规则、新的状态信息、新的失败原因。缺少这些,反思就只是情绪,不是机制。

最后怎么回答这个问题

如果面试官问你:“Agent 的反思机制是怎么实现的?它做错了能自己改吗?”你可以直接这么答:反思机制本质上是一个执行后校验的闭环。系统先让 Agent 完成任务,再通过 critic、规则校验、工具返回和状态观测判断结果是否正确;如果可修正,就触发重试、重写或重规划。它能自己改,但只能改可检测、可逆、局部的问题。比如格式错误、参数错误、检索错误、计划不完整,这些通常能靠反馈闭环修回来。但如果是事实幻觉、意图理解错了、权限不足或者动作已经不可逆,那就不能指望它自己“反省一下”就修好。说白了,Agent 的反思不是玄学,是工程控制。它不是在思考人生,它是在尽量别把错一路放大。

来源:互联网

免责声明

本网站新闻资讯均来自公开渠道,力求准确但不保证绝对无误,内容观点仅代表作者本人,与本站无关。若涉及侵权,请联系我们处理。本站保留对声明的修改权,最终解释权归本站所有。

同类文章推荐

相关文章推荐

更多