AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


XAgent:采用双循环运转机制,自主解决复杂任务的通用智能体
发布日期:2024-08-13 19:11:47 浏览次数: 1711


1 XAgent简介 

XAgent是一个开源、基于大型语言模型(LLM)的通用自主智能体,可以自动解决各种复杂任务。XAgent采用双环机制,外循环用于高层任务管理,起到规划(Planning)的作用,内循环用于底层任务执行,起到执行(Action)的作用。XAgent具有如下特点:   
  • 自主性:XAgent可以在无人类参与的情况下自动解决各种任务。
  • 安全性:XAgent支持安全运行,所有的行为都被限制在一个docker容器内,无需担心主机环境受到影响。
  • 可扩展性:XAgent支持可扩展,可以添加新的工具(甚至新的智能体)来增强智能体的能力。
  • GUI:XAgent支持通过GUI,或者使用命令行界面与智能体交互。
  • 与人类的合作:XAgent可以与人类合作解决任务。它不仅有支持在行进中遵循人类的指导来解决复杂的任务,而且在遇到挑战时还可以寻求人类的帮助。


图1 XAgent的工作流程图

2 XAgent实现原理 

2.1 规划(外循环)和执行(内循环) 

CAMEL专注于以任务为导向的角色扮演,包含一个AI助理(AI Assistant)和一个AI用户(AI User)。在多智能体系统接收到人类用户的初步想法和角色分配后,任务指定智能体将提供详细的描述,使想法更加具体化。然后,AI助理和AI用户将通过多轮对话合作完成指定的任务,直到AI用户确定任务完成为止。一方面,AI用户负责向AI助理提供指令,并引导对话朝着任务完成的方向进行;另一方面,AI助理则需要遵循AI用户的指示,做出回答并提供具体的解决方案。完整的角色扮演框架如图2所示。

在XAgent中,规划和任务执行过程通过双循环机制(外循环和内循环)进行编排。其本质上,外循环处理高层次的任务管理和分配,内循环专注于每个子任务的低层次执行和优化。

图2 XAgent实现机制

外循环

外循环作为高层规划器和整个问题解决序列的主要协调者,充当整个问题解决序列的管理。它的职责可以分解如下:

  • 初始计划生成:PlanAgent首先生成一个初始计划,为任务执行制定基本策略。该部分会将给定的复杂任务分解为更小、更易管理的子任务,其表现为一个任务队列,可以直接地执行。
  • 迭代式计划优化:在初始规划之后,PlanAgent通过从任务队列中释放出第一个任务,然后将该子任务传递给内循环。PlanAgent持续监视任务的进展和状态。在每个子任务执行后,内循环会返回来自ToolAgent的反馈。根据反馈,PlanAgent触发适当的处理机制,如优化计划或继续执行后续子任务。直到队列中没有剩余的子任务为止,外循环结束。

内循环

内循环负责执行外循环分配的各个子任务。基于外循环给定的子任务,内循环会指定一个合适的ToolAgent,确保任务达到预期的结果。内循环的关键点包括:

  • 智能体调度和工具获取:根据子任务的性质,派遣合适的ToolAgent,该Agent具备完成任务所需的能力。
  • 工具执行:ToolAgent首先从外部系统中获取工具以帮助完成任务。然后,智能体使用ReACT来解决子任务。ReACT会寻找最佳的一系列动作(工具调用)来完成子任务。
  • 反馈和反思:在一系列动作之后,ToolAgent可以发出一个名为“subtask_submit”的特定动作,以完成当前子任务的处理,并将反馈和反思传递给PlanAgent。这个反馈可以指示子任务是否成功完成,或者强调潜在的改进。

2.2 PlanAgent:动态规划和迭代改进

PlanAgent赋予智能体不断制定和修订计划的能力,以适应多变的环境和突发需求。这些能力对于确保灵活性、弹性和效率以应对未预见的挑战至关重要。PlanAgent专用于外循环,其通过生成初始计划和不断修订计划来实现这一目标。PlanAgent包含四个函数来优化计划:

  • 子任务拆分:使系统能够将特定的子任务分解为粒度更细、更易管理的单元。只有当前正在执行或尚未启动的子任务才有资格进行此操作。
  • 子任务删除:删除尚未开始的子任务。已经在进行中或已完成的子任务不具备删除资格。这确保了一定的灵活性,可以修剪多余或不相关的任务,以优化整体执行。
  • 子任务修改:修改子任务的内容。要修改的子任务不能是已经开始或已经完成,以保持整体计划的完整性。
  • 子任务添加:在特定子任务之后插入新的子任务。只能在当前处理的子任务或其后继任务之后添加子任务。这确保了新任务按顺序编排,简化了执行流程,并保持了一致性。

2.3 ToolAgent:在函数调用中协同推理和行动

如前所述,ToolAgent使用ReACT会寻找最佳的一系列动作(工具调用)来完成子任务。在每一轮中,智能体根据先前的交互生成一个动作,对于每个动作,在同一个函数调用中将智能体的推理和行动协同起来,即推理跟踪(“思考”)和将要执行的动作都被视为特定函数的参数。具体而言,每个(函数调用)具有以下组件:

  • 思考:智能体关于任务的洞察力的概括。
  • 推理:跟踪智能体通过的逻辑轨迹,以得出其思考。
  • 批评:捕捉智能体对其行动的自我反思,作为一个反馈回路。它强调潜在的疏忽或改进的领域。
  • 指令:根据推理决定智能体下一步要采取的动作。
  • 参数:列举要执行的动作的具体参数或细节。

2.4 ToolServer:多样化的支持工具

ToolServer包括三个关键组件:

  • ToolServerManager管理Docker容器(即节点)的生命周期,处理它们的创建、监控和关闭。当一个新会话开始时,管理器可以创建一个新节点。定期检查这些节点的状态,以确保它们健康运行。

  • ToolServerMonitor检查节点的状态,更新它们的状态,并确保它们有效地执行。如果一个节点在长时间内空闲,监视器可以停止它以节省资源。

  • ToolServerNode是执行单元,其中执行动作(如API调用、文件上传、工具检索等)。

3 XAgent总结

XAgent的实现逻辑更像是BabyAGI,依赖大模型做任务分解然后执行,这种实现的问题是任务分解的粒度:大模型往往会过度分解,简单的任务会无限复杂化,无法有效终止,从XAgent给出的实例来看,也无法避免。

XAgent的框架定义的不清晰:XAgent提供的不是一个SDK框架,是一个Web服务,这样开发者无法扩充修改;代码框架层面也不是很清晰,Agent没有抽象化,逻辑混乱,而且Memory目前还没有使用。

XAgent并缺乏多Agent的能力,例如多Agent的协作模式、通信模式和自定义等,其内部定了的多个Agent,但这些Agent更像是函数的封装。

XAgent定义给出的是通用智能体:从XAgent开发框架来看,本质是想通过Agent的任务分解能力加上集成更多的Tools的能力,将复杂任务有效的分解成细粒度的任务执行,但从当前的业界实现,BabyAGI,AutoGen都不是很理想,只能在有限的问题上可能效果可以,但还不是很稳定,完全依赖GPT4的能力,遇到专业性强的复杂问题,效果都不会很好,比如:狼人杀。

课程推荐:从0带你实操15个AI Agent项目系列课程 

0基础的你,想入门AI应用开发吗?你是否想过构建属于你自己的AI应用,却不知从何入手?

好消息来了,由多位资深AI应用开发专家共同打造的“AI入门实践”课程即将上线。该课程将会通过15个精心制作的项目和5场直播,从0教会大家如何去构建AI服务。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询