Agent的反思机制

Agent的反思机制

一、什么是 Agent 的反思机制(Reflection)?

Agent 反思机制指的是:

Agent 在完成某一步任务后,不直接结束,而是让模型重新检查自己的行为、结果和错误,然后根据评价结果进行修正。

简单理解:

普通 Agent:

任务

思考

执行

结果

结束

带反思机制的 Agent:

任务

思考

执行

检查结果

发现问题

修改策略

重新执行

完成

它类似人做事情:

比如写代码:

第一次:

写完代码,运行报错

普通 Agent:

报错信息返回给用户

反思 Agent:

为什么错?是逻辑错误还是边界问题?修改代码,再测试。

二、为什么 Agent 需要反思?

因为 LLM 本身存在几个问题:


(1)一次推理容易出错

大模型生成结果不是确定计算。

例如:

用户:

写一个排序算法

Agent:

第一次生成:

for(int i=0;i<n;i++) { for(int j=0;j<n;j++)

可能:

越界

时间复杂度错误

漏处理边界

如果没有反思:

直接返回错误答案。

有反思:

生成代码

Reviewer:
检查复杂度
检查边界
检查语法

发现问题

重新生成

准确率提升。

(2)复杂任务需要持续优化

比如:

用户:

帮我设计一个机器人导航系统

第一次:

Agent可能:

ROS
SLAM
Navigation
控制

但是没有考虑:

网络延迟

故障恢复

电量管理

反思:

检查设计完整性

发现:
缺少异常处理

补充:
故障检测模块

(3)避免 Agent 陷入错误方向

Agent执行:

搜索资料

分析

生成方案

可能中途:

错误假设

例如:

认为:

机器人使用GPS定位

但是实际:

室内机器人没有GPS。

反思:

当前假设是否合理?

发现错误

重新规划

三、Agent反思机制有哪些类型?

常见有三种:

① Self-Reflection(自我反思)

最简单。

让同一个LLM评价自己的结果。

结构:

用户任务
|

Agent生成答案
|

Reflection Prompt
|

"检查你的答案有什么问题"
|

修改答案

例如:

第一次:

Prompt:

写一个TCP服务器

输出:

代码A

然后:

反思:

请检查上述代码:
1. 是否线程安全?
2. 是否存在资源泄露?
3. 是否符合C++规范?

模型:

发现:
socket关闭遗漏

修改代码

② Critic-Actor(评价者-执行者)

更工程化。

拆成两个Agent:

Task

|

Actor Agent
(执行者)

|

Result

|

Critic Agent
(评价者)

|
┌──────┴──────┐
↓ ↓
通过 修改

③ Reflection Memory(反思记忆)

更高级。

不仅改当前任务,还保存经验。

例如:

第一次:

机器人导航失败:

原因:

低电量没有提前返回充电

存入Memory:

经验:
导航任务必须检查电量

下一次:

Agent:

规划导航任务

读取历史经验

提前检查电量