近年来,大型语言模型(LLM)在多种任务中展示了显著的性能,包括具体规划和行动、问答或对话以及一般问题解决。然而,要将LLM应用于现实世界中的通用智能体任务,仍存在两个挑战: 一是遵守程序性要求 ,二是 智能体的可访问性和易用性 。现有的智能体框架没有遵循明确的推理程序,且基于代码的智能体依赖于为特定任务定制的API平台,这通常需要许多代码示例,可能难以产生。
用户将任务分解为代表“思考过程”的子任务(节点),并为这些子任务(节点)创建提示。在 AgentKit 中, 子任务(节点)可以以不同的方式设计和组装,以实现多样化的功能,类似于乐高积木。
为了克服这些挑战,提出了 AgentKit并开源 ,这是一个为组装简单自然语言子任务而设计的LLM提示框架,以解决复杂任务。AgentKit的基本构建单元是“节点”,每个节点包含针对特定子任务的自然语言提示。用户可以将这些节点串联起来,形成节点链,以明确实施一个自然结构化的思考过程。AgentKit的节点可以以不同的方式设计和组合,实现多种高级功能,如即时的层次化规划、反思和从交互中学习。
AgentKit中的每个节点都接收其依赖项的输出,并输出一个字符串来完成一个预定义的子任务 。橙色组件(After-query)是可选的,并且可以通过AgentKit API进行最小的编程定制。 左侧 :节点内的评估过程由compose(组合)和after-query(查询后)组成。 右侧 :在推理期间可以动态添加/移除节点。例如,节点n7的after-query操作会根据LLM对节点查询的肯定或否定回答,添加一个条件节点n+/n−。这引发了条件分支。
AgentKit的设计允许动态添加和移除节点及依赖关系,形成动态有向无环图(DAG),并在推理时通过遍历DAG来计算每个节点的LLM结果。此外,AgentKit提供了一个中心数据库,使用户可以将任务规格、指令和当前游戏观察传递给图中的每个节点,并允许节点存储和传递永久信息。
由AgentKit驱动的示例智能体, 为了节省空间,节点名称被缩写。(a) 在游戏中的每一步 ,三个总结节点(绿色)ns-obs、ns-plan、ns-action 分别总结当前步骤的观察、计划和行动。(b) 在步骤 T 时 ,所有规划节点(蓝色)接收 oT−1、oT 和手册 I 作为输入,并输出 3 个子目标和一个技能 sT。nreflect 反思最近 25 步的总结,而 nchallenge、ngate 决定是否将步骤 (T − 1) 的子目标延续或更新。(c) 每 3 步在技能 sT 下 ,(nfeed 紫色) 反思所有在 sT 下的游戏历史,并为规划器 (b) 生成一个特定技能的反馈。(d) 每一步 T ,nkb-add(灰色)检查 oT−1、oT 和 I 以从 Lunk 中识别新信息。nunknown 通过识别当前子目标从 I 中缺少的信息来添加到 Lunk。
通过AgentKit实现的智能体在Crafter游戏和WebShop任务上实现了最先进的性能。
在 Crafter游戏 中,AgentKit实现了层次化规划、短期反思、长期反思和从交互中学习的能力。
左侧三列 :在Crafter游戏中的一个示例轨迹。不同的节点在规划、反思、反馈和知识发现方面协同工作,以完成前11步并成功制作桌子。通过环境交互和错误识别/纠正,智能体发现了两个关于“每次Do动作所需木材”和“制作桌子所需木材”的信息片段,这些信息最初在说明书中被省略了。 右侧列 :游戏结束时,智能体采取的所有动作(分类为移动、Do—互动、制作)的分布,针对技能库中的每项技能。基于技能名称,动作分布与人类预期相符。
在 WebShop 任务中,AgentKit设计了一个零样本智能体,不依赖于人类轨迹的示例,而是通过定制节点来完成任务。
智能体在WebShop上与基线系统的对比
。为了节省成本,报告了WebShop前100个样本的得分。AgentKit在使用GPT-4和成本更低的GPT-4-turbo时都达到了最先进的性能 。
AgentKit: Flow Engineering with Graphs, not Coding
https://arxiv.org/pdf/2404.11483.pdf
https://github.com/holmeswww/AgentKit
推荐阅读
- • 对齐LLM偏好的直接偏好优化方法:DPO、IPO、KTO
- • 2024:ToB、Agent、多模态
- • TA们的RAG真正投产了吗?(上)
- • Agent到多模态Agent再到多模态Multi-Agents系统的发展与案例讲解(1.2万字,20+文献,27张图)
欢迎关注我的公众号“ PaperAgent ”, 每天一篇大模型(LLM)文章来锻炼我们的思维,简单的例子,不简单的方法,提升自己。