论文阅读_使用有向无环图实现流程工程_AgentKit

英文名称: AgentKit: Flow Engineering with Graphs, not Coding
中文名称: AgentKit:使用图而非编码进行流程工程
链接: https://arxiv.org/pdf/2404.11483.pdf
代码: https://github.com/holmeswww/AgentKit
作者: Yue Wu, Yewen Fan, So Yeon Min, Shrimai Prabhumoye, Stephen McAleer, Yonatan Bisk, Ruslan Salakhutdinov, Yuanzhi Li, Tom Mitchell
机构: 卡内基梅隆大学, NVIDIA, 微软, 波士顿大学
日期: 2024-04-17
引用次数: 80

1 摘要

  • 目标:提出了 LLM 提示框架 AgentKit,用于构建能通过自然语言提示进行复杂“思考过程”的多功能代理。
  • 方法:AgentKit 使用节点作为基本构建块,每个节点包含一个特定子任务的自然语言提示。用户可以将这些节点像乐高积木一样堆叠起来,形成一个复杂的思考过程。
  • 结果:AgentKit 设计的代理在 WebShop 和 Crafter 上实现了最先进的性能。

2 相关知识

2.1 Agent

在不同的上下文中,"Agent" 可能有不同的含义。有时 "Agent" 被用来指代一个完整的系统,它可以解决复杂的问题,通过将大任务拆分成小块,并使用各种工具或 LLM 来处理这些小块。有时 "Agent" 用来指代这些小块,这些小块各自执行特定的任务,并协同工作以完成更大的任务。

在 Langchain 或类似的系统中,Agent 常被分为思考模块和行动模块。思考模块负责处理信息、做出决策和规划,而行动模块则负责执行这些决策和规划。这是一种根据角色和职责的分类,与具体工具或方法无关。

2.2 问题分析

在处理复杂问题或者提供多元化功能时,一个 Agent 执行完之后,可能需要多个 Agent 来进行后续操作。如果需要手动指定,则需要编写大量的逻辑来管理这些 Agent 之间的关系。当增加或修改功能时,会面临复杂的逻辑修改。

许多时候,行动模块的功能已经比较完善。如果我们能清晰地描述模块间的依赖关系,从而避免穷举;思考模块会根据当前的环境来构建解决问题的流程,并对这个流程进行反思和优化,那么整个链路就打通了。

3 读后感

前几天,和朋友讨论了如何让 Agent 自我构建知识体系,自我进化。刚好看到了这篇论文,作者对 Agent 结构进行了更为深入和丰富的思考,并提出了流程工程,或者思维工程的概念。

以前,Agent 的组合相对较简单。一种方法是通过程序限定当前步骤可以使用哪些 Agent,这需要大量人工干预。另一种方法是将当前环境和所有可用的 Agent 一起交给思考 Agent 自由选择,但这可能会引发许多错误,出及 token 的浪费。

这篇论文提出的方法,类似于使用强化学习通过精调 LLM 优化 Agent。不同之处在于本篇中知识存储在模型的外部,更具有可解释性。这两种方法各有千秋。

这篇论文针对思考和行动这两个目标,在结构上分别进行了优化:在行动方面,将每个子功能都抽象成模块,可灵活组合。同时,通过图形的方式建立并约束了模块之间的关系。在执行过程中,根据具体情况进行动态路由,而非预先设定好具体逻辑。在思考方面,结合了反思,分层规划,长短期记忆,并在探索过程中构建知识库,以优化 Agent 的调用过程。

4 引言

图 1:用户将任务分解为代表“思维过程”的子任务(节点),并为子任务(节点)创建提示。AgentKit 中的子任务(节点)可以以不同的方式设计和组装,以实现不同的功能,类似于乐高积木。

本文的主要贡献是提出了一个端到端多功能人工智能代理的自然语言“编码”框架。这个框架具备进行计划、反思和学习的能力。

具体方法是生成了一个有向无环图,该图由动态节点和依赖关系的集合构成。在执行过程中,遍历这个图,根据动态图的拓扑顺序计算每个节点的 LLM 结果。使用最后一个节点直接输出环境操作。为了提高功能性,可以通过编码在推理过程中动态添加和删除节点和依赖项,从而完成复杂的路由。

5 优化行动

首先,将“思维过程”定义为一系列相互关联的自然语言子任务。每个子任务都以节点形式呈现,这些节点通过有向无环图(DAG)中的依赖关系链接,以实现各种逻辑和连贯的过程。

每个节点都能够接触到中央数据库。用户可以通过此数据库将任务规范、指令和当前的游戏观察结果传递到图中的每个节点。此外,数据库还使节点能够存储持久信息(例如,计划或知识库),并将这些信息传递给未来的步骤。

