AI初认识(agent中的SelfAsk、SelfReflection)

1 阅读4分钟

在AIAgent的实现过程中,SelfAsk和SelfReflection是两种关键的元认知(Metacognition)机制。它们让Agent不仅仅是一个“输入输出”的工具,而是能够模拟人类的思考过程:一边推理一边查资料,做完题还要回头检查一遍。

1. SelfAsk(追问思维)****

核心逻辑:将复杂问题拆解为子问题,并通过“追问”的方式引导搜索或推理,直到收集足够信息后给出最终答案。

实现原理:

1.问题拆解:Agent接收到原始问题后,判断是否需要追问。例如,接收到“法国的首都是什么,那里天气怎么样?”Agent会识别出这包含两个子问题。

2.工具调用(追问):Agent生成一个“追问”动作,比如调用搜索引擎或知识库。 第一问:“法国的首都是什么?”>得到答案“巴黎”。 第二问:“巴黎今天的天气怎么样?”>得到天气数据。

3.合并答案:将两个查询的结果合并,生成最终的自然语言回答。

代码示例(伪代码LangChain/ReAct风格):

Agent的思考过程(由LLM生成的思维链)

Thought:用户想知道法国首都的天气,我需要先知道法国首都是哪里,再查那里的天气。
Action:Search[法国首都]
Observation:巴黎
Thought:现在我知道了首都是巴黎,我需要查询巴黎的天气。
Action:Search[巴黎天气]
Observation:巴黎今天晴,1015度。
Thought:我已经收集到所有信息,可以回答用户了。
FinalAnswer:法国的首都是巴黎,今天巴黎天气晴朗,气温10-15度。

2. SelfReflection(复盘思维)

核心逻辑:在Agent执行完动作(或执行过程中)后,对自己的输出或行为进行评估、批评和修正,以提高准确率和可靠性。

实现原理:

1.结果评估:Agent生成初步答案后,通过另一轮提示(Prompt)或内置的评判模型,检查答案是否符合要求。 2.错误检测:检查是否存在幻觉(Hallucination)、逻辑不一致、缺失关键步骤或未遵循指令。 3.修正与重试:如果发现问题,Agent会调整策略,重新生成查询或修改答案。

  代码示例(伪代码):

第一次生成
Initial_Answer:"特朗普是美国总统。"假设是2023年之后,这个答案过时了
 
Reflection环节
Prompt:“请评估上述答案是否准确,是否符合事实(考虑时效性),如果有误,请指出并提供修正建议。”
Evaluation:“错误:特朗普已不是现任美国总统。现任总统是拜登。建议修正。” 

基于Reflection进行修正
Revised_Answer:"拜登是美国现任总统。"

3. 两者的区别(表格对比)

维度Self-Ask(追问思维)Self-Reflection(复盘思维)
核心目的信息获取与拆解:解决信息不足或复杂分解的问题。质量控制与优化:解决答案错误或质量不高的问题。
触发时机执行前/执行中:在生成最终答案之前,为了收集素材而进行。执行后/执行中:在生成初步结果之后,为了检查而进行。
主要动作拆解问题、调用工具(搜索/API)、追问细节。自我批评、验证事实、反思逻辑、修正输出。
类比人类侦探破案:不断追问“死者最后见的人是谁?”、“凶器是什么?”,收集线索。学霸检查试卷:做完题后,回头检查计算步骤,看有没有粗心写错。
输出结果一个基于多轮查询整合而成的答案。一个经过修正、比初版更优质的答案。

4. 两者的联系

虽然作用的时间点和目的不同,但两者在高级Agent架构中是相辅相成的,共同构成了Agent的“思考行动观察优化”循环。

1.串联工作(Pipeline) 一个复杂的任务通常需要先SelfAsk,再SelfReflection。 流程:Agent先通过SelfAsk收集资料并写出草稿>然后通过SelfReflection检查草稿中的错误>如果发现错误,可能触发新一轮的SelfAsk去查询缺失的信息。

2.共同提升鲁棒性: SelfAsk解决了“没东西写”的问题(缺乏上下文)。 SelfReflection解决了“写不对”的问题(缺乏准确性)。 两者结合,能让Agent在处理多跳问题(Multihop)时,既能找对资料,又能避免逻辑谬误。

3.在复杂Agent系统中的融合: 在一些高级框架(如AutoGPT、BabyAGI)中,SelfAsk被用来规划步骤,而SelfReflection被用来评估每个步骤的执行结果,从而决定是继续下一步还是回溯重做。