正在加载页面…
交互界面暂未加载完成。你可以先阅读下方内容,或刷新重试

Agent 中的 Self-Reflection 是什么?

Self-Reflection 一般翻译成: 自我反思。 听起来有点抽象。 其实放在 Agent 里,它的意思很简单: Agent 做完一件事之后,再检查一下自己刚才做得对不对。 如果发现问题,就修改。 这就是 Self-Reflection。 为什么需要 Self-Reflection 大模型经常会犯一种错误: 它会很自信地给出一个错误结果。 比如让 Agent 写一段代码。 它写完以后直接回答: 已完成。 但实际上代码可能根本跑不起来。 如果加入 Self-Reflection,流程就不一样了。 这样最终结果通常会更可靠。 Self-Reflection 是怎么工作的 最简单的 Self-

Self-Reflection 一般翻译成:

自我反思。

听起来有点抽象。

其实放在 Agent 里,它的意思很简单:

Agent 做完一件事之后,再检查一下自己刚才做得对不对。

如果发现问题,就修改。

这就是 Self-Reflection。

为什么需要 Self-Reflection

大模型经常会犯一种错误:

它会很自信地给出一个错误结果。

比如让 Agent 写一段代码。

它写完以后直接回答:

已完成。

但实际上代码可能根本跑不起来。

如果加入 Self-Reflection,流程就不一样了。

生成代码
↓
检查代码
↓
发现问题
↓
修改代码
↓
再次检查

这样最终结果通常会更可靠。

Self-Reflection 是怎么工作的

最简单的 Self-Reflection 可以分成两步:

生成

然后:

检查

比如用户要求:

写一个 Python 函数,计算两个日期之间相差多少天。

模型先生成代码。

然后再问自己:

这段代码有没有问题?
有没有遗漏边界情况?
是否符合用户要求?

如果发现问题,就重新修改。

所以流程大概是:

第一次生成
↓
检查
↓
发现问题
↓
修改
↓
再次检查
↓
输出结果

一个简单例子

比如 Agent 写了一篇文章。

初稿里有这样一句:

所有 Agent 都必须使用 ReAct。

Reflection 阶段重新检查:

这个说法是不是太绝对了?

模型发现:

不是所有 Agent 都必须使用 ReAct。

于是修改成:

ReAct 是 Agent 中常见的一种设计方式。

这就是一次很简单的 Self-Reflection。

Reflection 可以检查什么

不同任务检查的东西也不一样。

写代码时可以检查:

有没有语法错误
有没有逻辑错误
有没有遗漏异常处理
是否满足需求

写文章时可以检查:

有没有事实错误
结构是否清楚
有没有重复
有没有回答用户的问题

做研究时可以检查:

证据是否足够
来源是否可靠
有没有遗漏重要信息
结论是不是过度推断

所以 Reflection 本质上就是多加了一层:

质量检查。

Self-Reflection 和普通重试不一样

普通重试可能只是:

失败
↓
再执行一次

但 Self-Reflection 会多一个过程:

为什么失败?
↓
哪里有问题?
↓
应该怎么改?

然后再重新执行。

所以它不是单纯重新来一遍。

而是先分析问题,再修改。

在 Agent 里怎么用

Self-Reflection 经常会和工具调用一起使用。

比如一个 Coding Agent:

写代码
↓
运行测试
↓
测试失败
↓
分析错误
↓
修改代码
↓
再次运行测试

这里的测试结果就是一个非常好的反馈。

模型可以根据测试结果进行 Reflection。

比如:

测试期望 200
实际返回 401

模型就可以继续分析:

可能是认证信息没有传入。

然后去检查相关代码。

所以很多 Coding Agent 看起来像是在“自己改 Bug”。

其实背后就是:

执行
↓
得到反馈
↓
反思
↓
修改

Self-Reflection 不一定真的可靠

这里也要注意一个问题。

模型自己检查自己,并不代表一定能发现错误。

因为生成答案和检查答案的,可能还是同一个模型。

它第一次没发现的问题,第二次也可能看不出来。

所以更加可靠的方法,通常是给 Reflection 提供外部反馈。

比如:

测试结果
编译错误
搜索结果
用户反馈
规则检查
另一个模型的评价

这些信息比单纯让模型说:

请检查你自己的答案。

通常更有效。

Self-Reflection 也不能无限进行

还有一个问题:

Agent 可能会一直觉得自己的结果不够好。

修改
↓
检查
↓
再修改
↓
再检查

最后陷入循环。

所以实际开发中通常也需要限制 Reflection 次数。

比如:

最多反思 3 次。

超过以后就输出当前最好的结果。

最后

Self-Reflection 的核心非常简单:

做完以后,再检查一遍。

如果发现问题:

修改,然后重新检查。

整个流程就是:

执行
↓
检查
↓
发现问题
↓
修改
↓
再次执行

它的价值在于给 Agent 增加一个纠错过程。

ReAct 关注的是:

下一步做什么。

Plan-and-Execute 关注的是:

整个任务怎么做。

Map-Reduce 关注的是:

大任务怎么拆开处理。

而 Self-Reflection 关注的是:

刚才做得对不对,要不要改。