忽然一夜清香发,散作乾坤万里春。小伙伴们好,我是小编卖玉玺的汉室宗亲。
延续前文:
GUI Agent综述:9部曲揭秘下一代人机交互的前世今生-1:总览
GUI Agent综述:9部曲揭秘下一代人机交互的前世今生-2:三大技术基石
GUI Agent综述:9部曲揭秘下一代人机交互的前世今生-3:发展历程
今天这篇小作文主要剖析组成GUI Agent的核心组件及其最新进展。后续还有以下5个章回,感兴趣的小伙伴可以留意下:
- GUI Agent综述:5-细说GUI Agent主流框架-百家争鸣
- GUI Agent综述:6-GUI Agent训练数据收集
- GUI Agent综述:7-基于 LLM 的 GUI Agent 模型优化
- GUI Agent综述:8-GUI Agent的评测
- GUI Agent综述:9-GUI Agent应用与未来
更多智能体(Agent)相关可以订阅此专题: 智能体(Agent) 专题
LLM 驱动的 GUI Agent 旨在处理用户以自然语言提出的指令或请求,通过屏幕截图或 UI 元素树理解 GUI 的当前状态,并执行模拟人机交互的动作,从而跨越各种软件界面。这些 Agent 利用 LLM 强大的自然语言理解、推理和生成能力,精准地理解用户意图、评估 GUI 上下文,并自主地在不同环境中与应用程序交互,完成复杂的多步骤任务。这种集成使其能够流畅地解释和响应用户请求,为 GUI 自动化赋予了适应性和智能。
作为一种特定类型的 LLM Agent,当前的 GUI Agent 大多采用相似的基础框架,集成了规划、记忆、工具使用等核心组件,以及多 Agent 协作等高级增强功能。然而,为了确保在不同应用程序环境中的适应性,每个组件都必须针对 GUI Agent 的特定目标进行调整。
接下来的部分将深入概述每个组件,提供构建 LLM 驱动 GUI Agent 的实用指南和教程。此全面解析可作为指导,用于利用强大 LLM 创建高效且智能的 GUI 自动化系统。
5.1 架构和工作流程概述
图 4 展示了 LLM 驱动 GUI Agent 的架构,呈现了从用户输入到任务完成的操作序列。该架构包括多个集成组件,每个组件都为 Agent 理解和执行基于用户自然语言指令的任务做出贡献。Agent 接收用户请求后,遵循系统化的工作流程,包括环境感知、提示工程、模型推理、动作执行和持续的记忆管理利用,直至任务完全完成。
总体而言,GUI Agent包括以下组件:
- 操作环境 :环境定义了Agent的操作上下文,包括移动设备、网页浏览器和 Windows 等桌面操作系统平台。为了有意义地交互,Agent通过屏幕截图、部件树或其他方法捕获 UI 结构,感知环境的当前状态。它持续监控每个动作的影响反馈,并实时调整策略,以确保任务有效进行。
- Prompt 工程 :在环境感知之后,Agent构建详细的 prompt 来指导 LLM 的推理。该 prompt 包含用户指令、处理后的视觉数据(如屏幕截图)、UI 元素布局、属性和任何与任务相关的附加上下文。这种结构化输入最大幅度地提高了 LLM 生成与当前 GUI 状态相一致、内容感知的响应的能力。
- 模型推理 :构建好的 prompt 被传递给 LLM,即Agent的推理核心,LLM 生成完成用户请求所需的一系列规划、动作和见解。该模型可以是通用的 LLM,也可以是经过 GUI 特定数据微调的专门模型,从而更好地理解 GUI 交互、用户流程和任务需求。
- 动作执行 :根据模型推理结果,Agent确定任务执行所需的特定动作(如鼠标点击、键盘输入、触屏手势或 API 调用)。Agent中的执行器将这些高级指令转化为可操作的命令,直接影响 GUI, 有效模拟人机交互,覆盖不同的应用程序和设备。
- 记忆 :对于多步骤任务,Agent维护内部记忆,跟踪之前的动作、任务进度和环境状态。这种记忆确保了复杂工作流程的连贯性,因为Agent可以参考先前的步骤并相应地调整动作。还可能融入外部记忆模块,以实现持续学习、访问外部知识,并增强适应新环境或需求的能力。
通过反复遍历这些阶段并组装基础组件,LLM 驱动的 GUI Agent 可以智能地操作,无缝地跨越各种软件界面,弥合基于语言的指令与具体动作之间的鸿沟。每个组件对于 Agent 的稳健性、响应性和处理动态环境中复杂任务的能力都至关重要。在下面的小节中,将详细介绍每个组件的设计和核心技术,为从头构建 LLM 驱动的 GUI Agent 提供全面指南。
5.2 操作环境
由大型语言模型驱动的 GUI Agent 的操作环境包括移动、网络和桌面操作系统等各种平台,在这些平台上,这些 Agent 可以与图形界面进行交互。每个平台都有其独特的特点,这影响了 GUI Agent 在其中感知、解释和采取行动的方式。以下将详细介绍了每个平台的细微差别、Agent收集环境信息的方式以及它们在适应不同操作环境时面临的挑战。
5.2.1 平台
GUI Agent 可以与多种平台进行交互,包括移动设备、网络应用程序和 Windows 等计算机操作系统。每个平台为 GUI 自动化提供了独特的功能和限制,要求 Agent 相应地调整其感知和交互策略。
- 移动平台 :移动设备在有限的屏幕空间内运行,高度依赖触摸交互,并提供不同的应用架构(如本地与混合应用)。移动平台通常使用辅助功能框架,如Android的辅助功能API和iOS的VoiceOver辅助功能检查器,来公开有关UI元素的结构化信息。然而,GUI Agent必须处理移动环境中的额外复杂性,如手势识别、应用导航以及特定于平台的限制(如安全和隐私权限)。
- 网络平台 :网络应用程序提供了相对标准化的界面,通常可通过超文本标记语言(HTML)和文档对象模型(DOM)结构访问。GUI Agent可以利用HTML属性(如元素ID、类和标签)来识别交互组件。Web环境还提供动态内容、响应式布局和异步更新(如AJAX请求),要求Agent持续评估DOM并适应不断变化的界面元素。
- 计算机平台 :Windows等计算机操作系统平台提供了对GUI交互的完全控制。Agent可以使用系统级自动化API(如Windows UI Automation6)来获取全面的UI元素数据,包括类型、标签、位置和边框框。这些平台通常支持更广泛的交互类型,如鼠标、键盘和复杂的多窗口操作。这些使得GUI Agent能够执行复杂的工作流程。但是, 这些系统还需要针对从简单UI到复杂多层软件套件等各种应用程序进行复杂的适应。
总之,跨越移动、网络和桌面环境的平台多样性使 GUI Agent 能够提供广泛的自动化能力,使其成为可通过统一框架实现适应性的通用解决方案。然而,每个平台在系统和应用程序层面都呈现出独特的特点和约束,需要采取量身定制的方法来实现有效集成。通过考虑这些特定于平台的特性,GUI Agent 可以针对每种环境的独特需求进行优化,从而提高其在不同自动化场景中的适应性和可靠性。
5.2.2 环境状态感知
准确感知环境的当前状态对于由大型语言模型驱动的 GUI Agent 至关重要,因为它直接影响其决策和行动规划过程。这种感知是通过收集结构化数据(如部件树)和非结构化数据(如屏幕截图)的组合来实现的,以捕获界面及其组件的完整表示。在表III中,概述了跨各种平台收集 GUI 环境数据的关键工具包:
并在下面详细讨论了它们的作用:
- GUI截图 :截图提供了应用程序的可视快照,捕获了给定时刻GUI的整个状态。它们为Agent提供了布局、设计和可视内容的参考,这在UI元素的结构细节有限或不可用时至关重要。诸如图标、图像和其他可能含有重要上下文的图形线索等视觉元素,可以直接从截图中分析。许多平台都有内置工具可以捕获屏幕截图(如Windows的Snipping Tool、macOS的截图实用程序和Android的MediaProjection API), 并且截图可以通过为关键UI组件添加额外的注释(如Set-of-Mark (SoM)高亮显示或边界框)来增强,以简化Agent决策。图6说明了VS Code GUI的各种截图,包括一个干净的版本,以及带有SoM和边界框的版本,突出显示了可操作组件,帮助Agent专注于界面的最关键区域。
- 部件树(Widget Trees):部件树以分层视图呈现界面元素,提供有关布局和组件之间关系的结构化数据。在图7中展示了一个GUI及其部件树的示例。通过访问部件树,Agent可以识别元素类型、标签、角色和界面内部关系等属性,所有这些对于语境理解都至关重要。Windows UI Automation和macOS的Accessibility API10等工具为桌面应用程序提供了结构化视图,而Android的Accessibility API和HTML DOM结构则为移动和网络平台提供了服务。这种分层数据对Agent绘制逻辑交互和根据UI结构做出明智选择至关重要。
- UI元素属性 :界面中的每个UI元素都包含诸如控件类型、标签文本、位置和边界框尺寸等特定属性,这有助于Agent定位适当的组件。这些属性对于Agent决定空间关系(如相邻元素)和功能用途(如区分按钮和文本字段)至关重要。例如,网络应用程序公开了DOM属性(id、class、name)和CSS样式等属性,提供了上下文和控制信息。这些属性有助于Agent精确定位要与之交互的元素,提高了其在不同UI环境中导航和操作的能力。图8说明了Windows UI Automation API提取的选定UI元素属性示例,这些属性支持GUI Agent的决策。
- 辅助计算机视觉方法 :当结构化信息不完整或不可用时,计算机视觉技术可以提供额外的信息。例如,OCR允许Agent直接从屏幕截图中提取文本内容,方便阅读标签、错误消息和说明。此外,像SAM(Segment Anything Model)、DINO和OmniParser这类先进对象检测模型可以在不同布局中识别和分类UI组件,支持Agent在UI元素可能频繁变化的动态环境中运行。这些基于视觉的方法确保了GUI Agent的健壮性,使得Agent即使在标准UI API不足的情况下也能有效运行。在图9中说明了这种辅助信息的示例,并在5.7.1节进一步详细介绍这些先进的计算机视觉方法。
总而言之,这些元素共同创建了GUI环境当前状态的全面多模态表示,提供了结构化和可视化数据。通过将此信息纳入提示构建,Agent可以做出明智、符合上下文的决策,而不会遗漏关键的环境线索。
5.2.3 环境反馈
有效的反馈机制对于GUI Agent评估每个动作的成功与否并为后续步骤做出明智决策至关重要。反馈可以采取多种形式,具体取决于平台和交互类型。图10展示了从环境中获得的各种类型反馈的示例。
- 截图更新 :通过比较执行动作前后的截图,Agent可以识别表明应用程序状态变化的视觉差异。截图分析可以显示界面的细微变化,如通知、视觉线索或确认消息的出现,而这些可能无法通过结构化数据捕获到。
- UI结构更改 :执行动作后,Agent可以检测到部件树结构的修改,如元素的出现或消失、元素属性的更新或层次结构的变化。这些变化表明交互成功(如打开下拉列表或点击按钮),有助于Agent根据更新后的环境状态确定下一步操作。
- 函数返回值和异常 :某些平台可以通过函数返回值或系统生成的异常直接提供操作结果反馈。例如,Web平台上的API响应或JavaScript返回值可以确认操作成功,而异常或错误代码则可以指示交互失败,引导Agent重试或选择替代方法。
环境提供的这些反馈对于 GUI Agent 评估之前行动的结果至关重要。这种实时信息使得 Agent 能够评估其干预措施的有效性,并确定是否坚持原定规划或转向替代战略。通过这种自我反思过程,Agent 可以调整其决策, 优化任务执行并提高在动态和多样的应用程序环境中的整体性能。
5.3 提示工程
在由大语言模型驱动的GUI Agent的运作中,有效的提示构建是一个关键步骤,其中包含了Agent生成适当响应和成功执行任务所需的全部信息。在从环境收集相关数据后,Agent构建一个综合性提示,结合了大语言模型推理所需的各种必要组成部分。每个组成部分都有特定的用途,共同使得Agent能够有效执行用户的请求。图11展示了一个以大语言模型为"大脑"的GUI Agent的基本提示构建示例。 提示的关键元素总结如下:
- 用户请求 :这是用户提供的原始任务描述,概述了目标和预期结果。它是Agent行动的基础,对于确保大语言模型理解任务的上下文和范围至关重要。
- Agent指令 :该部分为Agent的操作提供指导,详细说明其角色、需遵循的规则和特定目标。指令阐明了Agent将接收哪些输入,以及大语言模型的预期输出,为推理过程建立了一个框架。
- 环境状态 :Agent包括感知到的GUI截图和UI信息,如5.2.2节所介绍。这种多模态数据可能包括截图的不同版本(如干净版和加了SoM注释的版本),以确保清晰度并降低UI控件被注释遮挡的风险。这种对环境的全面表述对于做出准确的决策至关重要。
- 操作文档 :该组件概述了Agent可以采取的可用操作,详细说明了相关文档、函数名称、参数、返回值和任何其他必要的参数。提供此信息使大语言模型具备了为任务选择和生成适当操作所需的上下文。
- 演示范例 :包含输入/输出示例对对于激活大语言模型的情景学习能力至关重要。这些示例有助于模型理解并概括任务要求,从而提高其执行GUI Agent任务的表现。
- 补充信息 :还可以包含有助于规划和推理的其他上下文。这可以包括从Agent记忆(如5.6节所述)检索的历史数据,以及通过检索增强生成(RAG)方法获得的外部知识源(如文档)。这些补充信息可以提供有价值的见解,进一步完善Agent的决策过程。
构建有效的提示是由大语言模型驱动的GUI Agent高效运行的基础。 通过系统地纳入上述信息,Agent确保了大语言模型获得了执行任务所需的必要上下文和指导。
5.4 模型推理
构建的提示被提交给大语言模型进行推理,在此过程中,大语言模型的任务是同时生成执行用户请求所需的规划和具体行动。这一推理过程至关重要,因为它决定了GUI Agent在动态环境中的有效性。它通常包括两个主要组成部分: 规划和行动推理 ,以及生成补充输出。图12显示了大语言模型推理输出的示例。
5.4.1 规划
成功执行GUI任务通常需要一系列连续的动作,要求Agent参与有效的规划。类似于人类认知过程,深思熟虑的规划对于组织任务、安排行动以及确保成功完成至关重要。LLM必须最初设想长期目标,同时专注于短期行动来推进实现该目标。
为了有效应对多步骤任务的复杂性,Agent应该将总体任务分解为可管理的子任务,并制定执行时间表。可以采用CoT推理等技术,使LLM能够制定结构化的计划来指导行动的执行。这个计划可以存储供将来推理步骤参考,从而增强Agent活动的组织性和集中性。
规划的细粒度可能因任务性质和Agent角色而有所不同。对于复杂任务,结合全局规划(确定广泛的子目标)和局部规划(为这些子目标定义详细步骤)的分层方法,可以显著提高Agent有效管理长期目标的能力。
5.4.2 行动推理
行动推理是推理阶段的核心目标,因为它将规划转化为可执行的任务。推断出的行动通常表示为函数调用字符串,包括函数名称和相关参数。这些字符串可以直接转化为与环境的实际交互,如点击、键盘输入、手机手势或API调用。在5.5节对这些行动类型进行了详细讨论。
输入提示必须包括Agent可供选择的预定义行动集合。Agent可以从该集合中选择行动,或者如果允许,生成自定义代码或API调用以与环境交互。这种灵活性可以增强Agent适应未预期情况的能力;然而,它可能会带来可靠性问题,因为生成的代码可能容易出错。
5.4.3 补充输出
除了规划和行动推理之外,LLM还可以生成补充输出来增强Agent的能力。这些输出可能包括阐明Agent决策的推理过程(例如CoT推理)、与用户互动的消息,或与其他Agent或系统的交流,或任务状态(例如继续或完成)。可以根据特定需求量身定制这些功能的设计,从而丰富GUI Agent的整体性能。
通过有效平衡规划和行为推理,同时结合补充输出,Agent可以以更高层次的组织性和适应性应对复杂任务。
5.5 行动执行
经过推理过程后,GUI Agent执行从推断命令中得到的动作并在GUI环境中收集反馈是一个至关重要的后续步骤。虽然"GUI Agent"一词可能暗示了专注于用户界面操作,但通过结合各种工具箱,可以大大扩展Agent的行动空间,从而提高其通用性。总的来说,GUI Agent可用的行动可分为三大类:
- 用户界面操作
- 原生API调用
- AI工具
每个类别都有独特的优势和挑战,使Agent能够更有效地应对各种任务。在表IV中总结了GUI Agent常用的各种行动, 并按不同类型分类,下面将对每个类别进行详细阐释。
5.5.1 用户界面操作
用户界面操作包括用户通常与软件应用程序GUI进行的基本交互。这些操作包括各种形式的输入,如鼠标动作(点击、拖拽、悬停)、键盘动作(按键、组合键)、触摸动作(点击、滑动)和手势(捏、旋转)。这些动作在不同平台和应用程序中的细节可能有所不同,需要针对每种环境采取量身定制的方法。
虽然用户界面操作构成了与GUI交互的基础,但由于这些任务的连续性质,它们相对较慢。每个操作都必须一步步执行,这可能会导致延迟增加,尤其是对于涉及大量交互的复杂工作流程。尽管存在这一缺点,但用户界面操作对于保持跨不同应用程序的广泛兼容性至关重要,因为它们利用了标准的用户界面元素和交互。
5.5.2 原生API调用
与用户界面操作不同,一些应用程序提供原生API,允许GUI Agent更高效地执行操作。这些API提供了对应用程序中特定功能的直接访问, 使Agent能够通过单个命令执行复杂任务。例如,调用Outlook API允许Agent通过一个操作发送电子邮件,而使用UI操作则需要一系列步骤,如导航菜单和填写表单。
虽然原生API可以显著提高动作执行的速度和可靠性,但它们的可用性有限。并非所有应用程序或平台都向外部公开API,开发这些接口也需要大量的努力和专业知识。因此,尽管原生API为高效完成任务提供了强大手段,但它们可能无法像UI操作那样普遍应用于不同的应用程序。
5.5.3 AI工具
将AI工具整合到GUI Agent中,使得GUI Agent的能力产生变革性进步。这些工具可以协助完成广泛的任务,包括从截图或文本中总结内容、增强文档、生成图像或视频(例如调用ChatGPT、DALL·E)、甚至唤起其他Agent或Copilot工具进行协作辅助。生成式人工智能技术的快速发展使得GUI Agent能够应对之前无法完成的复杂挑战。
通过整合AI工具,Agent可以扩展其功能,在不同环境中提升性能。例如,GUI Agent可以使用人工智能摘要工具快速从冗长文档中提取关键信息,或利用图像生成工具为用户演示文稿创建自定义视觉效果。这种整合不仅可以简化工作流程,而且还可以使Agent以远低于传统所需时间就能提供高质量的输出,从而赋予其更大能力。
5.5.4 总结
先进的GUI Agent应熟练利用三大类操作:用户界面操作实现广泛兼容性、原生API实现高效执行、人工智能工具增强能力。这种多方面的方法使得Agent能够在各种应用程序中可靠运行,同时最大限度地提高效率和有效性。通过熟练地在这些操作类型间导航,GUI Agent可以更高效地满足用户需求,最终带来更加无缝和高效的用户体验。
5.6 记忆
为了在复杂的多步骤任务中实现健壮的性能,GUI Agent必须保留记忆,从而在本质上无状态的环境中管理状态。记忆使Agent能够跟踪先前的操作、结果和任务的整体状态,这对于在后续步骤中做出明智决策至关重要。通过建立连续性,记忆将Agent从反应式系统转变为具有主动性和有状态的系统,能够根据累积的知识自行调整。Agent的记忆通常分为两种主要类型:短期记忆和长期记忆。表V显示了GUI Agent中不同类型记忆的概览。
5.6.1 短期记忆
短期记忆(Short-Term Memory,STM) 为大型语言模型在运行时提供了主要的、短暂的上下文。STM存储与当前任务相关的信息,例如最近的计划、操作、结果和环境状态,并持续更新以反映任务的进展状态。在多步骤任务中,每个决策都建立在前一个决策之上,需要Agent对任务轨迹有清晰的理解,因此这种记忆尤为宝贵。如图13所示,在独立任务执行期间,由操作和计划组成的任务轨迹存储在STM中。这使Agent能够高效地跟踪任务进度,从而做出更明智的决策。
然而,STM受限于大型语言模型的上下文窗口,限制了它可以携带的信息量。为了管理这一限制,Agent可以采用选择性记忆管理策略,例如有选择地丢弃或总结不太相关的细节,优先保留最有影响力的信息。尽管规模有限,但STM对于确保连贯、与上下文相关的交互以及支持Agent执行复杂工作流程并获得即时相关反馈至关重要。
5.6.2 长期记忆
长期记忆(Long-Term Memory,LTM)作为一个外部存储库, 用于存放超出即时运行时的上下文信息。与短期记忆的暂时性特征不同,LTM可以保留历史任务数据,包括以前完成的任务、成功的操作序列、上下文提示和学习到的见解。LTM可以存储在磁盘或数据库中,使其能够比大型语言模型的即时上下文窗口容纳更大量的信息。在图13所示的示例中,当第二个任务要求下载与之前任务相关的游戏时,Agent会从其LTM中检索相关信息。这使Agent能够准确识别正确的游戏,从而高效完成任务。
LTM通过保存成功任务轨迹、操作指南和常见交互模式的示例,有助于Agent的自我改进。在应对新任务时,Agent可以使用检索增强生成(RAG)技术来检索相关的历史数据,从而增强其根据过往成功来适应策略的能力。这使LTM在培养Agent"学习"经验的能力方面发挥了重要作用,使其能够在累积经验后以更大的准确性和效率执行任务。例如,在Synapse计算机控制智能体系统中提供了一个说明性案例,展示如何使用存储在记忆中的过去任务轨迹来指导和增强未来决策,这是一种高度适用于GUI Agent的技术。它还通过保留以前任务的信息,实现了更好的个性化。
5.7 高级增强
虽然大多数大型语言模型驱动的GUI Agent都包含了诸如感知、规划、行动执行和记忆等基本组件,但研究人员还发展了若干先进技术,以显著提高这些Agent的推理能力和整体能力。在这里,将概述在研究中广泛采用的共享进展,以指导开发更加专门化和功能强大的大型语言模型驱动的GUI Agent。
5.7.1 基于计算机视觉的GUI解析
尽管各种工具使GUI Agent能够访问诸如窗口部件位置、标题和属性等信息,但某些非标准GUI或部件可能不遵循这些工具的协议,从而使其信息无法访问。此外,由于权限管理,这些工具并不总是可用的。这种信息不完整可能会给GUI Agent带来重大挑战,因为大型语言模型可能需要独立定位并与所需的部件交互,方法是估算其坐标以执行诸如单击等操作:这是一项在没有精确GUI数据的情况下本身就很困难的任务。
基于CV的模型提供了一种非侵入性的解决方案,可直接从屏幕截图解析GUI,实现对部件的检测、定位、分割,甚至功能估计。这种方法使Agent能够根据纯视觉线索解释GUI的视觉结构和元素,而无需依赖可能无法使用或不完整的系统级工具或内部元数据,从而增强了Agent识别并对屏幕上的元素采取行动的能力。图9提供了一个说明基于CV的GUI解析器如何工作的示例。虽然标准API检测捕获预定义的部件,但CV模型还可以识别缩略图和画布等其他元素,而这些元素在PowerPoint界面中可能没有显式的API表示。这增强了对部件的识别,使Agent能够检测超出API检测范围的组件。
一个值得注意的例子是OmniParser,它实现了一种多阶段解析技术,包括用于检测可交互图标的微调模型、用于提取文本的OCR模块以及生成每个UI元素的本地化语义描述的图标描述模型。通过集成这些组件,OmniParser构建了GUI的结构化表示,增强了Agent对交互区域和功能元素的理解。这种全面的解析策略已被证明可以显著提高GPT-4V对屏幕的理解和交互准确性。
此类基于CV的GUI解析层为Agent提供了关键的基础信息,极大地增强了其与不同GUI进行准确和直观交互的能力。这对于处理偏离典型辅助功能协议的自定义或非标准元素尤为有益。此外,诸如迭代缩小等提示方法已显示出提高VLM部件定位能力的前景。总的来说,这些方法为构建更具适应性和稳健性的GUI Agent铺平了道路,使其能够在更广泛的屏幕环境和应用程序上下文中高效运行。
5.7.2 多Agent框架
俗话说“三个臭皮匠,顶个诸葛亮”,这句话在GUI自动化任务中尤为适用。单个agent虽然有能力完成任务,但在多agent框架下,其能力可以得到显著提升。多agent系统利用多个agent的集体智慧、专业技能和互补优势,更有效地解决复杂任务,这是单个agent无法单独做到的。在GUI Agent的背景下,多agent系统通过两种主要机制提供高级功能: 专业化 和 agent间的协作 。图14展示了一个由大型语言模型(LLM)驱动的多agent如何协作创建一个桌子的例子。
- Agent专业化:在多agent框架中,每个agent都被设计为专注于特定的角色或功能,利用其独特的能力为整体任务做出贡献。如图14所示,专业化使不同的agent能够专注于任务流程的不同方面。例如,“文档提取器”专门从本地文档(如PDF)中提取相关内容,而“网络检索器”则专注于从在线资源中收集额外信息。类似地,“设计器(Designer)”将检索到的信息转换为具有视觉吸引力的幻灯片,而“评估器(Evaluator")”则提供反馈以改进和完善输出。这种功能分离确保每个agent都高度擅长其指定的任务,从而提高效率和结果质量。
- 协作式Agent间动态:图14所示的多agent系统展示了agent如何动态协作来处理复杂任务。该过程从“文档提取器”和“网络检索器”开始,它们并行工作,从本地和在线资源收集信息。检索到的数据被传递给“设计器”,后者将其合成为一组连贯的幻灯片。幻灯片创建完成后,“评估器”会审查输出,并提供反馈以进行完善。这些agent共享信息、交换上下文并以协调的方式运行,反映了类似人类的团队合作动态。例如,如图所示,agent的角色紧密集成——每个输出都为下一阶段提供输入,从而创建一个简化的工作流程,该流程反映了现实世界的协作环境。
在这样的系统中,agent可以集体参与需要规划、讨论和决策的任务。通过这些互动,系统可以利用每个agent的领域专业知识和潜在的专业化能力,从而最大限度地提高跨越不同多步骤流程的整体性能。
5.7.3 自我反思(Self-Reflection)
俗话说,“知错能改,善莫大焉”。在GUI多agent系统的背景下,自我反思指的是agent在整个任务执行过程中内省地评估其推理、行动和决策的能力。这种能力使agent能够检测潜在的错误、调整策略和改进行动,从而提高其决策的质量和稳健性,尤其是在复杂或不熟悉的GUI环境中。通过定期评估自身的表现,具有自我反思能力的agent可以动态地进行调整,从而产生更准确和有效的结果。
自我反思对于GUI agent尤为重要,因为用户界面的可变性以及即使在人工操作的系统中也可能出现错误。GUI agent经常遇到偏离预期的情况, 例如点击错误的按钮、遇到意外的广告、导航不熟悉的界面、收到来自API调用的错误消息,甚至是对任务结果的用户反馈做出响应。为了确保任务成功,GUI agent必须快速反思其行动, 评估这些反馈信号,并调整其计划以更好地与期望的目标保持一致。
如图15所示,当agent最初未能找到“设计”菜单中的“线条绘制”选项时,自我反思使其能够重新考虑并在“图片格式”菜单下的“艺术效果”中找到其正确位置,从而成功完成任务。
在实践中,GUI agent的自我反思技术通常涉及两种主要方法:(i)ReAct和(ii)Reflexion。
- ReAct(推理和行动):ReAct通过让agent评估每个行动的结果并推理出下一个最佳步骤,将自我反思集成到agent的行动链中。在这个框架中,agent不仅仅是遵循线性的行动序列;相反,它会动态地适应,不断地根据每个行动的反馈重新评估其策略。例如,如果一个试图填写表单的GUI agent意识到它点击了错误的字段,它可以通过回溯并选择正确的元素来调整。通过ReAct,agent可以实现更高的连贯性和准确性,因为它学会了在完成的每个步骤中改进其行为。
- Reflexion:Reflexion强调基于语言的反馈,其中agent接收并处理来自环境的反馈作为语言输入,称为自我反思反馈。此反馈被上下文关联,并用作后续交互的输入,帮助agent从先前的错误中快速学习。例如,如果GUI agent收到来自应用程序的错误消息, Reflexion使agent能够处理此消息,更新其对界面的理解,并避免在未来的交互中出现类似的错误。Reflexion的迭代反馈循环促进了持续改进,并且对于GUI agent导航复杂的多步骤任务尤其有价值。
总的来说,自我反思是GUI多agent系统中的一项重要增强功能,使agent能够更好地应对GUI环境的可变性和不可预测性。这种内省能力不仅提高了单个agent的性能,而且还促进了协作环境中的韧性、适应性和长期学习。
5.7.4 自我进化(Self-Evolution)
自我进化是 GUI agent 应该具备的关键属性,它使得 agent 能够通过积累的经验逐步提升性能。在 GUI 多 agent 系统中,自我进化不仅允许单个 agent 改进,还通过在 agent 之间共享知识和策略来促进集体学习和适应。 在任务执行期间,GUI agent 会生成详细的动作轨迹,并附带有环境状态、内部推理过程(agent 的思考过程)和评估结果等补充信息。这些丰富的数据构成了宝贵的知识库,GUI agent 可以从中学习和进化。从这些经验中提取的知识可以分为三个主要领域:
- 任务轨迹 :agent 执行的动作序列以及相应的环境状态,对于学习至关重要。这些成功的轨迹可以通过两种重要方式加以利用。首先,它们可以用于微调支撑 agent 的核心 LLM。使用这种特定领域和任务相关的数据进行微调,可以增强模型泛化能力,并提高未来在类似任务上的性能。其次,这些轨迹可以用作演示示例,以激活 LLM 在提示工程中的上下文学习能力。通过在提示中包含成功任务执行的示例,agent 可以更好地理解和复制期望的行为,而无需额外的模型训练。
例如,假设一个 agent 成功完成了一项复杂的任务,该任务涉及跨多个应用程序的自动化数据输入。记录下来的动作轨迹(包括采取的步骤、做出的决策和上下文线索)可以与其他 agent 共享。当这些 agent 面临类似任务时,可以使用此轨迹作为指导,从而缩短学习曲线并提高效率。
- 指导和规则 :从积累的经验中,agent 可以提取出高层次的规则或指导方针,这些规则或指导方针概括了最佳实践、成功的策略以及从过去的错误中吸取的教训。这些知识可以被形式化为策略或启发式方法,供 agent 在决策过程中参考,从而增强其推理能力。
例如,如果 agent 在尝试执行某些操作时,由于没有适当的先决条件而反复遇到错误(例如,在指定文件路径之前尝试保存文件),则它们可以制定一条规则,在执行操作之前检查这些先决条件。这种主动方法降低了出错的可能性,并提高了任务成功率。
- 新工具包 :在整个交互过程中,GUI agent 可能会发现或开发出更有效的方法、工具或动作序列,从而简化任务执行。这些可能包括优化的 API 调用、宏或 UI 操作的组合,这些组合比以前的方法更有效地完成任务。通过将这些新工具纳入其技能库,agent 可以扩展其能力并提高整体效率。
例如,一个 agent 可能会发现,使用批量处理 API 可以比在循环中执行单个 UI 操作更有效地自动化重复性任务。这种新方法可以在多 agent 系统中的 agent 之间共享,从而使所有 agent 都能从改进的方法中受益,并将其应用于相关任务。
图16 说明了 GUI agent 如何通过完成任务进行进化。在其操作过程中,agent 会向其技能集中添加新功能,例如图像摘要工具包,从阅读一篇关于创建 GUI agent 的论文中获得见解,并将网页提取等任务轨迹存储在其经验池中。当分配新任务时,例如“从 GitHub 存储库学习制作 GUI agent”,agent 会利用其获得的技能和过去的经验来适应并有效地执行任务。
这种动态进化突出了 agent 不断学习、成长和完善其能力的能力。通过利用过去的经验、融入新的知识并扩展其工具集,GUI agent 可以适应各种挑战,改进任务执行,并显著提高系统的整体性能,从而培养一个协作且不断改进的环境。
5.7.5 强化学习
强化学习 (RL) 在使 LLM 与期望的行为保持一致方面取得了显著进展,并且最近已被用于 LLM agent 的开发。在 GUI 多 agent 系统中,RL 为增强 GUI agent 的性能、适应性和协作提供了巨大的潜力。GUI自动化任务自然地与马尔可夫决策过程 (MDP)的结构相一致, 这使得它们特别适合基于 RL 的解决方案。在这种情况下,状态对应于环境感知(例如 GUI 屏幕截图、UI 元素属性和布局配置),而动作直接映射到 UI 操作,包括鼠标点击、键盘输入和 API 调用。可以根据各种性能指标(例如任务完成、效率和准确性)明确定义奖励,从而使 agent 能够优化其动作以获得最大效果。图17说明了 GUI agent 中用于任务完成的 MDP 建模示例,其中明确定义了状态、动作和奖励。
通过将GUI agent 交互形式化为 MDP,可以利用 RL 技术来训练 agent, 使其通过试错学习任务执行的最佳策略。这种方法使 agent 能够做出最大化随时间累积奖励的决策,从而实现更高效和有效的任务完成。例如,一个学习自动化 Web 应用程序中表单填写的 agent 可以使用 RL 来发现输入数据并成功提交表单的最有效动作序列,从而最大限度地减少错误和冗余步骤。此过程有助于使 agent 在 GUI 自动化任务中更紧密地与期望的行为保持一致,尤其是在预定义的动作序列不足的复杂或模糊情况下。
DigiRL是一种典型的方法,这是一个两阶段 RL 框架,用于在动态环境中训练 GUI agent。DigiRL 首先使用离线数据初始化 agent 模型的离线 RL 阶段,然后进行在线微调,其中模型直接与环境交互,通过使用 LLM 评估器提供可靠奖励信号的 Android 学习环境中的实时数据来改进其策略。这种自适应设置使 agent 能够学习并有效地响应动态 GUI 的复杂性。Wang 等人提出了 DistRL,这是一个专门为在 Android 中运行的设备上移动控制 agent 设计的 RL 微调管道。DistRL 采用异步架构,在异构工作设备和环境中部署 RL 微调 agent,以进行分散式数据收集。通过利用离策略 RL 技术,DistRL 可以利用从不同环境远程收集的数据进行集中训练,从而显著增强模型的可扩展性和鲁棒性。这些代表性的方法说明了 RL 在改进 GUI agent 方面的潜力,展示了集中式和分布式 RL 框架如何使现实世界应用中更具响应性、适应性和有效性的 GUI 自动化模型成为可能。
5.7.6 总结与要点
总而言之,这些先进技术显著提升了LLM驱动的GUI agent的能力,使其在多agent框架内更加通用、高效和具有适应性。重要的是,这些技术并非相互排斥——许多技术可以整合在一起,创造出更强大的agent。例如,在多agent框架中加入自我反思机制,可以让agent协同改进任务策略并从错误中恢复。通过利用这些进步,开发者可以设计出不仅擅长自动化复杂、多步骤任务,而且能够通过自我进化、适应动态环境以及有效的agent间协作来持续改进的LLM驱动的GUI agent。未来研究有望产生更复杂的技术,进一步扩展GUI自动化的范围和稳健性。
5.8 从基础到创新:Roadmap
构建稳健、适应性强且高效的LLM驱动的GUI agent是一个多方面的过程, 需要仔细整合几个核心组件。在第5节概述的架构、设计、环境交互和记忆方面打下坚实的基础后,后续章节将重点转向在实际场景中部署这些agent所需的关键要素。首先在第6节全面回顾最先进的LLM驱动的GUI agent框架,突出它们在该领域的进步和独特贡献。 在此基础上,深入研究为GUI agent优化LLM的方法,从第7章节的数据收集和处理策略开始,逐步深入到第8节的模型优化技术。为了确保稳健的开发和验证,在第9章研究评估方法和基准,这对于评估agent的性能和可靠性至关重要。最后,在第10章节探讨各种实际应用,展示这些agent在各个领域产生的变革性影响。
总而言之,这些章节为推动LLM驱动的GUI agent从基础概念到实际应用和创新提供了一个全面的路线图(Roadmap)。这个路线图,从基础组件到实际部署,概括了将LLM驱动的GUI agent概念从构思到实现所需的必要流程。
为了提供全面的视角,首先在图18中介绍一个分类法,该分类法将最近关于LLM驱动的GUI agent的工作按框架、数据、模型、评估和应用进行分类。这个分类法可以作为指导浏览每个领域广泛研究和开发工作的蓝图,同时也坦承类别之间的重叠,其中某些模型、框架或数据集对GUI agent功能的多个方面都有贡献。