图 -2 展示了子节点内部和外部的构造。

5.1 节点组件

对于每个节点 v,用户通过指定提示 q 和依赖项 D 列表来定义子任务。在节点内部,AgentKit 运行一个内置流,该流对输入进行预处理(Compose),LLM 使用预处理的输入和提示 q 进行查询,并选择性地对 LLM(After-query)的输出进行后处理,如:图 -2 的左侧所示。(图 -2 已经画得非常清楚,就不在此展开了,细节请见论文)

5.2 动态组件

为了支持如分支等高级功能,AgentKit 提供了 API,供用户在推理过程中可以动态地修改 DAG。如图 -2 的右侧显示,节点 n7 可以根据当前的状态,动态地在图中增加(或删除)组件。值得注意的是,所有这些修改都是临时性的,并且,禁止对已在此阶段的评估节点进行修改。

5.3 动态图遍历

使用了 Kahn 算法来遍历有向无环图的静态节点和动态添加/删除的节点。这种算法特别适用于拓扑排序。由于给定图可能存在多种拓扑排序,因此组件的动态添加/删除可能引发不确定性或意外行为。为了防止这种情况,采取了相应的保护措施,以捕捉潜在的意外行为。

6 优化思考

这里演示了 Crafter(Hafner,2021)游戏的代理,下面按图 -3 中的 a-d 分别说明。

6.1 总结并跟踪

图 3(a),在每一步,Agent 会总结并跟踪:1)观察(OTns-obs);2)计划和推理(OTns-plan);3)观察变化以推断基于前一动作是否成功(OT−1ns-action)。

6.2 具有短期反思的分层规划器

图 3(b),在步骤 T 中,所有的规划节点将 oT−1、oT 和手册 I 作为输入,并输出 3 个子目标和一个技能 sT。nreflect 反思最近 25 步的总结,而 nchallenge 和 ngate 决定是否保留(T - 1)的子目标或进行更新。

利用关于最重要的子目标的信息,代理会跟踪一个“技能”列表(nskills),提示 LLM 检索和创建新的技能,以构建一个技能库 S。

6.3 长期反思

图 3(c),每 3 个步骤,通过 LLM 提示技能 s 下的所有先前步骤来计算特定于技能的反馈。

Onfeed 将成为后续计划和行动决策的上下文。

6.4 在与知识库交互的过程中学习

图 3(d),代理使用两个精心设计的提示(节点):nunknown 和 nkb-add,维护未知信息列表 Lunk 和知识库 KB。在每个步骤 T 中,nkb-add 提示 LLM 通过理解最后两步的观察 oT−1 和 oT,从 Lunk 中识别信息。识别的信息被存储在知识库 KB 中。然后,nunknown 提示 LLM 列出当前子目标需要的缺失信息(来自说明手册和知识库)。缺失的信息列表随后被添加到 Lunk 中。

7 实验结果

8 相关论文

  • SPRING: Studying Papers and Reasoning to play Games

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/604263.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

射频无源器件之耦合器

一. 耦合器的作用 在射频电路中,射频耦合器将一路微波功率按比例分成几路,用于检测或监测信号,如功率测量和波检测,还可改变信号的幅度、相位等特性,以满足不同的通信需求。根据输入与耦合端的功率差,常被分为5dB、6dB、10dB等耦合器。射频耦合器的类型主要包括定向耦合…

区块链 | NFT 相关论文:Preventing Content Cloning in NFT Collections(三)

🐶原文: Preventing Content Cloning in NFT Collections 🐶写在前面: 这是一篇 2023 年的 CCF-C 类,本博客只记录其中提出的方法。 F C o l l N F T \mathbf{F_{CollNFT}} FCollNFT​ and Blockchains with Native S…

命名空间、C++的输入输出、缺省参数(默认参数)、函数重载

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

基于Springboot的校园健康驿站管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的校园健康驿站管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…

TMS320F2812DSP最小系统原理图及PCB文件

目录 1、原理图 2、PCB 资料下载地址:TMS320F2812DSP最小系统原理图及PCB文件 1、原理图 2、PCB

视频转GIF动图:一键批量操作技巧,轻松实现动态图像转换

在数字媒体时代,GIF动图因其小巧、循环播放的特性,在网络传播中占据了重要地位。而将视频转换为GIF动图,不仅可以快速捕捉视频中的精彩瞬间,还能为社交媒体、网站和博客等内容创作增添生动与活力。本文将介绍如何通过一键批量操作…

三、VGA接口驱动与图像显示动态移动

