multi-agent系列【AutoAgent: A Fully-Automated and Zero-Code Framework for LLM Agents 2025 Feb】

背景知识

相关工作

LLM赋能的agents通过利用强大的语言理解和推理能力,通过工具调用与外部环境交互,彻底改变了人工智能系统。已经出现了一个丰富的的代理框架生态系统,其中突出的例子包括LangChain、AutoGPT、CAMEL、MetaGPT和OpenAgent等。这些框架已在不同领域展示了令人印象深刻的功能:CAMEL率先合作行为开发了基于角色扮演的通信,AutoGen为解决复杂问题开发了可定制的LLM组合,MetaGPT为软件工程任务集成了标准化操作程序,OpenAgent为专门的Web代理提供了一个综合平台,包括数据处理、插件集成、和Web交互。然而,利用这些LLM-Agent框架需要大量的编码技能和领域专业知识来构建有效的Agent,这极大地限制了非技术用户对它们的访问,并阻碍了Agent技术在不同领域的广泛采用。为了解决这一挑战,文章提出了一种新的LLM-Agent框架,通过自然语言交互实现Agent的自动生成、定制和编排,使Agent的开发更加民主化,使强大的Agent技术能够为用户所用,而不管他们的技术背景如何。

LLM赋能的agent

LLM-agents的任务求解过程可以形式化为马尔科夫决策过程(Markov Decision Process,MDP),为建模它们与环境的交互提供了一个全面的框架。定义为 M = ( S , A , O , P ( ⋅ ) , ε ) M=(S,A,O,P(\centerdot),\varepsilon) M=(S,A,O,P(),ε),MDP捕获了agent的状态空间 S S S、动作空间 A A A、观察空间 O O O、状态转移函数 P ( ⋅ ) P(\centerdot) P(),以及它可以与之交互的环境集合 ε \varepsilon ε。在每个时间步,LLM代理观察当前状态,基于其策略选择动作,与环境交互,并更新其状态,通常称为agent的“上下文”。从状态到动作的映射可以遵循两个主要范例:Tool-Use,其中agent利用外部能力,以及ReAct,其中agent仅基于其内部语言模型来生成下一个动作。这个MDP公式提供了一个强大的框架,用于理解、分析和设计LLM赋能的agent,能够处理各种复杂的、多步骤的任务。

广义多agent系统

多代理系统(multi-agent systems,MAS)背后的动机是为了克服单个agent在处理复杂问题的全部范围和细微差别方面的局限性。通过利用多个代理的不同能力和专业知识,MAS能够更有效地解决多方面任务的问题。MAS面临的关键挑战在于设计一个有效的任务转移机制,通过适当的转移行动组织不同的代理。我们将这种Agent组织机制定义为“MAS设计模式”。
在广义多agent系统中,存在多个agent,分别记为 π 0 : S 0 → A 0 , π 1 : S 1 → A 1 , . . . , π n : S n → A n . \pi_0 : S_0 \rightarrow A_0, \pi_1 : S_1 \rightarrow A_1, ... , \pi_n : S_n \rightarrow A_n. π0:S0A0,π1:S1A1,...,πn:SnAn.在每一个agent的动作集中,存在一个特殊的转移动作 A ^ i ∈ A i \hat A_i\in A_i A^iAi,它使得任务可以委托给其他Agent。
调度器-工作者机制
一种常见的设计是**调度器-工作者(Orchestrator-Workers)**范例,其中调度器调度任务并通过传输操作将子任务分发给工作者。作为子代理的工作者执行子任务,并通过传输操作将结果返回给调度器。为了提高MAS的泛化能力,研究者们设计了一个综合多agent系统,该系统使用一个专门的agent团队。这些agent在一个中央调度器agent的协作下协同工作。
工作流驱动机制
对于具有确定性步骤的任务,工作流驱动机制已成为一种特别有效的方法。值得注意的例子包括GPTSwarm,它将工作流建模为复杂数据操作的计算图,以及用于数学推理和代码生成的专用系统。
MAS中的工作流定义为 W = w i , j : π i → c k π j W=w_{i,j} : \pi_i \overset{c_k}{\rightarrow} \pi_j W=wi,j:πickπj,其中 π i \pi_i πi π j \pi_j πj表示代理, c k c_k ck是转移条件。有效的工作流设计包括根据下游任务定义代理之间的条件传递方程,确保平滑和协调的传输。常见的模式包括:Routing(通过序列引导任务)Parallelization(并发分发子任务)Evaluator-Optimizer(使用代理来评估和改进)。这些都可以在MAS中创建稳定和高效的任务求解。

