备注好友: 方向-学校/公司-姓名/昵称
【AIGC 先锋科技】交流群
许多以前的 AI 研究侧重于开发单模型以最大化其智能和能力,主要目标是提高特定任务上的性能。相比之下,本文探索了另一种方法:使用工作流来整合模型、数据来源和 Pipeline 以解决复杂和多样化的任务。
作者引入了 GenAgent ,这是一种基于 LLM 的框架,可自动生成复杂的工作流,与单模型相比具有更大的灵活性和可扩展性。
GenAgent 的核心创新在于同时表示工作流代码和逐步构建协作代理的工作流程。
作者在 ComfyUI 平台上实现 GenAgent,并提出了一个新的基准测试 OpenComfy 。
结果表明,在运行级和任务级评估中,GenAgent 都优于 Baseline 方法,展示出其生成复杂工作流的卓越效果和稳定性。该工作的项目页面位于 https://xyqwq.github.io/GenAgent。
1 Introduction
近期AI的发展被日益重要的协作AI系统的成功所定义,这些系统整合了多种模型和工具作为整体协作系统。ChatGPT Plus(OpenAI,2024年)的成功表明将诸如网页浏览、图像生成和代码执行等任务集成到一个单一的聊天代理的可能性。与传统AI模型作为单一实体的不同,协作AI系统整合多个AI组件,每个组件贡献独特的能力来解决复杂问题。向整合方向的转变对于实现最先进的结果至关重要,因为整合了多样AI功能的优势在一个统一框架内。
不幸的是,协作系统的架构和优化通常需要大量的人力专业知识。例如,各种协作系统采取了不同的方法:AlphaCode 2(AlphaCode团队,2024年)为代码问题生成高达100万个解决方案,然后过滤和评分。AlphaGeometry 通过语言模型迭代建议几何问题中的构造,并检查符号引擎产生的推导事实。尽管ComfyUI(2023年)设计得易于使用,但仍需要用户对各种生成模型组件的原理有一定的了解,以及精心设计工作流程。这引导出了一个关键的问题:作者能否开发一个类似于人类专家的智能代理,能够自主设计协作AI系统?
在本文中,作者将协作AI系统的自动化设计定义为自动工作流设计问题,如图1所示。一个工作流代表了一个协作AI系统的抽象高级概念。这些 Pipeline 是通过将AI相关的组件(例如AI模型、检索器和解外部工具)系统化地组织为分析数据、执行任务或提供输出的过程来构建的。
然而,协作AI系统的自动化设计工作流程面临着重大的挑战。首先,当前的工作流表示,如JSON或CoRE(Li等人,2024年),对于LLM代理来说,无法完全理解协作系统内的内在逻辑和依赖关系。其次,合理组织 Pipeline 并有效利用AI相关模块需要大量的专家知识和复杂的认知过程。仅依赖基本的提示策略,如连锁思维提示(CoT)( Wei等人,2022年)或检索增强生成(RAG)( Lewis等人,2020年),往往无法生成复杂的工作流程。
为了解决上述问题,作者引入了GenAgent,这是一个使LLM代理能够通过编写工作流代码来自主设计协作AI系统的全新框架。GenAgent的核心概念有两个方面:首先,将工作流程表示为代码,可以通过解释器可逆地转换为工作流程并作为协作系统执行。其次,构建一个多智能体系统,该系统协作学习现有工作流程并为一给定任务生成新工作流程。多智能体系统的核心是PlanAgent,负责根据任务指示全局计划工作流程。在收集所有组件的文档描述和收集的工作流程的代码示例后,RetrievalAgent将自动检索并学习有关给定任务所需关键信息的关键信息。CombineAgent和AdaptAgent逐渐编写代码构造可以满足指定任务的新工作流程。在任务完成时,PlanAgent执行完成动作来组织最终的工作流程。
作者在ComfyUI(ComfyUI,2023年)平台上实现了和测试了GenAgent框架。通过在ComfyUI中设计工作流并执行它们,GenAgent能够以高成功率灵活地完成各种生成任务。相比之下,常见的方法如CoT和RAG在设计复杂工作流程方面效果不佳。作者还观察到这种范式实现了高品质、灵活的生成和高可靠性、强健性。作者的贡献可以总结如下:
- 作者定义协作AI系统的自动化设计为一个工作流生成问题,并提出将工作流表示为代码以进行有效设计。
- 作者开发了GenAgent,一个使LLM代理能够自主设计协作AI系统的新颖框架。
- 作者在ComfyUI平台上实现了GenAgent,实现了针对各种生成任务的ComfyUI工作流生成的高质量和灵活性。实验结果表明,代码表示显著提高了LLM生成工作流程的成功率。此外,GenAgent在 workflow生成效率方面超过了常见的提示方法。关于相关工作
LLM Agents
知识增强代理(LLM agents)是新兴的一类自适应系统,它们利用LLM与外部工具互动,解决真实世界的问题。一方面,LLM代理利用LLM强大的认知和创造力能力,使其在没有人类干预的情况下适应各种新任务。另一方面,LLM代理可以访问广泛的的外部工具,如搜索引擎和数据库,弥补了LLM中专业知识的缺乏。
随着LLM代理的快速发展,研究行人已经提出了各种方法来提高其性能,包括思路提示链(Wei等人,2022)、自我一致性推理(Wang等人,2022)、检索增强生成、记忆机制、强化学习等。这些方法已经被证明在提高LLM代理在不同任务中的能力方面是有效的,从而加快了新型LLM代理的共同架构的发展。
基于精心设计的模块架构和互动机制,LLM代理可以应用于各种复杂任务,如网络导航、界面操作(Yang等人,2023;Xie等人,2023;2024;Cao等人,2024;Wu等人,2024)、代码生成、以及其他特定任务。利用代码生成的威力,LLM代理也可以用于推理、规划和决策。这些过去需要专家知识和人类干预的任务,现在可以使用高效且准确的LLM代理来完成。
LLM-based Collaborative AI Systems
基于模型的语言模型(LLM)可以被指示执行通用任务,这使得人们对基础模型的能力进行了更加强调的关注。然而,Zaharia等人(2024)指出,当前最先进的AI成果越来越是由协作系统而不是单一生成的,这一说法得到了多次证实(AlphaCode团队,2024年;Trinh等人,2024年;Lewis等人,2020年;Nori等人,2023年;团队,2023年)。Yuan等人(2024年)甚至设计了一种多智能体框架,其中融入了多个先进的视觉AI智能体,以模仿Sora(Brooks等人,2024年)演示的一般化视频生成方法。协作系统的优势显著。一方面,动态系统可以让通过搜索和获取等组件获取外部知识。另一方面,对于系统的控制和信任的改善比单独的模型更容易,因此任务可以更好地解决。
与AI模型相比,协作AI系统在设计、优化和运行方面带来了新的挑战。许多新的范式正在出现以应对这些挑战。使用组合框架是最热门的范式,它通过调用AI模型和其他组件构建应用程序(LangChain,2023年;LlamaIndex,2023年;AutoGPT,2023年;Hong等人,2023年;Willard和Louvelle,2023年;LMQL,2023年;Zheng等人,2023年;Wu等人,2023年;Chen等人,2023年)。系统优化是另一种方法。Khattab等人(2023年)提出了DSPy框架,该框架通过创建提示指令、少样本示例和其他参数选择自动调整 Pipeline 路径以最大化端到端性能。GPTSwarm(Zhuge等人,2024年)支持构建LLM代理人并以图的形式优化参数和连接作为整个系统。
3 Method
Workflow as the High-Level Abstract of the Collaborative AI System
协作AI系统是一个特定的操作框架,它通过协调多个相互作用组件(包括AI模型、检索器以及外部工具)来解决复杂的任务。一个协作、低 Level 且具体的AI系统对应于一个高 Level 和抽象的操作逻辑图,定义为协作AI系统的流程。一旦作者在抽象层面上建立了复杂的AI系统的流程,作者就可以将其编译为特定的AI系统,并由解释器可靠地执行该系统。因此,通过关注构建流程,作者可以在这种范式中有效地构建多种协作AI系统。
通常,流程可以被描述为有向无环图(DAG),其中必然包含顶点和有向边。在这里,作者定义:
- 顶点:顶点表示系统中的特定信息处理组件(例如AI模型、检索器 和 外部工具),它包含通过有向边连接的必要输入和输出接口。
- 有向边:有向边表示信息流的流动。一个顶点的入边代表它接收的外部信息,而出边表示它输出的信息。一个顶点可以有多个入边和出边,代表不同的信息路径。
通过构建DAG,作者可以高效地构建和编辑协作AI系统的流程。ComfyUI(ComfyUI,2023)是一个典型的示例,它将所有模块分解为单个原子模块,并在流程DAG中标准化它们的数据接口,从而提供了建立这样一个范式中协作AI系统理想的平台。
Representing Workflows with Code
工作流程在各个应用中广泛使用,有各种表示形式:流程图、JSON、元素列表和代码。
流程图是人工神经网络(NN)对工作流图表示的最直观且用户友好的方式之一,但不是对链式随机森林(LRF)的友好方式。”如图1(a)所示,流程图展示了ComfyUI(ComfyUI,2023)中的默认文本到图像工作流程,完全反映了ComfyUI前端如何与用户互动。然而,由于流程图本质上具有视觉性,它们很容易被标准LRF误解,因为它们无法解释视觉数据。尽管视觉语言模型(VLMs)可以阅读流程图,但由于其有限的视觉生成能力,它们在修改流程图方面存在困难。 JSON是LRMs表示结构信息的一种流行方法,但对于工作流有向无环图(DAG)表示并不是很好的方法.**Zhang等人在(2023)中提出使用JSON来表示数据分析的某些简单工作流程。对于复杂的工作流程,作者的实验表明,LRM使用JSON理解并生成它存在很大的缺陷,如图表2所示。这种困难可能源于大型语言模型(LRM)无法完全理解由JSON编码的复杂有向无环图(DAG)关系。由于LRM通常具有有限的长度上下文,这个问题可能会进一步加剧。
元素列表是LRM相比流程图或JSON文件更能理解工作流程的更自然的表现方式,但还不够完美.**元素列表更加紧凑,更接近自然语言,因此对LRM而言更易于接受。然而,元素列表强调符号表示,这破坏了工作流程内的直观依存关系。它们并没有明确显示流程图的拓扑顺序,这会导致LRM在工作流程变得相对复杂时理解与生成此格式的困难,如图表2所示。Li等人在(2024)中提出使用CoRE语言来表示工作流程,它可以被视为元素列表的文字版本。然而,CoRE语言并未解决元素列表固有的问题,并且需要对LRM进行额外的微调。
图3:GenAgent框架的架构。多个代理按顺序协作,以逐步生成工作流。PlanAgent接收任务指令,在每一步生成高级计划和行动决策。CombineAgent、AdaptAgent和RetrieveAgent分别处理不同的操作。代理配备了记忆,包括历史、引用和工作空间。RefineAgent在必要时负责调试。一旦PlanAgent决定结束生成过程,工作流将被提交给解释器执行。
"代码是稳定的表示形式,是LLMs理解和创建工作流程DAG的稳定表示。" 与先前的方法相比,作者主张使用代码提供更好的工作流程表示,如图2d所示。编程语言是图灵完整的,允许任何计算上可行的流程都可以得到等价表示。此外,它们提供了充分的神义信息,提升了可理解和可学习性,这利用了LLMs在代码生成方面的潜力。在本工作中,作者成功地用代码表示了流程。对于准确描述工作流程,需要专门的设计语言,以确保它们可以被精准地翻译成相应的代码片段,反之亦然。为尽可能减少新语言的开发成本,作者促使LLMs使用Python等语言的一部分,限制其仅包含基础操作和控制结构,同时禁止高级特性。工作流导向语言的开发留给未来工作。## 用GenAgent生成协作AI系统的工作流程
通过代码表示,作者可以促使LLM按照作者的任务指示为协作AI系统生成工作流程。在实践中,传统的基于提示的方法(如思维链条(CoT)(Wei等人,2022)和检索增强生成(RAG)(Lewis等人,2020),在流程复杂度增加时,无法稳定生成正确结果,如图1所示。为实现生成复杂流程的目标,作者提出GenAgent框架,其中代理共同完成工作流程生成任务。GenAgent主要由三个独立模块组成:内存、计划代理和操作。
内存 主要存储代理的最新状态,基于心理学理论(Atkinson,1968)。在这里,内存指的是工作记忆(Baddeley,1992),反映代理当前的情况:它存储代理最近采取的行动、中间结果、外部参考知识和内部推理的结果。作者主要将其分为三部分:
- 历史:历史主要存储计划代理采取的最近行动。计划代理可以通过历史来回顾过去行动并计划后续活动。
- 参考:参考主要包含检索代理从知识库中检索的最相关信息。检索代理通常根据当前内存状态检索最相关的信息,随后更新参考。
- 工作区:工作区存储当前的工作流程及其自然语言描述,保持当前工作状态完整和可理解。
计划代理 是GenAgent的核心,负责在任务指示下对工作流程进行全局计划。在每个步骤中,计划代理根据当前内存和任务指示生成一个具有动作决策的高级计划。
动作 代表计划代理可以选用的不同活动,每个动作的目标都是修改当前内存。计划代理有五个可能动作:
- Init: 规划代理选择一个现有工作流程来初始化内存,并根据任务指令给出一个多步骤计划。
- 组合:有一个专门的组合代理,负责执行组合操作。组合代理从参考中选择一个特定工作流程,并将其合并到当前工作流程代码中。在组合之后,一个精炼代理会精炼组合代理的输出,并在工作区中更新它。
- 适应:适应代理是负责执行适应操作的专业代理。适应代理根据内存和指令,适当地调整当前工作流程的详细信息。在适应之后,一个精炼代理会精炼适应代理的输出,并在工作区中更新它。
- 获取:有一个专门的获取代理,负责执行获取操作。获取代理从知识库中获取最重要的信息,并相应地更新参考。
- 完成:规划代理根据工作区中的当前工作流程,评估任务指令的完成状态。在任务完成之后,规划代理执行完成操作,以防止无限循环的发生。
生成代理通过多次规划和行动的迭代,基于任务指令稳定地生成工作流程代码,然后将其转换为标准工作流程。这种方法使得构建协作人工智能系统成为可能。
实验
Implementation Details
在理论上,GenAgent可以应用到任何通过设计和执行工作流程解决问题的高平台。在这项工作中,作者将在ComfyUI平台上实现GenAgent,以证明其概念。ComfyUI最初是为稳定的扩散模型设计的,其中多个模块通过 Pipeline 连接而形成一个可灵活高效生成的一组程序。在开源社区的共同努力下,ComfyUI已经扩展到支持各种模型和工具,使其可以解决广泛的生成任务。ComfyUI使用工作流程来描述生成 Pipeline 。典型的ComfyUI工作流程包括数十个节点和链接,它们通过连接形成复杂的DAG。相比之下,早期工作的基准任务,如 NCEN-QA 和 OpenAGI ,可以通过工具链在几步内解决问题。因此,自动设计ComfyUI工作流程更具价值和挑战性。
工作流程和工作与代码之间的双向转换是GenAgent的关键特征之一。初学者使用的ComfyUI工作流程以JSON格式存储。作者实现了一个解析器,从结构化的JSON文件中提取描述在工作流程中整个DAG。在图中,节点被视为函数调用,而链接在函数之间传递变量。根据拓扑顺序,DAG被转换为一序列的分配和函数调用,这正好形成了作者在第三节中提到的代码。代码遵循简化版的Python语法,只涉及类实例和函数调用。尽管代码不能直接执行,但它提高了可读性并压缩了上下文长度。同样,实现了一个反向解析器,将代码转换回结构化JSON文件,这样生成的Workflow可以在ComfyUI中执行。
考虑到生成ComfyUI工作流程的困难性,需要一个强大的主体LLM。在这项工作中,作者选择了最新版本的GPT-4o,其中实现了不同角色,例如PlanAgent、CombineAgent和AdaptAgent,这些角色由GPT-4o充当。一方面,GPT-4o已经收到了更新的在线知识,使其更容易理解。另一方面,它具有自然语言和编程语言的强大多模式能力,这是GenAgent框架的必要特征。实践表明,GPT-4o可以在不需要额外微调的情况下充分利用GenAgent的潜力。
Benchmark Evaluation
为了评估GenAgent的有效性,作者提出一个基于ComfyUI平台的基准,名为OpenComfy。OpenComfy包含了20种不同的任务,覆盖了各种类型的生成任务,如图像编辑、视频生成以及一些复合任务。所有任务均通过ComfyUI中的本地节点或常见扩展进行验证,其中最具有挑战性的任务需要24个节点构建预期的流水线。作者将每个节点的详细文档提供给代理以帮助其更好地理解内在逻辑。作者还提供了一组包含12个带有手动标注的基本工作流示例,以帮助代理学习这些示例。具体任务列表请参见附录B。
作者实现了4个竞争性代理作为基准,如下所示:
- 零样本代理 遵循零样本学习范式,在收到任务要求和生成工作流时直接进行操作。
- 少样本代理 遵循少样本学习范式。它从固定示例中学习,根据任务要求生成工作流。
- CoT代理 遵循Chain-of-Thought(CoT)范式(Wei等人,2022年),该范式需要多个中间步骤来生成工作流。
- RAG代理 遵循检索增强生成(RAG)(Lewis等人,2020年)范式,它从检索的示例中学习,根据任务要求生成工作流。
- GenAgent 是作者的 Proposal 框架,其中多个代理根据任务要求共同学习和生成工作流。
所有代理在3.2节中以代码表示的工作流程。作者计算了两种类型的通过率作为指标。第一种是通过率发生在将代码解析为JSON格式时,反映生成的代码是否具有语法正确性。然后解析的工作流将在ComfyUI中执行,通过第二种通过率反映工作流是否逻辑正确且可以成功执行。这两种通过率不考虑最终结果的质量,但程度上揭示了代理生成工作流的有效性和稳定性。每个任务将进行5次评估,总共进行100次运行。除了运行 Level 的结果外,作者还计算了任务 Level 的结果,即如果任一运行成功,则认为任务通过。OpenComfy基准上的评估结果如表1所示。
从表1中作者可以看出,GenAgent在运行 Level 和任务 Level 的评估中均优于所有基准。零样本代理生成的任何有效工作流,因为LLM缺乏基本知识。少样本代理和CoT代理的性能有限,因为它们不能从相关示例中学习。RAG代理的性能相对较好,但与GenAgent相比其稳定性较低。此外,其性能受到检索示例数量和质量的限制。因此,作者声称GenAgent可以生成更复杂的工作流,具有更好的有效性和稳定性。图4显示了对于任一运行来说,GenAgent的任务级成功率随着运行数的增加而变化的趋势,揭示了不同运行之间的随机性。成功率在第一运行的4次运行中急剧上升,但在所有5次运行后趋于一个较高的水平。
Ablation Studies
在第三部分第3.2节中,作者论证了代码是相对于其他格式最适用于工作流表示。在这个部分,作者进行了一项消融研究来验证这一主张。作者实现了三种不同的GenAgent变体,其中工作流分别以JSON、元素列表和代码表示。请注意,由于对语言模型来说实现流程图是不可行的,因此在本文中未实现流程图。每个变体仍然在OpenComfy基准测试上进行评估,每个任务进行了5次测试。作者报告了第四部分第4.2节的相同指标。结果如表2所示。
图4:展示了GenAgent的pass@k性能,即在多少次运行后成功完成的比例。
作者可以看到,用代码表示工作流实现了所有指标中的最佳性能。JSON表示的性能正如预期那样糟糕,因为理解和生成复杂的JSON结构对LLMs来说极具挑战性。列表表示由于缺乏语义和拓扑信息,无法实现令人满意的性能。因此,作者得出的结论是,对于GenAgent来说,用代码表示工作流是至关重要的。
Generation Examples
除了定量的评估,作者还展示了一些定性结果以证明 GenAgent 的有效性和通用性。作者从 OpenComfy 基准中选取了两个不同的任务,这些任务可以用直观的方式展示出 GenAgent 能够生成复杂的 ComfyUI 工作流并完成各种生成任务。
图5 展示了第一个生成示例。该任务提供一个女孩弹吉他的照片,需要生成一个老年人在森林中弹吉他的图像,其姿态与女孩相同。此外,任务要求指定预期的风格和分辨率。在技术上,一种可能的解决方案是使用姿势估计器与 ControlNet 模型将姿态信息注入作为条件。实际上,GenAgent 学会了这些技术并生成了一个简单的 13 个节点的流程。最终生成的图像通过执行 ConfyUI 中的流程来生成,在参数和语义上都满足了任务要求。
图6 展示了第二个生成示例。与第一个任务相比,该任务更为复杂,需要生成遵循给定布达佩斯风格的照片风格的伦敦图像,并将其转换为视频。考虑到模型受分辨率和平帧速率限制,该任务还需要进行上采样和插值以形成高质量视频。为了解决这个问题,GenAgent 生成了一个 22 个节点的流程和复杂的连接,并利用了多种模型,如 SVD、ESRGAN 和 RIFE。流程最后生成了一个具有预期内容和质量的视频。作者将在项目页面上展示所有完整的流程和相应的图像或视频。
5 Conclusion
在这项工作中,作者介绍了构建协作AI系统的趋势,以解决更为复杂和多样化的任务系统化。作者指出,自动设计协作AI系统可能是实现高级机器智能的关键。为实现这一可能性,作者提出了一种名为GenAgent框架的方法,可让LLM代理通过生成工作流自动设计协作系统。
GenAgent的核心思想在于两个方面:用代码表示工作流,以及使用协作代理构建工作流。作者认为,专用编程语言是最适合表示工作流的方式,它简洁、完备、语义丰富且友好于LLM。
作者阐述了GenAgent的整体架构,其中多个代理逐步协作生成工作流。为验证作者提出的GenAgent框架的有效性,作者在ComfyUI平台上实现并应用它。作者还提出OpenComzy基准,以进行全面的评估。
结果表明,与所有 Baseline 相比,GenAgent在运行 Level 和任务 Level 评估中都表现出色,这表明GenAgent能够生成更复杂、更有效和更稳定的工作流。此外,作者介绍了生成的流程实例和最终结果。
作者相信,只要提供统一的接口,GenAgent就可以应用于设计任何协作AI系统,提供了一个实现通用任务和实现AGI的潜在解决方案。