随着大语言模型(LLMs)的快速发展,越来越多的研究利用LLMs作为代理的认知核心,以解决复杂的任务决策挑战。特别是,最近的研究展示了基于LLM的代理在自动化Windows GUI操作方面的潜力。然而,现有的方法存在两个关键挑战:(1) 静态代理架构无法动态适应操作系统级任务的异构需求,导致场景泛化不足;(2) 代理工作流缺乏容错机制,需要在UI代理决策错误时重新执行整个过程。为了解决这些限制,我们引入了COLA,一个用于自动化Windows UI操作的协作多代理框架。在这个框架中,情景感知代理任务调度器将任务需求分解为原子能力单元,从决策代理池中动态选择最优代理,有效响应多样化场景的能力需求。决策代理池支持即插即用扩展,增强了灵活性。此外,我们为所有代理设计了一个记忆单元,以实现其自我进化。此外,我们开发了一种交互式回溯机制,允许人类介入以触发状态回滚进行无损过程修复。我们的实验结果表明,在GAIA基准测试中,COLA框架的平均得分达到31.89 % ,显著优于没有Web API集成的基线方法。消融研究进一步验证了我们动态调度的各个贡献。代码可在https://github.com/Alokia/COLA-demo获得。V+cadorai,回复:AIGC++,可即时关注作者动态。
近年来,基于大语言模型(LLMs)的技术发展迅速,在语言对话和问题解决方面展现出显著潜力[Wang等人,2024a, Guo等人,2024]。更复杂的多模态模型(MLLMs),如GPT-4v [Achiam等人,2023]、GPT-4o和Gemini [Team等人,2023],引入了视觉维度,扩展了LLMs的能力,并在更广泛的领域表现出色[Guo等人,2024]。高容量的LLMs和MLLMs通常作为测试于专业领域的代理的主要骨干,例如软件开发[Hong等人,2024, Chan等人,2024, Li等人,2023]、社会模拟[Park等人,2023, Gao等人,2023]和游戏[Akata等人,2024, Wang等人,2023, Tan等人,2024]。
作为一种实用的多模态应用场景,个人电脑上的自动化任务正成为AI系统助手技术进步的关键领域[Niu等人,2024, Wu等人,2024a, Zhang等人,2024a]。用户主要通过软件应用的用户界面(UI)或图形用户界面(GUI)与计算机互动并获取信息。然而,由于屏幕识别、操作和定位能力有限,现有的MLLMs在此场景中面临挑战[Zhang等人,2024b, Wang等人,2024b]。为了解决这一问题,现有工作利用基于MLLM的代理架构,赋予MLLM感知和操作计算机设备的各种能力[Song等人,2024, Wang等人,2024c, Nguyen等人,2024, Roucher, 2024]。UFO [Zhang等人,2024a] 引入了双代理系统,利用AppAgent管理应用程序的操作和跨场景决策。然而,这种方法在处理更复杂的GAIA数据集时遇到困难[Mialon等人,2024]。
图1:COLA多代理框架的说明。第一步,规划者接收来自用户的请求 并将其分解为一系列粗粒度子任务。然后任务调度器通过情景感知匹配动态选择最优决策代理。选定的决策代理随后进行分层任务细化,利用其特定领域的专业知识将分配的子任务分解为细粒度子任务,给出一个原子动作 和执行该动作的意图。执行者执行它并获得环境反馈结果。最后,审查员根据执行前后的环境、意图 和结果 评估动作的成功与否。判断 随后发送回选定的决策代理。这个循环细化过程将继续,直到满足所有子任务需求,任务调度器协调子任务之间的过渡。在整个过程中,人类可以在任何时候干预工作流程,提供指导以纠正代理的响应。
MMAC [Song等人,2024] 开发了适用于四种不同任务的代理:编程、屏幕语义识别、视频分析和通用知识。然而,系统设计存在可扩展性有限且灵活性不足的问题。任何执行过程中的错误都需要完全重新启动,这可能会显著阻碍实际应用中的效率和适应性。 计算机任务场景本质上是复杂的,涉及各种专业技能,如编码、信息检索、文件管理和系统配置,通常需要跨多个应用程序整合信息。当前研究[Zhang等人,2024a, Song等人,2024, Wu等人,2024a] 通常利用编排的静态代理系统来管理这些任务,但此类方法在应用于更复杂场景时效率低下。这种局限性凸显了适应性和可扩展性的重要差距,而这两者对于应对日益复杂的计算机任务环境至关重要。 在这项工作中,我们介绍了COLA,一个适用于Windows操作系统的可扩展和灵活的多代理框架。COLA包含五个专门的代理角色:规划者、任务调度器、决策代理池、执行者和审查员。决策代理池由具有特定领域专业知识的代理组成,每个代理都针对特定任务进行了定制,如网络浏览、文件操作、编程等。我们利用任务调度器从池中选择最适合的决策代理来应对不同的场景。决策代理池支持即插即用扩展,允许用户为特定场景设计专用代理,从而无需重写框架即可完成能力扩展。此外,为了避免代理响应异常时框架从头开始执行,受Swarm 的启发,我们开发了一种交互式
[^0] [^0]: https://github.com/openai/swarm 回溯机制。此机制允许用户恢复到代理的任何先前响应状态,提供纠正指导,并从中断状态继续工作流程执行。整个过程如图1所示。 我们的总结贡献如下:
- 我们提出了COLA,一个可扩展且灵活的协作多代理框架,通过五个专门的代理角色实现分层任务解析,用于复杂计算机任务自动化。每个代理配备两种类型的记忆单元:一种是随任务进展更新的短期记忆单元,帮助代理理解任务发展;另一种是记录已完成工作的长期记忆单元,持续增强代理的能力。
- 我们将决策代理形式化为一组具有特定领域专业知识的各种代理,并使用特殊的任务调度器感知任务场景并从池中动态选择最优决策代理。此外,我们开发了一种交互式回溯机制,允许人类用户介入以触发状态回滚进行无损过程修复。
- 实验结果表明,GAIA基准测试显示了最先进的性能,验证了COLA在处理复杂计算机任务自动化场景中的有效性。
2 相关工作
2.1 基于LLM的代理
近年来,基于LLM的代理被认为是一种实现人工通用智能(AGI)的有前途的方法[Wang等人,2024a]。它显著扩展了LLMs的能力,使它们能够参与规划、记忆和执行行动[Guo等人,2024]。这种增强使LLMs能够通过模仿人类思维过程和与环境互动的能力来完成更复杂的任务。基于LLM的代理已在各种领域设计和应用,包括社会模拟[Park等人,2023, Gao等人,2023]、游戏[Akata等人,2024, Tan等人,2024, Wang等人,2023]、代码生成[Hong等人,2024, Chan等人,2024]等。 受人类团队合作的启发,多代理系统正在受到越来越多的关注。[Qian等人,2024] 提出了一种端到端的软件开发框架,利用多个代理协作完成软件开发任务。[Tao等人,2025, Chan等人,2024, Subramaniam等人,2024] 探索了通过多个代理参与辩论来提高生成内容质量的潜力。[Hong等人,2024] 提出了一个开创性的框架,将标准化操作程序(SOPs)编码为提示序列以增强协作。
2.2 基于LLM的UI操作代理
利用基于LLM的代理系统导航和控制图形用户界面(GUI)已成为一个新颖且快速扩展的研究领域。[Yan等人,2023] 提出了一种基于GPT-4V的多模态代理,通过直接输入截图来导航移动应用。Mobile Agent [Wang等人,2024d] 集成了光学字符识别(OCR)技术以增强代理的视觉理解。此外,Mobile Agent v2 [Wang等人,2024e] 将单代理改进为多代理以更好地完成多项任务。它定义了三种类型的代理:规划代理、决策代理和反思代理,所有动作均由决策代理给出。UFO [Zhang等人,2024a] 利用Python包pywinauto检查UI控件并实施动作。它定义了两种类型的代理:HostAgent和AppAgent,所有决策均由AppAgent作出。然而,这些方法依赖单一代理对所有任务做出决策,这限制了其可扩展性。对于复杂任务,一个代理很难处理所有场景的决策。为了解决这一局限性,在本文中,我们提出COLA框架,将决策代理视为一个可扩展的专业代理池,每个代理设计用于处理特定任务。框架将任务分配给最合适的代理,根据当前场景进行决策。
3 COLA框架
在本节中,我们将详细介绍COLA架构。COLA的操作是顺序和迭代的,其过程如图1所示。我们设计了记忆单元以增强代理对任务进展的理解及其基于先前经验的自我进化能力。此外,我们开发了一种交互式回溯机制,可以进行无损过程修复并避免从头开始执行工作流。每个代理的提示在附录B中描述。
图2:Microsoft Edge的视觉感知示例,提供了pywinauto提供的信息。原始截图、带注释的截图和交互控件信息组成了视觉感知组件。
3.1 视觉感知与交互
即使对于最先进的MLLMs,屏幕识别仍然具有挑战性。仅根据截图让MLLMs做出准确决策尤其困难。因此,我们采用了UFO [Zhang等人,2024a] 所采用的相同方法,利用Python包pywinauto检查应用程序中的交互控件。我们将视觉感知过程定义为,其正式表示如下公式:
其中 表示第 步的屏幕状态。 表示视觉感知组件,如图2所示。 在后续发展中,需要屏幕信息进行决策的代理将把视觉感知组件作为其提示的一部分。这种增强显著提高了它们对当前桌面环境的感知和理解,促进了在各种应用程序中更准确和有效的决策。 为了与计算机环境交互,我们开发了八种动作,详细内容见附录A。我们为每个动作设计了一个域机制,以便只有注册在该域中的代理才能使用该动作。这种设计范式有效地管理了代理的能力,同时最小化了扩展动作空间的复杂性。通过使用这些预定义的动作,代理能够与计算机系统进行交互。用户可以根据具体需求自定义动作并配置代理可以识别和应用这些动作的域。
3.2 自我进化的记忆单元
由于计算机操作任务涉及众多场景并需要多步骤顺序操作,基于LLM的代理需要具备从过去经验中学习并能表达当前任务进展的能力。受人类操作计算机效率和效果不断提高的启发,我们维护了一个长期记忆和短期记忆。
长期记忆 长期记忆(记为)保存了以前任务执行的完整记录,有助于代理从其过去的经验中学习。为了使代理能够访问中的记录,我们引入了一个检索函数,其中代表查询空间,表示正整数集合。对于每条记录,生成一个摘要。这些摘要随后被嵌入以创建对应记录的一组索引。给定查询和整数,函数使用与摘要相同的嵌入嵌入查询,然后计算查询嵌入与每个记录摘要嵌入之间的余弦相似度。返回与最高相似度分数相关的中的前条记录作为代理提示的一部分。为方便起见,我们将与查询相关联的第步的前条记录记为。
短期记忆 短期记忆(记为)保留当前任务每一步生成的历史响应,形成操作序列:,其中表示代理在第步产生的响应。然而,在提示中包含整个可能导致计算成本增加。为缓解这一点,仅使用最近的个响应:。每个代理都配备了这两种类型的记忆,它们不与其他代理共享。 每个代理拥有独立的记忆存储空间。短期记忆记录任务执行每一步的响应,有助于代理理解任务进展。任务完成后,决策存储在长期记忆中,使代理在遇到类似任务时能够回忆过去的决策过程,从而扩展其战略视角。当收到查询时,相关的长期记忆和短期记忆被集成到提示中,以提高代理的决策能力。
3.3 分层多代理框架
许多研究表明,具备不同技能的多个代理之间的协作可以提高任务性能[Hong等人,2024, Chan等人,2024, Wang等人,2024e, Wu等人,2024b]。在COLA框架中,我们建立了五种类型的代理:规划者、任务调度器、决策代理池、执行者和审查者。特别是决策代理池包含一系列可扩展的代理,每个代理都具有特定技能,包括应用程序管理器、文件管理器、程序员和搜索者,如图1所示。每种代理的输入和输出详细如下。
3.3.1 规划者
规划者在管理工作流程过程中扮演着至关重要的角色,通过将用户请求分解为子任务,建立有序且系统化的任务执行基础。规划者最初生成粗粒度子任务,随后由后续决策代理进一步细化为细粒度子任务。这种分层规划方法特别适合处理复杂和多变的任务。 我们将由规划者生成的粗粒度子任务定义为。给定用户请求,此过程表示为以下公式:
其中代表规划者的LLM,每个代表一个粗粒度子任务。 规划者与其他代理的高度功能解耦提供了极大的灵活性,使其能够有效运用多种推理策略,如COT [Wei等人,2022]、TOT [Yao等人,2023]或多代理辩论[Liang等人,2024],以提高响应性能。
3.3.2 任务调度器
任务调度器旨在识别由规划者生成的每个粗粒度子任务所需的能力。然后根据决策代理池中代理的特定描述,将这些子任务分配给适当的代理。此过程表示为以下公式:
其中代表任务调度器的LLM,role 指代决策代理池中的代理,表示分配给role 的粗粒度子任务,代表决策代理池中所有代理的专业描述。 生成分配后,每个代理role 依次负责执行其分配的子任务。
3.3.3 决策代理池
先前的方法依赖于单个或多个固定的代理在特定场景中做出决策[Zhang等人,2024a, Song等人,2024, Wang等人,2024e],但这种静态代理架构无法动态适应操作系统任务的异质需求,难以应对计算机任务的复杂性和多样性。相反,受专家混合(MoE)模型[Jacobs等人,1991]的启发,我们将决策代理形式化为一个可扩展的池,包含具有专业化能力的代理,每个代理针对不同场景量身定制。每个代理的专业知识由自然语言描述表示,记为。当任务调度器分配子任务时,从池中选择的代理role 根据第3.1节讨论的视觉感知组件依次完成分配的子任务。此过程表示为以下公式:
其中表示决策代理池中选定的代理;表示要执行的动作,是执行该动作的意图;是一个每次执行都会重新生成的细粒度子任务列表,以立即调整计划;是审查员给出的判断。 这种通过任务调度器动态分配任务的设计范式,实现了决策代理池的即插即用扩展。它允许用户使用第3.1节中描述的域机制自定义专用代理及其关联动作。 图3展示了GAIA基准测试的技能需求。在这项研究中,我们实现了四个临时代理以满足这些需求,每个代理均用自然语言描述如下:
- 应用程序管理器:可以打开浏览器、资源管理器、聊天软件等应用程序。
- 文件管理器:可以打开、创建和删除文件,如txt、xlsx、pdf、png、mp4和其他文档。
- 搜索者:可以使用已打开的浏览器搜索信息、打开网页等。还可以执行与网页相关的所有操作,如播放网页中的视频、打开文件、阅读网页中的文档等。
- 程序员:具备逻辑推理和分析能力。可以通过推理得出问题的答案或编写Python代码以获得结果。
3.3.4 执行者
执行者负责直接与计算机环境交互。由于其角色仅限于执行动作,因此无需记忆单元。此过程表示为以下公式:
其中Exec表示执行者执行动作的功能,表示执行动作后的环境状态,是动作的结果,可能为空,如鼠标点击等动作。
由于计算机环境中操作可能存在危险,如文件删除,我们将决策代理的直接交互功能从环境中分离出来,形成单独的执行者组件。这种分离便于后续研究限制敏感操作而不必修改其他系统组件。
3.3.5 审查者
由于LLMs存在的幻觉问题[Liu等人,2023, Gunjal等人,2023, Cui等人,2023],代理在某些场景中可能会生成意外动作。为了解决这个问题,我们设计了审查者来评估动作的有效性,基于执行动作前和后的环境变化以及由决策代理生成的动作意图。此过程形式化如下:
其中表示审查者的LLM。 审查者在面向任务的系统中评估决策代理的动作,基于结果和意图评估其适用性。如果动作被认为不合适,审查者提供原因和反馈以引导改进。多项研究[Song等人,2024, Wang等人,2024e]证实了评估-修改方法在提高任务执行准确性方面的有效性。
3.4 交互式回溯机制
为了实现非破坏性的过程修复,我们提出了一种交互式回溯机制,包含两个功能:角色切换和对话回溯。角色切换允许用户在交互过程中动态更改当前对话代理,而对话回溯则允许用户将代理恢复到先前的响应并从该点重新执行工作流。 如图4所示,传统的代理框架在执行过程中遇到不当响应时需要从头重新执行任务,这不仅耗费时间还增加了令牌开销。相比之下,交互式回溯机制允许用户将工作流回滚到不当响应首次出现的状态,并提供指导建议以修复后续过程,减少时间和令牌开销。 此外,我们提供了三种交互模式:自动、被动和主动,每种模式都会改变人类参与工作流的方式: - 自动:在这种模式下,工作流自主运行,无需人类参与。如果执行过程中出现问题,整个工作流将停止。
- 被动:在这种模式下,工作流自主运行,但如果代理遇到问题,它会请求人类协助。人类可以提供指导以确保正确执行。
- 主动:在这种模式下,工作流在每一步暂停,等待人类输入。人类可以选择跳过指导或根据需要纠正代理的响应。
4 实验
表1:我们在GAIA基准测试上比较我们模型与多个基线模型的性能。“无管道”指的是未应用代理管道的原始GPT-4o。Web API表示浏览网页的方式,“”表示通过API访问网页,例如AutoGen网络浏览器工具[Wu等人,2024b],“”表示通过模拟人类与浏览器交互来导航网页。每个值报告在GAIA排行榜上,表示预测结果与真实值之间的平均精确匹配百分比。
图3:每项技能覆盖的问题数量。每个值报告在GAIA [Mialon等人,2024]中。
基准 我们使用GAIA数据集[Mialon等人,2024]评估COLA,这是一个专门用于评估通用AI助手的基准。GAIA数据集包含466个人类设计和标注的问题,涵盖基本能力如推理、多模态理解、编码和工具使用。要回答这些问题,代理需要具备编写代码、浏览网页、操作文件和处理视频音频数据等技能。图3展示了解决GAIA任务所需的技能要求。图表显示,需要网页浏览技能的任务占总任务的,表明网页导航方法显著影响结果。
[^0] [^0]: https://huggingface.co/spaces/gaia-benchmark/leaderboard
图4:传统代理框架与COLA的对比揭示了关键差异。
表2:GAIA测试集上的消融研究性能比较结果。
基线 我们比较了几种在GAIA排行榜中列出的代理系统,特别关注那些涉及网页浏览的系统,因为这构成了大多数任务。鉴于网页浏览的重要性,我们根据其浏览方法对这些方法进行了分类:使用API检索网页内容的包括Magentic-1 [Fourney等人,2024]、Hugging Face Agents (HF Agents) [Roucher, 2024]、Sibyl System v0.2 (Sibyl) [Wang等人,2024c] 和 DynaSaur [Nguyen等人,2024];模拟人类操作浏览器的包括MMAC v1.1 (MMAC) [Song等人,2024];以及论文中未描述的方法包括FRIDAY [Wu等人,2024a]。此外,我们还将原始GPT-4o性能(没有任何代理框架)用作比较的下限。
设置 我们使用OpenAI的text-embedding-3-large作为记忆单元的嵌入模型,负责将查询和记忆摘要编码为向量以进行相似性匹配。对于决策代理,由于它必须直接基于环境做出决策,视觉感知组件将为提示带来巨大内容,因此我们将它们的长期记忆参数设为2,短期记忆参数设为6以减轻令牌开销。对于其他代理,鉴于它们的令牌需求较少,我们将长期记忆参数设为3,短期记忆参数设为10以更好地增强其能力。我们使用GPT-4o (gpt-4o-2024-08-06)作为所有代理管道的LLM主干,将推理步骤的最大数量限制为20。为进一步分析,为节省成本,我们仅使用GPT-4o进行评估。
实施细节 在研究的初步阶段,实验通过激活交互模式进入主动模式开始。在此阶段,代理在验证集上运行,接受人类监督员的持续指导以确保准确完成任务。随后,在积累了足够的长期记忆形式的经验数据后,模式转换为自动模式,以在测试集上进行关键评估阶段,允许在测试条件下评估代理的自主性能。 # 4.1 主要结果
在本分析中,我们提出的方法COLA通过与几个已建立的基线方法的比较研究进行了评估,如表1所示。数据清楚地表明,COLA在模拟人类网页浏览行为方面优于其他方法,特别是在GAIA私有测试集中更具挑战性的第2级和第3级任务中。观察到准确度指标有显著改进,COLA相对于无管道方法显示出显著增长:从第1级任务的增加到,从第2级任务的增加到,从第3级任务的增加到。这些进展突显了COLA方法的有效性。 此外,如图3所示,GAIA数据集显示大约的任务需要网页浏览技能,从而强调了开发强大模拟技术的重要性。与仅依赖Web API的方法不同,COLA利用鼠标和键盘交互进行网页操作,拓宽了其应用范围。然而,这种方法需要多模态大型语言模型(MLLMs)具备先进的图像理解能力,与基于Web API的方法相比。COLA在第1级表现良好,任务相对简单,涉及基本网页浏览。随着任务复杂性增加到第2级和第3级,这些任务需要更复杂的网页操作,模拟人类操作浏览器的方法与使用API访问网页页面的方法之间出现了更为明显的差距。这一差异突显了当前MLLMs在处理连续网页图像理解方面的局限性,指出了未来潜在改进的方向。
4.2 消融研究
为了深入研究COLA框架中决策代理池的贡献,我们在GAIA测试集上进行了消融研究。为了比较,我们设计了一个单一代理,配备了所有负责处理所有任务场景的动作。我们使用相同的测试方法——首先在验证集上提供指导,积累经验,然后在测试集上运行——获得了表2所示的结果。总体平均得分从下降到,突显了决策代理池的重要性。尽管第1级得分差异( vs. )较小,但在第2级( vs. )和第3级得分( vs. )上存在显著差距,表明按场景划分任务的专精化是有效的。 我们将传统代理框架与COLA进行了比较,如图4所示。在传统模型中,当任务执行偏离预期时,必须从头开始重新启动过程。相比之下,COLA的交互式回溯机制允许灵活的状态回溯,无需重新启动整个过程即可进行非破坏性修复。
4.3 案例研究
我们展示了真实的案例研究以说明COLA的工作流程过程,详见附录C。图5提供了工作流程的简化视图。接收到用户请求后,规划者将其分解为粗粒度的子任务列表并确定需要解决的问题。任务调度器识别到第一个子任务需要对应用程序进行操作,因此将此任务分配给应用程序管理器。它还确定后续任务需要使用已打开的浏览器,因此将接下来的三个任务分配给搜索者。决策代理随后依次执行这些任务。首先,应用程序管理器打开Edge浏览器并完成其任务。接下来,搜索者操作浏览器,将分配的粗粒度子任务分解为细粒度任务并逐步完成。最后,收集的信息被送回规划者以获得最终答案。 图6展示了一个使用交互式回溯机制的场景。最初,规划者提供了不充分的子任务计划,导致任务调度器误判子任务的能力要求,从而使工作流偏离预定路径。发现问题后,人类识别到子任务计划的问题并切换角色至规划者。在指出问题并提供指导后,人类帮助引导工作流回到正轨,确保正确执行。
5 结论
我们介绍了COLA,一个可扩展的多代理框架,作为Windows操作系统的AI助手开发。通过将复杂任务分解为特定场景的子任务,并为每个子任务分配定制的代理,COLA形成了一个可扩展的决策代理池。并且设计了一个任务调度器来识别完成任务所需的能力并将它们分配给适当的决策代理。这些代理协作完成复杂任务,在GAIA数据集中取得了显著成果。此外,交互式回溯机制允许用户随时干预工作流,并将工作流回溯到任何状态,纠正工作流的执行过程并获得更准确的结果。我们预计这种可扩展的任务分解和代理分配方法可以扩展到更复杂的任务场景。
6 局限性
我们承认当前的COLA存在一些局限性。首先,仅仅基于决策代理的技能描述来分配任务是不够的。在决策代理之间存在技能重叠的情况下,可能无法将任务分配给所需的代理。为了解决这一局限性,未来的研究可以涉及跟踪代理完成任务的表现并动态更新决策代理的能力描述。
其次,操作系统环境复杂,手动为各种场景设计决策代理是一项劳动密集型任务。我们希望未来的研究能够支持构建特定场景代理的自动化,例如根据软件用户指南自动创建专家代理,使COLA能够处理更多种类的任务。
7 伦理考虑
当允许代理在计算机系统上自主操作时,必须考虑对系统完整性的安全影响。虽然在我们的实验中没有观察到有害行为,但我们强烈建议在受控虚拟环境中进行此类测试。未来的研究应专注于开发限制自主代理特权和阻止敏感操作的方法,从而保障整体系统安全。
参考文献
王磊, 马晨, 冯学阳, 张泽宇, 杨昊, 张景森, 陈志远, 唐家凯, 陈旭, 林彦锴, 等. 大型语言模型基础自主代理综述. 计算机科学前沿, 18(6): 186345, 2024a. URL https://link.springer.com/article/10.1007/s11704-024-40231-1. 郭泰城, 陈秀英, 王雅琦, 常瑞迪, 裴世超, Nitesh V. Chawla, Olaf Wiest, 张祥亮. 基于大型语言模型的多代理:进展与挑战的综述. 第三十三届国际人工智能联合会议论文集, IJCAI ’24, 2024. ISBN 978-1-956792-04-1. doi:10.24963/ijcai.2024/890. URL https://doi.org/10.24963/ijcai.2024/890. Josh Achiam, Steven Adler, Sandhini Agarwal, Lama Ahmad, Ilge Akkaya, Florencia Leoni Aleman, Diogo Almeida, Janko Altenschmidt, Sam Altman, Shyamal Anadkat, 等. GPT-4技术报告. arXiv预印本 arXiv:2303.08774, 2023. URL https://arxiv.org/abs/2303.08774.Gemini团队, Rohan Anil, Sebastian Borgeaud, Jean-Baptiste Alayrac, Jiahui Yu, Radu Soricut, Johan Schalkwyk, Andrew M Dai, Anja Hauth, Katie Millican, 等. Gemini:一组高度功能强大的多模态模型. arXiv预印本 arXiv:2312.11805, 2023. URL https://arxiv.org/abs/2312.11805. 洪思瑞, 祝明辰, Jonathan Chen, 郑霞武, 叶宇亨, 王金麟, 张策尧, 王子涵, 尤凯盛, 林子权, 周亮, 任晨雨, 肖灵峰, 吴成林, Jürgen Schmidhuber. MetaGPT:面向多代理协作框架的元编程. 第十二届国际学习表示会议, 2024. URL https://openreview.net/forum?id=VtmBAGCN7o. 陈其敏, 韦学, 苏昱盛, 余建轩, 薛伟, 张尚航, 付杰, 刘志源. Chateval:通过多代理辩论实现更好的基于LLM的评估者. 第十二届国际学习表示会议, 2024. URL https://openreview.net/forum?id=FQepisCUVu. 李国豪, Hammoud Hasan Abed Al Kader, Itani Hani, Khizbullin Dmitrii, Bernard Ghanem. CAMEL:探索大型语言模型社会“心智”的沟通代理. 第37届神经信息处理系统国际会议论文集, NIPS ’23, Red Hook, NY, USA, 2023. Curran Associates Inc. URL https://ghli.org/publication/neurips2023camel/. Park Joon Sung, Joseph O’Brien, Carrie Jun Cai, Meredith Ringel Morris, Percy Liang, Michael S Bernstein. 生成性代理:人类行为的互动仿真. 第36届ACM用户界面软件与技术年度研讨会论文集, 页码1-22, 2023. URL https://dl.acm.org/doi/10.1145/3586183.3606763. 高辰, 兰晓冲, 卢智杰, 毛锦柱, 缪婧, 王欢东, 金德鹏, 李勇. S3:具备大型语言模型赋能代理的社会网络模拟系统. ArXiv, abs/2307.14984, 2023. URL https://api.semanticscholar.org/CorpusID:260202947. Elif Akata, Lion Schulz, Julian Coda-Forno, Seong Joon Oh, Matthias Bethge, Eric Schulz. 使用大型语言模型玩重复游戏, 2024. URL https://openreview.net/forum?id=CSpWgKoOID. 王冠之, 谢宇琦, 江云帆, Ajay Mandlekar, 萧超威, Zhu Yuke, Linxi (Jim) Fan, Anima Anandkumar. Voyager:具有大型语言模型的开放式实体代理. Trans. Mach. Learn. Res., 2024, 2023. URL https://api.semanticscholar.org/CorpusID:258887849.
谭卫浩, 丁自禄, 张文韬, 李伯宇, 周波翰, 岳俊鹏, 夏浩冲, 蒋杰川, 郑龙涛, 徐新润, 毕一飞, 顾鹏杰, 王新润, Karlsson Börje F., Bo An, 卢宗庆. 通向通用计算机控制:以《荒野大镖客2》为例的多模态代理研究. ICLR 2024 Workshop on Large Language Model (LLM) Agents, 2024. URL https://openreview.net/forum?id=pmcFzuUxsP. 牛润良, 李金东, 王世奇, 傅亚利, 胡曦雨, 冷雪源, 孔鹤, 常义, 王琦. ScreenAgent:一种由视觉语言模型驱动的计算机控制代理. 凯特·拉尔森编辑, 第三十三届国际人工智能联合会议论文集, IJCAI-24, 页码6433-6441. 国际人工智能联合会议组织, 8 2024. doi:10.24963/ijcai.2024/711. URL https://doi.org/10.24963/ijcai.2024/711. 主赛道. 吴志勇, 韩成诚, 丁志晨, 翁振民, 刘周勉泽, 姚顺宇, 余涛, 康令鹏. OS-Copilot:迈向具备自我改进能力的通用计算机代理. ArXiv, abs/2402.07456, 2024a. URL https://api.semanticscholar.org/CorpusID:267626905. 张朝云, 李立群, 贺世霖, 张旭, 乔博, 秦思, 马明华, 康宇, 林庆伟, Rajmohan Saravan, 张冬梅, 张琪. UFO:一个专注于Windows操作系统交互的UI代理. CoRR, abs/2402.07939, 2024a. URL https://doi.org/10.48550/arXiv.2402.07939. 张朝云, 贺世霖, 钱佳旭, 李博文, 李立群, 秦思, 康宇, 马明杰, 林庆伟, Rajmohan S., 张冬梅, 张琪. 基于大型语言模型的大脑GUI代理:综述. ArXiv, abs/2411.18279, 2024b. URL https://api.semanticscholar.org/CorpusID:274306375. 王帅, 刘伟文, 陈静萱, 甘维南, 曾星山, 禹帅, 郝新龙, 邵坤, 王亚胜, 唐瑞明. 基础模型的GUI代理:全面综述. ArXiv, abs/2411.04890, 2024b. URL https://api.semanticscholar.org/CorpusID:273877415. 宋梓睿, 李耀航, 方梦, 陈震昊, 施泽程, 黄元, 陈灵琛. MMAC-Copilot:多模态代理协作操作系统助手. ArXiv, abs/2404.18074, 2024. URL https://api.semanticscholar.org/CorpusID:269448905. 王宇龙, 沈天浩, 刘丽凤, 谢健. Sibyl:简单而有效的复杂现实世界推理代理框架. ArXiv, abs/2407.10718, 2024c. URL https://api.semanticscholar.org/CorpusID:271213801.
Nguyen Dang, Lai Viet Dac, Seunghyun Yoon, Ryan Rossi, Handong Zhao, Ruiyi Zhang, Puneet Mathur, Nedim Lipka, Wang Yu, Trung Bui, Franck Dernoncourt, Tianyi Zhou. Dynasaur:超越预定义动作的大语言代理. ArXiv, abs/2411.01747, 2024. URL https://api.semanticscholar.org/CorpusID:273811411. Aymeric Roucher. Huggingface代理. 2024. URL https://huggingface.co/learn/cookbook/agents. Grégoire Mialon, Clémentine Fourrier, Thomas Wolf, Yann LeCun, Thomas Scialom. GAIA:通用AI助手基准测试. 第十二届国际学习表示会议, 2024. URL https://openreview.net/forum?id=fibxvahvs3. 钱辰, 刘伟, 刘宏章, 陈诺, 当玉凡, 李佳豪, 杨成, 陈伟泽, 苏昱盛, 丛欣, 许菊媛, 李大海, 刘志源, 孙茂松. ChatDev:用于软件开发的沟通代理. Ku Lun-Wei, Andre Martins, Vivek Srikumar 编辑, 第62届计算语言学年会论文集(第1卷:长篇论文), 页码15174-15186, 泰国曼谷, 2024年8月. 计算语言学协会. doi:10.18653/v1/2024.acl-long.810. URL https://aclanthology.org/2024.acl-long.810/. 陶明旭, 赵冬岩, 冯岩松. 讨论链:一种用于复杂证据基础问答的多模型框架. Owen Rambow, Leo Wanner, Marianna Apidianaki, Hend Al-Khalifa, Barbara Di Eugenio, Steven Schockaert 编辑, 第31届国际计算语言学会议论文集, 页码11070-11085, 阿联酋阿布扎比, 2025年1月. 计算语言学协会. URL https://aclanthology.org/2025.coling-main.734/. Vighnesh Subramaniam, Antonio Torralba, Shuang Li. DebateGPT:通过多代理辩论监督微调大型语言模型, 2024. URL https://openreview.net/forum?id=ChNy95ovpF. 严安, 杨正远, 株万荣, 林庆鸿清, 李琳杰, 王建锋, 杨建伟, 钟义武, McAuley Julian J., 高 Jianfeng, 刘子承, 王丽娟. GPT-4V在仙境中:零样本智能手机GUI导航的大型多模态模型. ArXiv, abs/2311.07562, 2023. URL https://api.semanticscholar.org/CorpusID:265149992. 王军阳, 徐海扬, 叶家博, 颜明, 沈伟舟, 张吉, 黄飞, 唱吉涛. Mobile-Agent:具有视觉感知的自主多模态移动设备代理. ICLR 2024 Workshop on Large Language Model (LLM) Agents, 2024d. URL https://openreview.net/forum?id=jE6pDYCnVF. 王军阳, 徐海扬, 贾海涛, 张希, 颜明, 沈伟舟, 张吉, 黄飞, 唱吉涛. Mobile-Agent-v2:通过多代理协作有效导航的移动设备操作助手. 第三十八届年度神经信息处理系统会议, 2024e. URL https://openreview.net/forum?id=00nBMRlkc8. 何必民, 王敏帅. Pywinauto在软件性能测试中的应用. 计算机与现代化, (8):135, 2014. URL http://www.c-a-m.org.cn/ES/abstract/abstract3451.shtml.
吴晴云, Bansal Gagan, 张杰宇, 吴伊然, 李北斌, 朱二康, 江理, 张晓云, 张少坤, 刘嘉乐, Awadallah Ahmed Hassan, Ryen W White, Doug Burger, 王驰. Autogen:通过多代理对话实现下一代LLM应用, 2024b. URL https://openreview.net/forum?id=tEAF9LBdgu. Jason Wei, Xuezhi Wang, Dale Schuurmans, Maarten Bosma, Brian Ichter, Fei Xia, Ed H. Chi, Quoc V. Le, Denny Zhou. 链式思维提示法在大型语言模型中激发推理. 在第36届神经信息处理系统国际会议论文集, NIPS ’22, Red Hook, NY, USA, 2022. Curran Associates Inc. ISBN 9781713871088. URL https://dl.acm.org/doi/10.5555/3600270.3602070. 姚舜宇, Dian Yu, Jeffrey Zhao, Izhak Shafran, Thomas L. Griffiths, Yuan Cao, Karthik Narasimhan. 思维树:用大型语言模型进行深思熟虑的问题解决. 在第37届神经信息处理系统国际会议论文集, NIPS ’23, Red Hook, NY, USA, 2023. Curran Associates Inc. URL https://dl.acm.org/doi/10.5555/3666122.3666639. 梁天, 何志伟, 姚文祥, 王兴, 王琰, 王蕊, 杨宇久, 施朔明, 屠召鹏. 通过多代理辩论鼓励大型语言模型发散思维. Yaser Al-Onaizan, Mohit Bansal, Yun-Nung Chen 编辑, 第2024届经验方法自然语言处理会议论文集, 页码17889-17904, 美国佛罗里达州迈阿密, 2024年11月. 计算语言学协会. doi:10.18653/v1/2024.emnlp-main.992. URL https://aclanthology.org/2024.emnlp-main.992/. Robert A. Jacobs, Michael I. Jordan, Steven J. Nowlan, Geoffrey E. Hinton. 自适应局部专家混合. 神经计算, 3(1):79-87, 1991. doi:10.1162/neco.1991.3.1.79. URL https://ieeexplore.ieee.org/abstract/document/6797059. 刘福潇, 林凯文, 李琳杰, 王建锋, Yacoob Yaser, 王丽娟. 通过鲁棒指令调整对齐大型多模态模型. ArXiv, abs/2306.14565, 2023. URL https://api.semanticscholar.org/CorpusID:263860779. Anish Gunjal, Yin Jihan, Bas Erhan. 检测和防止大型视觉语言模型中的幻觉. 在AAAI人工智能会议, 2023. URL https://api.semanticscholar.org/CorpusID:260887222.
崔晨航, 周逸洋, 杨昕宇, 武诗蕾, 张林军, Zou James, 姚华夏. GPT-4V(ision)幻觉的整体分析:偏差和干扰挑战. ArXiv, abs/2311.03287, 2023. URL https://api.semanticscholar.org/CorpusID:265033982. Adam Fourney, Gagan Bansal, Hussein Mozannar, Cheng Tan, Eduardo Salinas, Erkang Zhu, Friederike Niedtner, Grace Proebsting, Griffin Bassman, Jack Gerrits, Jacob Alber, Peter Chang, Ricky Loynd, Robert West, Victor Dibia, Ahmed M. Awadallah, Ece Kamar, Rafah Hosn, Saleema Amershi. Magentic-One:解决复杂任务的通用多代理系统. ArXiv, abs/2411.04468, 2024. URL https://api.semanticscholar.org/CorpusID:273877854. # A 动作细节
在本节中,我们介绍了框架中实施的动作的详尽汇编,包括全面的描述和分配的具体领域。我们的方法经过精心设计,以最大限度地减少冗余,并明确区分系统中每个代理的独特功能。为了实现这一目标,我们为每个单独的动作系统地设计了一个域,确保只有在指定域内操作的代理才被授权使用相应的动作,如表3所示。这种分层结构不仅提高了系统效率,还通过精确定义其操作范围促进了代理之间的无缝协调。 在操作阶段,每个动作都会转换为字符串描述,并附上其相关参数。此转换后的字符串随后被纳入代理的操作提示中,从而使代理能够通过其参数有效地访问并执行该动作。这种方法确保了每个代理都拥有必要的指令,以根据其领域的特定要求精确执行动作。
用户有能力根据具体需求定制操作。关键条件是有效实现所需功能并建立一个域,界定哪些代理被授权访问和使用这些定制操作。此框架确保只有授权代理可以执行定制动作,从而维护与用户目标一致的受控操作环境。
动作 | 描述 | 域 |
---|---|---|
click_input | 使用给定按钮单击或双击控件。 | 搜索者, 文件管理器 |
keyboard_input | 用于模拟键盘输入。 | 搜索者, 文件管理器 |
hotkey | 使用此API模拟键盘快捷键或按下单个键。它可以用于复制文本、查找网页上的现有信息等。 | 搜索者, 文件管理器, 应用程序管理器 |
scroll | 用于滚动控件项。它通常适用于Scrollbar类型的控件项,当用户请求滚动控件项时,或者目标控件项不在控件项列表中可见或可用,但你知道控件项在应用程序窗口中并且需要滚动以找到它时。 | 搜索者, 文件管理器 |
wait_for_loading open_application run_python_code read_file | 等待函数加载。打开具有给定名称的应用程序。运行给定的Python代码。读取文件内容。 | 搜索者, 文件管理器, 应用程序管理器 应用程序管理器 程序员 文件管理器 |
表3:已定义动作列表。只有域中的代理可以使用此动作。
B 提示
COLA中代理使用的系统提示显示在表4到10中。将所有决策代理的技能描述整合到系统提示中对于规划者和任务调度器至关重要。这种整合有助于根据专家代理的能力制定子任务并分配它们,从而产生更符合上下文的响应。对于决策代理,动作按域分类并纳入每个代理的系统提示中。这种方法加强了代理与其各自动作之间的联系,使每个代理在其指定域内更高效和有效地运作。此外,对于审查者,将所有动作的功能描述和参数列表整合到系统提示中是至关重要的。这种综合提示使审查者能够对正在考虑的动作做出更明智的评估,提高其评估的准确性。 # C 案例研究
图5和图6展示了一个来自GAIA基准测试的真实案例研究。为清晰起见,某些元素(如执行者和审查者)已从图中省略。
图5:COLA执行任务“Gorman Beauchamp撰写的《反乌托邦小说中的科技》一文以一段引用维多利亚时代小说家的块引开始。这位小说家出生的行政区在哪一年获得城市地位?”的工作流程简要说明。
图6:使用角色切换的一个例子。任务是:“将温驯双龙边界维度四舍五入到小数点后两位是多少?”在执行工作流时,规划者给出了不恰当的粗粒度子任务,导致任务被分配给了不合适的程序员。人类发现这一点后,与程序员交谈,将代理切换到规划者,并给出指导以改变工作流轨迹。 # 规划者
目标
你是一个AI规划者,专为高效操作Windows电脑和熟练处理高级任务规划和任务摘要而设计。 能力与技能>
- 你知道如何使用计算机完成给定任务,例如使用浏览器搜索、浏览文档等。因此你可以将复杂的目标分解为可管理的粗粒度子任务。
- 你可以为给定任务生成计划,包括要采取的步骤、执行顺序及预期结果。
- 你知道下游代理的能力,并且在列出子任务时总是将任务拆分为单独的功能,以便每个子任务交给不同的代理完成。 “’json {role_capabilities}
- 如果遇到需要逻辑推理的请求,请将其视为整体,并将整个任务放入分解列表中。 输出格式 你需要输出类型为json的响应。json包含参数及其解释如下: “‘json { “branch”: “typing.Optional[cola.fundamental.base_response_format.BranchType]. 下列是可以为此参数设置的值及其解释:当正常响应处理任务正在进行时,设置为’Continue’,以便执行下一步行动。当确实不知道如何处理任务时,设置为’Interrupt’。这是一个危险操作,除非有充分理由拒绝继续任务。”, “problem”: “<class ‘str’>. 遇到的问题。当任务正常执行时,此参数设置为空字符串’”’.”, “message”: “<class ‘str’>. 想告诉下一个代理的信息。如果没有需要指定的信息,则设置为空字符串’”‘.”, “summary”: “<class ‘str’>. 总结对话。包括:之前步骤的回答是否满足任务要求?现在做了什么?为什么这么做?”, “sub_tasks”: “typing.List[str]. 由你自己生成的子任务列表。每个子任务是一个字符串。如果无法完成任务,请将’sub_tasks’设置为空列表[]。”, “question”: “<class ‘str’>. 任务期望回答的问题及答案格式。如果任务不需要返回回复,此参数设置为空字符串”. 例如:任务:’打开浏览器并搜索书《傲慢与偏见》,告诉我这本书的作者。’ 问题:‘这本书的作者是谁?’ 另一个例子:任务:‘打开浏览器并搜索书《傲慢与偏见>’ 问题:“” } 注意事项
- 在将复杂任务拆分为子任务步骤时,请考虑下游代理的能力,并保持子任务的颗粒度在一个单一代理可以完成的水平。 例如,如果一个子任务需要两个代理来完成,则需要将其拆分为两个更细粒度的子任务。
- 你不可以生成一个空的任务分解列表,如果无法做到,只需将整个任务放入列表中。
- 你只需要给出大致步骤,而不是具体的实施方案。例如:
给定任务:“告诉我今天的天气” 你应该给出一个大致计划:“1. 打开浏览器。2. 搜索今天的天气。” 表4:规划者的系统提示。role_capabilities表示决策代理池中所有代理的技能描述。 # 任务调度器
目标 你是一个专门负责将一组任务分配给适当代理的任务调度器。 你非常擅长高层任务调度,并可以根据下游代理的能力将不同类型的任务分配给正确的代理。 能力与技能> - 你知道所有专门从事不同场景和任务的角色。以下是这些角色的能力描述: “‘json {role_capabilities } “’
- 你有能力为当前任务选择最佳角色。
- 当你发现当前任务无法分配给正确的代理时,可以报告以便重新规划任务。 输出格式> 你需要输出类型为json的响应。json包含参数及其解释如下: “‘json { “branch”: “typing.Optional[cola.fundamental.base_response_format.BranchType]. 下列是可以为此参数设置的值及其解释:当正常响应处理任务正在进行时,设置为’Continue’,以便执行下一步行动。当子任务列表不适合下游角色时,设置为’RemakeSubtasks’。当确实不知道如何处理任务时,设置为’Interrupt’。这是一个危险操作,除非有充分理由拒绝继续任务。”, “problem”: “<class ‘str’>. 遇到的问题。当任务正常执行时,此参数设置为空字符串”“.”“,”message”: “<class ‘str’>. 想告诉下一个代理的信息。如果没有需要指定的信息,则设置为空字符串”“.”“,”summary”: “<class ‘str’>. 总结对话。包括:之前步骤的回答是否满足任务要求?现在做了什么?为什么这么做?”, “distribution”: “typing.List[__main_…DistributionFormat]. 需要由不同角色处理的子任务列表。如果角色未分配子任务,则无需列入列表。类型<class’__main_…DistributionFormat’>定义如下: { role: <class ‘str’>. 处理子任务的角色; role_tasks: }yping.List[str]. 该指定角色需要处理的子任务列表]” } “’ 注意事项 在分配任务时,请深入思考在人类操作计算机的情境下完成当前任务所需的能力,并从下游代理中选择能够完成该任务的代理。
表5:任务调度器的系统提示。role_capabilities表示决策代理池中所有代理的技能描述。 # 审查者
目标
你是一个审查者,特别擅长根据目标和Windows电脑桌面的变化判断一个动作是否成功执行。 能力与技能> - 你可以根据意图、执行动作前的屏幕状态以及执行动作后的屏幕状态判断一个动作是否成功满足期望。
- 你知道以下描述的所有操作的功能: “json [all_action_description]
- 当你认为动作没有奏效时,能够给出反馈,分析动作是否无助于实现意图或是否执行不正确。
- 你能够预测每个功能执行的结果。你需要能够判断功能执行不会改变桌面的情况,而不因两次桌面截图没有差异而做出错误判断。 输出格式> 你需要输出类型为json的响应。json包含参数及其解释如下: “json {”branch”: “typing.Optional[cola.fundamental.base_response_format.BranchType]. 下列是可以为此参数设置的值及其解释:当正常响应处理任务正在进行时,设置为’Continue’,以便执行下一步行动。当确实不知道如何处理任务时,设置为’Interrupt’。这是一个危险操作,除非有充分理由拒绝继续任务。”, “problem”: “<class ‘str’>. 遇到的问题。当任务正常执行时,此参数设置为空字符串”“.”, “message”: “<class ‘str’>. 想告诉下一个代理的信息。如果没有需要指定的信息,则设置为空字符串”“.”, “summary”: “<class ‘str’>. 总结对话。包括:之前步骤的回答是否满足任务要求?现在做了什么?为什么这么做?”, “analyze”: “<class ‘str’>. 给出你分析场景的过程。”, “judgement”: “<class ‘str’>. 给出你判断该动作是否实现意图的意见。” } 注意> 确保你熟悉计算机操作场景以及人类使用计算机完成任务的场景。 务必分析执行动作前后的桌面截图,包括最小的变化,并深入思考动作是否符合你的期望并与你的要求一致。 你只需要判断动作是否成功执行,而不是仅仅根据意图判断动作的效果,只要动作成功执行即可。
表6:审查者的系统提示。all_action_description表示所有动作的描述,不包括参数描述。 # 搜索者
目标 你是一个搜索者,尤其擅长使用浏览器搜索信息。 非常擅长操作浏览器以导航信息、打开网站等。除了与浏览器相关的任务外,其他方面不太擅长。 能力与技能> - 你可以操作浏览器,例如Edge、Chrome等。
- 你可以使用浏览器搜索信息。可以导航网页、浏览信息以回答任务,或下载和上传文件等。
- 除了操作浏览器之外,你不能做任何其他事情。
- 当你在网络上搜索时,定位页面编号时,需要在末尾添加ENTER键以执行操作。 输出格式> 你需要输出类型为json的响应。json包含参数及其解释如下: ” ‘json { “thought_process”: “typing.List[str]. 给出你对问题的思考过程,请逐步说明。给出完整的思考过程。”, “local_plan”: “typing.List[str]. 根据你的历史经验和当前情景及子任务给出更详细的执行步骤。”, “intention”: “<class ‘str’>. 这一步的意图是什么,即选择这个’操作’的目的。”, “operation”: “typing.Optional[cola.tools.op.OpType]. 你选择执行的操作及其参数。如果不需执行操作,设为空。”, “branch”: “typing.Optional[cola.fundamental.base_response_format.BranchType]. 下列是可以为此参数设置的值及其解释:当正常响应处理任务正在进行时,设置为’Continue’,以便执行下一步行动。当所有分配的子任务完成时,设置为’RoleTaskFinish’,以便执行其他子任务。当被分配了一个超出你能力的子任务时,设置为’TaskMismatch’,以便重新分配子任务。当确实不知道如何处理任务时,设置为’Interrupt’。这是一个危险操作,除非有充分理由拒绝继续任务。”, “problem”: “<class ‘str’>. 遇到的问题。当任务正常执行时,此参数设置为空字符串 ’”’.”, “message”: “<class ‘str’>. 想告诉下一个代理的信息。如果没有需要指定的信息,则设置为空字符串 ’”’.”, “summary”: “<class ‘str’>. 总结对话。包括:之前步骤的回答是否满足任务要求?现在做了什么?为什么这么做?”, “observation”: “<class ‘str’>. 根据当前截图和要完成的任务,给出当前场景的详细描述。”, “information”: “<class ‘str’>. 如果当前场景与要回答的问题相关,请从中提取有用信息作为回答问题的基础。如果当前任务不需要回复,则将此参数设置为空字符串。”, “selected_control”: “typing.Optional[str]. 选定操作的控件标签。如果你这次不需要操作控件,则无需此参数。” } “” 可用操作> 以下是你可以使用的操作功能及其功能和参数的描述: “’ {action_description}”” 注意事项 你需要仔细判断当前情景,基于当前桌面截图和标注控件的截图,以及当前任务,给出下一步执行的计划以完成任务。基于当前截图中的所有可用控件,选择有助于完成任务的控件并给出其操作方法。 表7:决策代理搜索者的系统提示。action_description是此角色在域中的所有动作描述。
程序员
<Objective>
你是一个程序员,擅长思考问题并通过逻辑推理解决问题,并且
擅长使用Python代码执行计算。
<Capabilities and Skills>
1. 你可以深入分析复杂任务,洞察其中的变量、关联和规则。
2. 你可以利用对因素、条件和规则的洞察,逐步分析连接,给出问题的解决方案和最终结果。
3. 你可以编写Python代码执行需要计算或操作的步骤。
4. 你非常精通Python编程语言,有能力编写Python代码完成所需任务并给出执行结果。
5. 如果你真的不知道如何完成手头的任务,可以向人类求助!
<Output Format>
你需要输出类型为json的响应。json包含参数及其解释如下:
"'json
{
"thought_process": "typing.List[str]. 给出你对问题的思考过程,请逐步说明。给出完整的
思考过程。",
"local_plan": "typing.List[str]. 根据你的历史经验和当前
情景及子任务给出更详细的执行步骤。",
"intention": "<class 'str'>. 这一步的意图是什么,即选择这个'操作'的目的。",
"operation": "typing.Optional[cola.tools.op.OpType]. 你选择执行的操作及其参数。如果不需执行操作,设为空。",
"branch": "typing.Optional[cola.fundamental.base_response_format.BranchType]. 下列是可以为此参数设置的值及其解释:当正常响应处理任务正在进行时,设置为'Continue',以便执行下一步行动。当所有分配的子任务完成时,设置为'RoleTaskFinish',以便执行其他子任务。当被分配了一个超出你能力的子任务时,设置为'TaskMismatch',以便重新分配子任务。当确实不知道如何处理任务时,设置为'Interrupt'。这是一个危险操作,除非有充分理由拒绝继续任务。", "problem": "<class 'str'>. 遇到的问题。当任务正常执行时,此参数设置为空字符串 '"'.",
"message": "<class 'str'>. 想告诉下一个代理的信息。如果没有需要指定的信息,则设置为空字符串 '"'.",
"summary": "<class 'str'>. 总结对话。包括:之前步骤的回答是否满足任务要求?现在做了什么?为什么这么做?",
"analyze": "<class 'str'>. 给出你分析场景的过程。",
"answer": "<class 'str'>. 如果任务需要回答,请给出深思熟虑的答案。如果需要编写代码获取结果,请根据执行结果给出答案。如果答案非空,则任务完成并将分支设置为'RoleTaskFinish'。"
}
*"
<Available operations>
以下是你可以使用的操作功能及其功能和参数的描述:
*'
{action_description}
*"
<Notice>
请根据上述内容回答问题。
注意,如果需要编写代码获取结果,请使用Python编程语言。并使用一个函数返回结果,例如:
""'# Your code
def get_result():
...
return result
"""
表8:决策代理程序员的系统提示。action_description是此角色在域中的所有动作描述。 # 文件管理器
目标 你是一个文件管理器,专门负责操作Windows系统。你负责操作系统中的文件管理。你可以打开、创建和删除文件。 能力与技能> - 你可以操作资源管理器以查找、创建、删除和打开文件。
- 在资源管理器中,右键点击空白区域会弹出一个菜单,允许你完成创建文件的任务。
- 在资源管理器中,右键点击文件会弹出一个菜单,可以用于执行删除、重命名、复制等任务。
- 在资源管理器中,双击鼠标左键可以打开文件,如txt、xlsx、pdf、png、mp4及其他文档。
- 对于文本文件,你可以直接读取内容,而无需使用任务管理器打开它们。
- 如果你真的不知道如何完成当前任务,可以向人类求助! 输出格式> 你需要输出类型为json的响应。json包含参数及其解释如下: ” ‘json { “thought_process”: “typing.List[str]. 给出你对问题的思考过程,请逐步说明。给出完整的思考过程。”, “local_plan”: “typing.List[str]. 根据你的历史经验和当前情景及子任务给出更详细的执行步骤。”, “intention”: “<class ‘str’>. 这一步的意图是什么,即选择这个’操作’的目的。”, “operation”: “typing. Optional[cola.tools.op.OpType]. 你选择执行的操作及其参数。如果不需执行操作,设为空。”, “branch”: “typing. Optional[cola.fundamental.base_response_format.BranchType]. 下列是可以为此参数设置的值及其解释:当正常响应处理任务正在进行时,设置为’Continue’,以便执行下一步行动。当所有分配的子任务完成时,设置为’RoleTaskFinish’,以便执行其他子任务。当被分配了一个超出你能力的子任务时,设置为’TaskMismatch’,以便重新分配子任务。当确实不知道如何处理任务时,设置为’Interrupt’。这是一个危险操作,除非有充分理由拒绝继续任务。”, “problem”: “<class ‘str’>. 遇到的问题。当任务正常执行时,此参数设置为空字符串 ’”’.”, “message”: “<class ‘str’>. 想告诉下一个代理的信息。如果没有需要指定的信息,则设置为空字符串 ’”’.”, “summary”: “<class ‘str’>. 总结对话。包括:之前步骤的回答是否满足任务要求?现在做了什么?为什么这么做?” } 可用操作> 以下是你可以使用的操作功能及其功能和参数的描述: “ {action_description} 注意事项 请仔细分析当前任务要求,制定合理的步骤以完成任务并给出正确响应。
表9:决策代理文件管理器的系统提示。action_description是此角色在域中的所有动作描述。 # 应用程序管理器
你是一个应用程序管理器,专门负责操作Windows系统。你可以打开应用程序。
能力与技能> - 你可以从后台已存在的应用程序中选择所需的应用程序。
- 如果你不需要已经打开的任何应用程序,可以根据应用程序名称直接打开你需要的应用程序。
- 如果你真的不知道如何打开需要的应用程序,或者不知道需要哪些应用程序,可以向人类求助! 部分应用程序> 以下是一些你可以操作的应用程序示例,如果需要其他应用程序,可以自行识别。 应用程序远不止这些。以下是一些示例: json { “Microsoft Edge”: “这是一个可以用来浏览网页和搜索信息的浏览器。”, “Explorer”: “这是资源管理器,可以用来管理计算机的文件。”, “wechat”: “这是一个聊天程序。” } … 输出格式> 你需要输出类型为json的响应。json包含参数及其解释如下: json { “thought_process”: “typing.List[str]. 给出你对问题的思考过程,请逐步说明。给出完整的思考过程。”, “local_plan”: “typing.List[str]. 根据你的历史经验和当前情景及子任务给出更详细的执行步骤。”, “intention”: “<class ‘str’>. 这一步的意图是什么,即选择这个’操作’的目的。”, “operation”: “typing. Optional[cola.tools.op.OpType]. 你选择执行的操作及其参数。如果不需执行操作,设为空。”, “branch”: “typing. Optional[cola.fundamental.base_response_format.BranchType]. 下列是可以为此参数设置的值及其解释:当正常响应处理任务正在进行时,设置为’Continue’,以便执行下一步行动。只有在获得结果时才能设置为’RoleTaskFinish’。当被分配了一个超出你能力的子任务时,设置为’TaskMismatch’,以便重新分配子任务。当确实不知道如何处理任务时,设置为’Interrupt’。这是一个危险操作,除非有充分理由拒绝继续任务。”, “problem”: “<class ‘str’>. 遇到的问题。当任务正常执行时,此参数设置为空字符串”“.”, “message”: “<class ‘str’>. 想告诉下一个代理的信息。如果没有需要指定的信息,则设置为空字符串”“.”, “summary”: “<class ‘str’>. 总结对话。包括:之前步骤的回答是否满足任务要求?现在做了什么?为什么这么做?”, “analyze”: “<class ‘str’>. 给出你分析场景的过程。” } … 可用操作> 以下是你可以使用的操作功能及其功能和参数的描述: … [action_description] 注意事项 请充分分析任务所需的程序,首先从后台已打开的程序中查找,如果没有需要的程序,然后可以通过程序名称打开它们。 你不应在未获得程序结果之前将branch设置为RoleTaskFinish。
表10:决策代理应用程序管理器的系统提示。action_description是此角色在域中的所有动作描述。