全自动多agent系统

多代理系统和复杂工作流的成功设计和执行通常需要大量的专业知识和工程专业知识,AutoAgent的目标是完全自动化这一过程。关键的挑战在于无缝地弥合从高层次用户需求到有效MAS和工作流解决方案的实际实施的差距——所有这些都通过自然语言交互。

AutoAgent框架

AutoAgent被设计成LLM代理和通用AI助手的自动化操作系统。受现代计算机操作系统的启发,AutoAgent由关键组件组成,这些组件支持无缝的自然语言驱动的代理开发和任务执行,如下图所示。其Agentic System Utilities为复杂的代理驱动任务提供了基础构建模块,而LLM-Actionable Engine形成了中央大脑,理解输入并协调多代理合作。Self-Managing File System管理用户多模态数据的结构化存储和检索,Self-Play Agent Customization使用户能够通过自然语言生成专门的定制代理和工作流,而无需任何编码要求。
在这里插入图片描述

Agentic System Utilities

AutoAgent框架采用模块化的多代理体系结构来解决开发智能个人助理代理的关键挑战,这些智能个人助理agent能够无缝集成和协调从Web浏览和信息检索到数据分析和代码执行的各种功能。这种设计选择,其中包括专门的代理网络、编码和文件管理任务,以及协调代理分解和委托用户请求,使Agentic System Utilities作为一个通用的和可扩展的基础,可以适应广泛的用户需求,促进定制的、代理驱动的解决方案的快速开发。
Orchestrator Agent
Orchestrator Agent是与用户交互的主要接口。它接收来自用户的任务,对任务进行切换,将其分解为子任务,并使用切换工具将这些子任务委托给适当的子代理。一旦子代理完成了子任务,它也使用切换工具将结果返回给Orchestrator。基于任务完成状态,Orchestrator继续将下一个子任务分配给合适的代理。这个迭代过程一直持续到整个任务完成。具有切换机制的任务规划器是一种简单而有效的解决方案,无需复杂的提示来处理任务规划。
Web Agent
Web Agent提供了一组通用且可扩展的工具,使代理能够执行从常规Web搜索到文件下载等各种基于Web的任务。
Web代理可执行Web搜索、导航到页面、浏览内容和下载文件。我们将网页浏览行为抽象为10个高级工具(动作),如:click、web_search、visit_url等,agent可使用它们完成基于Web的任务。
Coding Agent
Coding Agent是代理的全面和通用的解决方案,用于处理各种代理驱动的任务。它使agent能够毫不费力地处理复杂的挑战,从数据分析和计算到机器学习、自动化和系统管理。这个无缝集成、功能丰富的agent作为所有代码相关活动的主要接口,抽象出复杂性以实现集中解决问题。从本质上讲,Coding Agent提供了一个安全的环境来探索、执行和与代码交互,以实现不同的目标。
Local File Agent
本地文件代理的主要目标是提供一组统一的工具来转换和分析各种本地多模态数据类型。这包括文本、视频、音频、电子表格和其他格式,以有效的方式帮助用户完成日常任务。Local File Agent可以使用一组统一的工具将文件转换为Markdown,并执行有效的分析,以协助日常任务。

LLM-Powered Actionable Engine

当CPU执行指令、管理资源并协调操作系统中的进程时,LLM-Powered Actionable Engine可以理解自然语言、生成计划并协调代理之间的任务。这可以实现无缝的人机协作和任务完成。我们利用LiteLLM通过类似OpenAI的接口来标准化LLM请求,支持来自各种提供商的100多个模型。对于代理协作,LLM接收直到时间 t t t的所有动作-观察对作为状态 s t s_t st以确定下一动作。这些对充当系统RAM,促进有效检索并实现语言驱动的系统协调。
我们基于LLM上下文生成反射(比如说actions),这可以大致分为两种不同的方法,利用语言模型的能力。
Direct Tool-Use Paradigm
这种方法适用于支持工具使用的商业LLM或LLM服务平台。这些LLM可以根据提供的工具集和当前状态直接生成要执行的解析的下一步工具,从而减少工具解析阶段的错误。然而,这种方法严重依赖于第三方平台能力的优化。
Transformed Tool-Use Paradigm
这种方法不依赖于LLM固有的工具使用能力。利用现代LLM的上级代码生成能力,我们将工具使用范式转化为结构化的XML代码生成任务。例如,<function=function_name><parameter=parameter_1>value_1</parameter>...</function>,然后解析此结构化输出以提取关键信息,如工具参数等。它提高了具有次优工具使用能力的商业模型的性能,并使开源LLM集成到系统中,提供更大的灵活性和定制性。

