react - 启用反馈模式(ReAct-Feedback)
2026年1月29日 下午6:51:58
在自动化的 AI 工作流中,最令人担心的不是 AI “不会做”,而是 AI 在遇到不确定因素时“瞎做”。
为了让智能体更加安全、可控,Solon AI 为 ReActAgent 引入了 反馈模式(Feedback Mode)。这是一种典型的 (智能的)Human-in-the-Loop(人工在环) 设计模式,允许智能体在推理遇到瓶颈或高风险操作时,主动停下来向外部(通常是人类)寻求帮助。
1、什么是反馈模式?
普通的 ReAct 智能体在面对未知、错误或权限不足时,往往会不断尝试(陷入死循环)或输出幻觉。
反馈模式 赋予了智能体一个虚拟的工具 —— feedback。当智能体意识到:
- 缺乏关键背景信息。
- 现有工具无法解决当前子任务。
- 即将执行的操作具有高风险(如:大额转账、删除生产环境数据)。
它会主动调用 feedback 工具,将当前的思考(Thought)、**困境(Reason)**以及需要协助的具体问题输出,并暂停推理等待外部输入。
2、 核心原理与数据流转
一旦通过 .feedbackMode(true) 启用该功能,ReActAgent 会自动在工具集中注入一个系统级工具。
| 核心组件 | 描述 |
|---|---|
| 主动决策 | LLM 根据当前的 ReActTrace 判断是否需要外部干预。 |
| 描述注入 | 通过 feedbackDescription 告诉 AI 什么时候该“求助”。 |
| 中断与挂起 | 执行到反馈节点时,Agent 返回特殊状态,保存当前的会话快照。 |
| 上下文反馈 | 用户/开发者提供的反馈信息将作为观察结果(Observation)重新喂给 AI,驱动其修正逻辑。 |
3、如何配置反馈模式?
通过 ReActOptionsAmend 可以轻松开启并自定义反馈行为。
ReActAgent agent = ReActAgent.of(chatModel)
.name("finance_assistant")
// 1. 开启反馈模式
.feedbackMode(true)
// 2. (可选)告诉 AI 它在什么情况下可以求助(自定义反馈工具的描述) //最好不要改
.feedbackDescription(trace -> "当你涉及 1000 元以上的操作,或无法确认报销政策时,请使用此工具询问管理员。")
.build();
// 发起调用
ReActResponse resp = agent.prompt("给张三报销 5000 元交通费").call();
// 如果触发了反馈,可以通过 trace 检查原因
if(resp.getTrace().isWaitingFeedback()) {
System.out.println("AI 请求协助:" + resp.getContent());
}
也可以在调用时配置
ReActResponse resp = agent.prompt("给张三报销 5000 元交通费").options(o->o.feedbackMode(true)).call();
也可与 planningMode 同时启用。
4、 典型应用场景
A. 高风险决策拦截(Safe-Guard)
在执行敏感操作(数据库删除、资金拨付、邮件群发)前,Agent 主动提交草稿请人审阅。
- AI Thought: "用户要求删除该用户记录,但这属于敏感操作。我需要先调用 feedback 获得人工确认。"
B. 关键信息补全
当用户指令过于模糊,且本地知识库检索不到相关信息时,Agent 不再“盲猜”。
- AI Thought: "用户要求订票,但我不知道他偏好的出发时间。我应该调用 feedback 询问用户。"
C. 环境异常处理
当调用的 API 持续返回 401 错误或由于网络原因不可达时,Agent 可以请求管理员检查环境配置。
5、 最佳实践建议
- 明确引导词: 在 feedbackDescription 中明确告诉 AI 反馈者的身份(如“我是系统管理员”或“我是你的终端用户”),这有助于 AI 组织更合适的询问文案。
- 状态保持: 反馈模式通常伴随着长时任务。建议利用 Session 持久化 ReActTrace,确保人工在几小时后回复时,AI 依然能接上之前的思路。
- 配合规划模式: 规划模式(Planning)能让 AI 提前发现潜在的冲突,而反馈模式能在执行中处理突发情况。两者结合是构建工业级 Agent 的黄金组合。
总结
反馈模式将 AI 从一个“黑盒自动执行器”转变为一个“懂规矩的数字协作助手”。它不再单纯地追求自动化率,而是通过合理的“求助”来换取任务执行的确定性与安全性。