在人工智能领域,大型语言模型(LLM)因其在多样任务中的卓越性能而备受关注。然而,要将这些模型应用于现实世界的智能代理任务,仍存在一些挑战,尤其是在遵循程序要求和提高可访问性方面。为了解决这些问题,研究者们提出了AgentKit,这是一个直观的LLM提示框架,旨在通过简单的自然语言提示构建复杂的“思维过程”。
AgentKit介绍
AgentKit是一个创新的框架,它允许用户通过直观的方式设计智能代理的思考过程。这一框架的核心在于节点的概念,节点是构成代理思维的基本单元,每个节点都对应一个特定的子任务,并包含一个用于指导语言模型(LLM)的自然语言提示。用户可以像搭积木一样,将这些节点串联起来,构建出代理解决问题的逻辑链条。
在AgentKit中,节点的设计和组合方式非常灵活,用户可以根据自己的需求,设计出能够执行复杂任务的代理。这种模块化的设计让AgentKit不仅能够模拟人类的思考过程,而且极大地降低了设计智能代理的门槛。即使是没有编程经验的用户,也能够通过自然语言来设计和调整代理的行为。
每个节点在执行时,都会遵循一个标准化的流程,这包括预处理输入信息、向LLM发出提示以及后处理LLM产生的结果。这样的流程确保了节点能够高效且准确地完成其子任务。AgentKit支持在推理过程中动态地添加和移除节点,这样的灵活性使得代理能够适应复杂的环境和任务需求,实现类似于IF...ELSE分支或FOR...LOOPS这样的复杂逻辑控制结构。
图1展示了AgentKit的工作流程,用户将任务细分为子任务,并将每个子任务转化为一个节点。这些节点可以以不同的方式设计和组装,以实现多样化的功能。正如论文中提到的,节点的动态添加和移除自然地形成了一个动态有向无环图(DAG)。在这个图中,提示作为节点,依赖关系作为边,AgentKit通过遍历DAG来计算每个节点的LLM结果。
AgentKit的这种设计还带来了一个重要的好处——模块化可解释性。由于每个节点都是独立的,并且有明确的输入和输出,因此当代理的行为出现问题时,用户可以通过检查节点的自然语言输出来快速定位问题所在。这种可解释性对于理解和改进代理的行为至关重要。
AgentKit通过其节点化的设计,为用户提供了一种强大而灵活的方式来构建和调整智能代理。这种方法不仅降低了技术门槛,还提高了代理的可解释性和可维护性,为智能代理的开发和应用开辟了新的可能性。
图2展示了 AgentKit 中每个节点如何接收来自其依赖项的输出,并输出一个字符串来完成一个预定义的子任务。图中的橙色组件(After-query)是可选的,并且可以通过 AgentKit API 通过最少的编程进一步定制。左侧:节点内的评估过程包括组合和查询后的操作。右侧:在推理期间可以动态添加/移除节点。
示例:自动驾驶车辆代理
这个例子通过构建一个动态的有向无环图(DAG),模拟了自动驾驶车辆的决策过程。
节点设计
-
节点1(Node1) - 预测意图:这个节点的目的是识别并预测周围行人或其他车辆的意图。为了实现这一点,节点1会收集来自传感器和其他依赖节点的数据,并将这些信息格式化成一个提示,询问LLM关于周围实体的意图。这个过程涉及到组合(Compose)操作,将所有相关信息汇总成一个清晰的查询。
-
节点3(Node3) - 决定驾驶行动:在节点1收集了关于周围环境的信息之后,节点3将使用这些信息来决定最佳的驾驶行动。这可能包括避让行人、变更车道、减速或加速等。节点3同样会生成一个提示,询问LLM在给定情况下应该执行的驾驶策略。
动态图遍历
在AgentKit中,节点不是孤立工作的,而是通过有向边相互连接,形成一个DAG。在这个图中,节点的执行顺序是根据它们之间的依赖关系确定的。例如,节点3的执行可能依赖于节点1的输出,因为需要先知道周围环境的意图,然后才能做出相应的驾驶决策。
动态组件
AgentKit允许在推理时动态地添加和移除节点和依赖关系。例如,如果道路条件不佳,代理可以添加一个新的节点来识别湿滑的路面,然后再决定驾驶行动。这种动态性使得代理能够适应实时的环境变化,并做出更加精确的决策。
推理过程
在推理过程中,AgentKit会使用Kahn算法来遍历DAG,确保按照拓扑顺序计算每个节点的LLM结果。这意味着,所有没有依赖项的节点会首先被执行,然后是依赖于这些节点的节点,依此类推,直到所有节点都被处理完毕。
模块化可解释性
AgentKit的模块化设计允许开发者通过检查每个节点的自然语言输出来定位和调试问题。例如,如果自动驾驶车辆的决策出现了问题,开发者可以检查相关节点的输出,以确定是哪个子任务导致了错误。
示例代理
AgentKit的强大潜力通过两个精心设计的示例代理得到了充分展示:一个用于Crafter游戏,另一个用于WebShop虚拟购物环境。这些代理展示了AgentKit在处理复杂任务时的灵活性和有效性。
Crafter游戏代理
Crafter游戏代理是AgentKit应用的一个典型案例,它需要在开放世界的沙盒环境中进行生存和探索。这个代理集成了分层规划、反思和从交互中学习等高级功能,这些都是通过AgentKit的节点和DAG结构实现的。代理接收游戏的视觉观察文本描述和指令手册作为输入,然后输出动作索引和重复次数,以此来控制游戏中的角色。
在Crafter游戏中,代理需要执行多个复杂的任务,如收集资源、制作工具、探索环境和战斗等。AgentKit允许研究者通过定义一系列节点来构建代理的“思维过程”。例如,代理可能首先需要识别周围的物体和生物(通过特定的节点),然后根据这些信息制定一个行动计划(通过规划节点)。如果代理在执行过程中遇到意外情况或错误,反思节点会帮助它从经验中学习并调整策略。
Figure 3 描述了一个由 AgentKit 驱动的代理在 Crafter 游戏中的行为。Crafter 是一个开放世界的生存游戏,具有程序生成的特点,用于基准测试强化学习算法。游戏包括一个技术树,有 22 个成就分散在 7 个等级中。代理的任务是在游戏中执行动作,以达到一定的目标和成就。
WebShop代理
与Crafter游戏代理不同,WebShop代理面临的挑战是在一个模拟的虚拟购物环境中完成购物任务。这个任务要求代理能够理解用户的指令,并在网页上找到并购买与指令相匹配的商品。AgentKit设计的WebShop代理实现了零样本学习,这意味着它不需要依赖于少量示例来引导行为,而是可以直接根据任务要求来执行操作。
WebShop代理的设计利用了AgentKit的定制节点能力,通过这些节点,代理可以理解网页上的产品信息,并与用户的购物指令进行匹配。然后,代理会生成一个行动计划,包括搜索、浏览和选择商品等步骤。这个过程中,代理可能会使用到类似于Crafter游戏代理中的规划和反思功能,以确保能够有效地完成任务。
AgentKit的通用性和灵活性
这两个示例代理展示了AgentKit在不同领域的应用潜力。无论是在游戏环境还是在模拟的电子商务平台上,AgentKit都能够通过其节点和DAG结构,为代理提供一个清晰、模块化的“思维过程”。这种设计不仅提高了代理的性能,也使得代理的构建和维护变得更加容易。
表格 1 提供了 AgentKit 与其他流行的强化学习算法在 Crafter 游戏任务上的比较。这个比较基于几个关键指标:得分(Score)、奖励(Reward)和训练步骤(Training Steps)。
从表格中可以看出,AgentKit 在分数上取得了 20.64% 的成绩,并且在成本上相对较低,这表明它在效率和性能之间取得了很好的平衡。与人类专家相比,AgentKit 还有提升空间,人类专家的得分为 50.5%。然而AgentKit 的成本远低于一些其他模型,如 SPRING (GPT-4),它在资源利用上更为高效。
实验结果
Crafter游戏实验
Crafter是一个开放世界的沙盒生存游戏,它为测试和分析AgentKit的不同模块提供了一个理想的环境。AgentKit在Crafter游戏中的代理展示了其分层规划、反思和从交互中学习的能力。在游戏的每个步骤,代理都会接收到关于游戏环境的文本描述和一本指令手册,然后输出一个动作索引和该动作的重复次数。
实验结果表明,AgentKit代理在Crafter游戏中的表现显著。通过动态地添加和移除节点,代理能够适应游戏中的实时变化,如识别环境风险并调整路线以避免潜在的碰撞。此外,代理还能够通过与环境的交互学习新的知识,如发现制作桌子所需的确切木材数量,并将其添加到知识库中。
图4展示了Crafter游戏代理在游戏开始阶段的行动轨迹。这个图表分为几个部分:
- 左侧三列:展示了代理在游戏环境中的行动步骤,包括规划、反思、反馈和知识发现的过程。这些步骤共同协作,帮助代理成功地完成了前11个步骤,包括收集木材和制作桌子。
- 右侧一列:展示了游戏结束时代理执行的所有动作的分布,这些动作被分类为移动、互动和制作等类别。每个技能在技能库中的动作分布与人类预期基于技能名称的动作类型相吻合。
图表展示了AgentKit代理如何通过环境交互和错误识别/纠正机制进行学习。例如,代理在尝试用1个木材放置桌子时失败了,然后通过观察节点检测到失败,并通过未知信息列表和手册识别出失败的原因,从而更新了计划和行动,最终发现了制作桌子需要2个木材的信息。
WebShop任务实验
WebShop是一个模拟的电子商务平台,用于测试AgentKit在现实世界Web交互任务中的表现。与以往依赖少量示例的LLM代理不同,AgentKit设计的WebShop代理实现了零样本学习。这意味着代理能够在没有任何先前示例的情况下,通过理解任务要求和网页内容来执行购物任务。
在WebShop任务中,AgentKit代理的表现同样出色。代理能够根据用户的购物指令,搜索、浏览并识别出匹配的产品。通过定制的节点,代理能够理解产品的描述,并与任务要求进行匹配,然后选择最合适的产品进行购买。实验结果显示,AgentKit代理在完成任务的速度和准确性上都超过了现有的基准。
Table 2 在论文中提供了一个关于 AgentKit 在 WebShop 任务上性能的直接对比视图。AgentKit 在 WebShop 任务上的表现超越了其他列出的方法,它在没有先前示例的情况下,通过定制节点来完成购物任务的能力。
通过使用不同的 GPT 模型,AgentKit 能够适应不同的性能和成本要求,同时保持较高的任务完成分数。这表明 AgentKit 是一个强大的框架,可以为构建智能代理提供支持,无论是在模拟环境还是现实世界的 Web 交互任务中。展示了AgentKit 在 WebShop 任务中的有效性和灵活性。
论文链接:https://arxiv.org/abs/2404.11483
GitHub 地址:https://github.com/holmeswww/AgentKit