Self-Managing File System

AutoAgent中的文件系统是LLM代理可以检索和理解的矢量数据库。在我们的设计框架中,用户可以上传任何格式的文本文件(如,.pdf、.doc、.txt)或压缩文档和包含任何文本文件的文件夹。文件系统中的系统工具自动将这些文件转换为一致的文本格式,并将它们存储在矢量数据库中的用户定义集合中(使用save_raw_docs_to_vector_db工具)。这使代理能够自我管理其数据库内存,并使用query_dbanswer_query等工具执行高效准确的检索和生成。

Self-Play Agent Customization

为了允许用户为特定场景定制工具和代理或构建自己的多代理系统和工作流,它被设计为代码驱动的,可控的自编程代理框架。通过实现约束、错处处理机制和自定义的工作流,它支持受控的代码生成,促进工具、代理和工作流的创建。AutoAgent支持两种不同的模式:不使用工作流创建代理和使用工作流创建代理。

不使用工作流创建代理

构建有效的多代理系统通常需要特定领域的专业知识。然而,用户可能并不总是能够获得这一水平的专业知识。为了应对这一挑战,我们的AutoAgent提供了一个强大的基于工作流的模式,允许用户生成复杂的代理系统与最小的领域专业知识。在此模式下,用户提供所需代理的高级描述,例如代理的名称和预期代理功能的简要业务级别描述。然后,AutoAgent使用此输入自动生成适当的agent和必要的工作流,以协调其协作工作。这一切都是基于框架的当前状态完成的,包括可用的工具、代理和工作流。这种基于工作流的代理生成方法的关键步骤是:

  • 分析需求和现有组件:该过程首先在系统中现有工具和代理的背景下仔细分析用户的需求。这种深入的分析是使用专门的分析代理执行的,它有助于彻底评估可以用来满足用户需求的当前功能和资源。
  • 分析工具和结构代理:基于所执行的综合分析,系统然后仔细确定创建新工具的需要,仔细评估现有工具是否可以有效利用,并随后适当地构建多个代理之间的无缝协作。这确保了可用资源的最佳和综合利用,最终导致高效的代理系统设计。
  • 生成详细的XML代理规范:此步骤旨在生成结构化的XML代码,以准确地表示详细的代理创建需求。这种全面的XML表示捕获必要的信息,包括代理的功能、依赖关系和交互,以实现无缝和高效的后续代理生成过程。

使用工作流创建代理

当用户对MAS的工作流程和领域知识有特定要求时,AutoAgent允许定制方法。在此模式下,用户提供所需代理的描述,并指定他们希望创建的代理或工作流完成的任务。然后,AutoAgent使用有关目标任务的此信息不仅生成单个agent,还生成必要的工作流,以协调它们在实现指定目标方面的协作工作。
传统的基于图的方法通常需要严格遵守图论原则,这是LLM在生成工作流时面临的一项挑战。为了克服这些挑战,AutoAgent采用了事件驱动的方法,我们将每个代理的任务解决建模为事件。通过利用事件侦听和触发机制,AutoAgent实现了代理之间的无缝协作,与刚性图结构相比,提供了更大的灵活性和适应性。
创建新工作流的过程本身就是一个多代理工作流。Workflow Form Agent分析需求和现有的工具/代理,以确定是否需要创建新的代理,哪些代理应该形成工作流,以及事件之间的侦听和触发逻辑应该是什么。然后生成结构化的XML代码。
在解析阶段期间,鲁棒的错误检测机制验证所生成的工作流表单是否符合系统约束(例如,对on_start事件的约束)。如果不满足约束,则详细的错误消息将作为反馈发送回Workflow Form Agent,以便重新生成。如果满足约束,则工作流表单将传递到Workflow Editor Agent,该代理将创建新代理(如果需要),构造新工作流,并在任务上执行它。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

so.far_away

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值