文章目录 一、参数介绍二、彩条显示2.1 模块系统架构框图2.2 行、场同步波形:2.3 代码三、VGA 图像显示动态移动3.1波形设计3.2代码 一、参数介绍 对于普通的 VGA 显示器,共有 5 个信号:R、G、B 三基色;HS(行同步信号&#xff09…

Mysql基础(五)外键约束

一 外键 激励: 每天进步一点点即可 ① 思考 1、在MySQL中,我们知道主键 PRIMARY KEY的主要作用是唯一区分表中的各个行 [记录];思考:但是对于外键 foreign key比较陌生? 那么外键作用以及限制条件和目的呢? ② 外键的定义 1、外键是某个表 A中…

第一天复习Qt文件读取

Qt文件操作: 1、QFile QTextStream操作文件案例: 1、打开文件 QFile file(absolute filepath | relative path); file.readLine()返回内容长度,如果为-1就是读取失败 file. Close()读取后关闭 file.errorString()返回文件打开发生的错误2、…

如何购买阿里云99计划的ECS云服务器?99元购买阿里云2核2G3M服务器教程

阿里云助力中小企业和开发者无忧上云的“99计划”中有两款性价比超高的ECS云服务器,2026年3月31日活动结束前新购和续费价格一样。 其中个人和企业新老用户同享的2核2G3M服务器仅需99元/年(续费同价),企业新老用户同学的2核4G5M仅…

外贸企业6大客户开发渠道优缺点全面解析 | 箱讯科技国际贸易综合服务平台

一、展会的重要性 展会,作为历史悠久的客户开发渠道,一直备受企业推崇。它汇聚了来自不同行业的企业,为大家提供了一个集中展示产品和技术的大舞台。在没有互联网的年代,展会几乎成为外贸交易的核心媒介。至今,它依然…

射频无源器件之巴伦

一. 巴伦的作用 Balun,balanced-unbalanced的缩写,即平衡-不平衡转换器,是一种三端口无源器件,其本质是通过电感线圈的相互耦合实现的信号转换。用于平衡信号(差分信号,即振幅相等、相位相差180 的两个信号)与非平衡信号(单端信号)的相互转换。 Balun是高频电路重要器…

《编译原理》阅读笔记:p1-p3

《编译原理》学习第 1 天,p1-p3总结,总计 3 页。 一、技术总结 1.compiler(编译器) p1, But, before a program can be run, it first must be translated into a form in which it can be executed by a computer. The software systems that do thi…

水面垃圾清理机器人的视觉算法研究

卷积神经网络是一种分层的数据表示模型,通常由数据输入层、卷积层、池化层、 非线性激活函数、全连接层以及输出结果预测层等组成,其中卷积层、池化层和非线 性激活函数是卷积神经网络中的重要组成部分。此外,有些模型会增加其他的层(归一 化…

16.接口自动化学习-编码处理与装饰器

1.编码和解码 编码:将自然语言翻译成计算机可以识别的语言 hello–01010 解码:将机器识别的语言翻译成自然语言 2.编码格式 UTF-8 GBK unicode 3.编码操作 #编码操作str1"hello呀哈哈哈"str2str1.encode(gbk)print(str2)print(type(str2))…

面试笔记——多线程使用场景

线程池使用场景(CountDownLatch, Future) CountDownLatch CountDownLatch(闭锁/倒计时锁)用来进行线程同步协作,等待所有线程完成倒计时(一个或者多个线程,等待其他多个线程完成某件…

漏扫神器Invicti V2024.4.0专业版

前言 Invicti Professional是Invicti Security公司推出的一个产品,它是一种高级的网络安全扫描工具。Invicti Professional旨在帮助组织发现和修复其网络系统中的潜在安全漏洞和弱点。它提供了全面的漏洞扫描功能,包括Web应用程序和网络基础设施的漏洞扫…

2024 GESP6级 编程第一题 游戏

题目描述 你有四个正整数 ,并准备用它们玩一个简单的小游戏。 在一轮游戏操作中,你可以选择将 减去 ,或是将 减去 。游戏将会进行多轮操作,直到当 时游戏结束。 你想知道游戏结束时有多少种不同的游戏操作序列。两种游戏操作…

[微信小程序] 入门笔记1-滚动视图组件

[微信小程序] 入门笔记1-滚动视图组件 1.页面&组件&渲染 在小程序是由一个个页面page组成, 而页面又是由一个个组件component组成.和网页类似,这里的组件指的就是输入框<input>,按钮<button>,文本<text>,图片<image>等元素.如果你学过网页一…

;【排列【

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…
最新文章