之前我们提到过,在ReAct中,agent会在输出结果后先观察结果,判断是否符合人物标准,不符合就重新进行一轮操作,直到输出令agent满意的答案为止,关于这个反思机制,具体的如下。
自我反思机制
自我反思机制分为三个阶段:
-
原始输出:模型生成初步回答,不施加过多限制,提供基础材料。类似人类写作的第一稿,目的是"有东西可改"。
-
反思与评估:模型扮演"批判者"角色,检查第一轮输出,评估事实准确性(检查回答中是否包含明显的事实错误,数据是否准确,引用是否恰当)、逻辑连贯性(评估推理过程是否存在漏洞,论证是否合理,结论是否从前提自然得出)、结构合理性(检查是否遗漏了关键步骤、边界条件或重要信息,内容是否全面)和格式与表达(评估输出格式是否符合要求,是否条理清晰而非冗长段落)。
-
修改与重写:基于反思结果,模型生成更完善的回答,修正错误,优化结构,补充细节,提升整体质量。
这种反思架构是为了避免agent在输出过程中,因为判断失误,局部数据引导方向错误或者幻觉等等,使得结果可能包含事实错误,推理过程存在逻辑漏洞,输出格式乱序无法阅读和理解等。且就算回答接近完美,也可能存在优化空间,agent可以通过这个机制迭代优化,是输出不仅仅是天才式地一点就通,而是形成一个成熟的方案或结果。
反思机制的架构,是让一个agent作为回答者,另一个作为批判者,这样分离开两种功能,就能在提示词设计上,让前者尽可能地偏向于试探各种方向,以免漏过最佳方案,具体是否可行以及可能的漏洞就交给另一个agent去检查,也就相当于在每轮思考中强行加多一次保证和优化。更关键的是,这样分离职能,还可以让我们为这两个角色选取不同的LLM,也能进一步避免因为同一种训练方式,参数差不多,导致批判者认同前一个回答者的漏洞而忽略。