在上篇文章《AI大模型实战篇:AIAgent设计模式–ReAct》中,风叔结合原理和具体源代码,详细介绍了ReAct这种非常有效的AIAgent设计模式。但是ReAct模式有一个非常突出的问题,就是冗余计算,冗余会导致过多的计算开销和过长的Token使用。
在本篇文章中,风叔介绍一种优化ReAct冗余问题的方法,REWOO。
一、REWOO的概念REWOO的全称是ReasonwithoutObservation,是相对ReAct中的Observation来说的。它旨在通过以下方式改进ReACT风格的Agent架构:
第一,通过生成一次性使用的完整工具链来减少token消耗和执行时间,因为ReACT模式的Agent架构需要多次带有冗余前缀的LLM调用;
第二,简化微调过程。由于规划数据不依赖于工具的输出,因此可以在不实际调用工具的情况下对模型进行微调。
ReWOO架构主要包括三个部分:
Planner:规划器,负责将任务分解并制定包含多个相互关联计划的蓝图,每个计划都分配给Worker执行。
Worker:执行器,根据规划器提供的蓝图,使用外部工具获取更多证据或者其他具体动作。
Solver:合并器,将所有计划和证据结合起来,形成对原始目标任务的最终解决方案。
下图是REWOO的原理:
Planner接收来自用户的输入,输出详细的计划TaskList,TaskList由多个Plan(Reason)和Execution(Tool[argumentsfortool])组成;
Worker接收TaskList,循环执行完成task;
Woker将所有任务的执行结果同步给Solver,Solver将所有的计划和执行结果整合起来,形成最终的答案输出给用户。
详细对比一下ReAct和REWOO,如下图所示。
左侧是ReAct方法,当User输入Task后,把上下文Context和可能的样本Example输入到LLM中,LLM会调用一个目标工具Tool,从而产生想法Thought,行动Action,观察Observation。由于拆解后的下一次循环也需要调用LLM,又会调用新的工具Tool,产生新的Thought,Action,Observation。如果这个步骤变得很长,就会导致巨大的重复计算和开销。
右侧ReWOO的方法,计划器Planner把任务进行分解,分解的依据是它们内部哪些用同类Tool,就把它分成同一类。在最开始,依旧是User输入Task,模型把上下文Context和Examplar进行输入。这里与先前有所不同的是,输入到Planner中,进行分解,然后调用各自的工具Tool。在得到了所有的Tool的输出后,生成计划结果Plan和线索,放到Solver进行总结,然后生成回答。这个过程只调用了两次LLM。
二、REWOO的实现过程下面,风叔通过实际的源码,详细介绍REWOO模式的实现方法。在手机端阅读源代码的体验不太好,建议大家在PC端打开。
第一步构建PlannerPlanner的作用是根据用户输入,输出详细的TaskList。
首先需要给Planner规定Prompt模板,包括可以使用的Tools,以及TaskList的规范。在下面的例子中,我们告诉Planner,“对于目标任务,要制定可以逐步解决问题的计划。对于每个计划,要指出哪个外部工具以及工具输入来检索证据,并将证据存储到变量Ethatcanbecalledbylatertools.(Plan,E2,Plan,…)
下面是根据给定的问题,Planner输出的TaskList。可以看到,Planner按照Prompt的要求给出了计划的每个步骤,以及需要调用的工具。
下图详细介绍了Planner、Worker和Solver的协作流程。
三、总结相比ReAct,ReWOO的创新点主要包括以下几个方面:
分离推理与观察:ReWOO将推理过程与使用外部工具的过程分开,避免了在依赖观察的推理中反复提示的冗余问题,从而大幅减少了Token的消耗。
模块化设计:ReWOO使用模块化框架,通过planer、worker和solver的分工合作,提高了系统的扩展性和效率。
效率提升:实验结果表明,REWOO不仅提升了准确率,还显著降低token消耗。
工具调用的鲁棒性:ReWOO在工具失效的情况下表现出更高的鲁棒性,这意味着即使某些工具无法返回有效证据,ReWOO仍能通过合理的计划生成和证据整合,提供有效的解决方案。
但是,REWOO的缺陷在于,非常依赖于Planner的规划能力,如果规划有误,则后续所有的执行都会出现错误。尤其是对于复杂任务,很难在初始阶段就制定合理且完备的计划清单。
作者:风叔,微信公众号:风叔云
本文由@风叔原创发布于人人都是产品经理,未经作者许可,禁止转载。
题图来自Unsplash,基于CC0协议。
该文观点仅代表作者本人,人人都是产品经理平台仅提供信息存储空间服务。





