Multi-Agent LLM 应用程序 |当前研究、工具和挑战的概述
自动代理是 LLM 应用程序发展的下一步。目前有哪些技术、应用和局限性?
复杂的任务可以通过一组代理来解决,这些代理可以协作解决解决方案。它们也带来了一系列挑战。问机器 (i) “告诉我 NVIDIA 今天的股价”与问 (ii) “为我构建一个显示我关心的所有公司的股价的 iPhone 应用程序”有什么区别?
复杂性。
今天的 LLM(例如 ChatGPT、LLAMA 等)在获得工具(例如外部存储器、计算器、网络搜索、代码执行等)时,就会成为可以代表我们解决任务的代理(如上面的问题 i)。LLM可以编写代码(例如,使用雅虎财经软件包来获取股票价格数据),可以执行这些代码来得出答案。对于第二个任务(ii),单个智能体可能会遇到困难,这会带来显著的额外复杂性。首先,需要详细的计划,并且必须按特定顺序执行,并在需要时重试。接下来,任务可能会受益于来自多个实体(例如,ioS 工程、界面设计、后端/api、测试等)的观点或操作;这些观点和由此产生的行动需要集成到整体解决方案中。对于完成这项任务的机器来说,一种可能的方法是探索一组智能体(多智能体),这些智能体(与自己和人类)协作,直到任务完成。
随着我们在 LLM 方面的进步,我们设想了一个未来,这样的代理组可以帮助我们完成越来越复杂的任务。这种观点不是孤立的。下面引自比尔·盖茨(Bill Gates)最近的一篇文章(2023 年 11 月),对代理工具的未来可能是什么样子提供了类似的视角。
摘自一篇关于 GatesNotes.com 的文章
在未来五年内,这种情况将完全改变。您不必将不同的应用程序用于不同的任务。您只需用日常语言告诉您的设备您想做什么。根据您选择与它共享的信息量,该软件将能够亲自响应,因为它将对您的生活有丰富的了解。在不久的将来,任何上网的人都将能够拥有一个由人工智能驱动的个人助理,这远远超出了今天的技术。
此外,最近的研究表明,使用多个智能体可以改善推理和事实性,并改善发散性思维——这是用 LLM 构建的系统众所周知的局限性。鉴于这些观察结果,多智能体设置可能是构建功能越来越强大的系统的下一个前沿领域。
这篇文章评估了多智能体系统的现状,包括以下内容:
为什么是代理,还是多个代理?(https://newsletter.victordibia.com/i/137700259/agents-what-and-why)- 通过探索代理或多代理设置,我们能获得什么?
多智能体框架(例如,AutoGen、CAMEL等框架)和新兴初创公司/服务(fixie.ai、lindy.ai)的前景如何?(https://newsletter.victordibia.com/i/137700259/research-and-tools-for-multi-agent-llm-systems)一定要尝试一下 AutoGen。
使用多个代理会带来哪些挑战?(https://newsletter.victordibia.com/i/137700259/important-challenges-of-multi-agent-systems)- 这包括控制权衡(自主性与确定性行为)、评估挑战,以及解决这些系统中的隐私、安全和持续学习问题。
Agent是什么,为什么?
问题:烘焙厂1是否可以由咖啡馆2 专用?这将如何影响总体成本?
为了解决这个问题,通常需要供应链专家与其他领域专家合作。如果我们设想一台机器来执行这项任务,那么必须有效地执行几个关键功能(参见 REACT 论文 [16]):
原因:第一步是制定一个行动计划[16,21,22],概述解决任务的必要步骤。该计划必须全面、准确、高效且适应性强。一个有效的“代理人”必须能够通过问题中涉及的各种因素进行推理,考虑有关位置、容量、运输选择、成本和潜在障碍的信息。例如,该计划可能包括 1.了解当前设置, 2.收集数据, 3.澄清假设,以及 4.运行财务分析。5. 生成最终计划。
行动:每个步骤都需要特定的行动。例如,第 1 步可能涉及阅读和总结有关当前供应链流程的文件;第 2 步:搜索相关主题的数据集并运行数据库查询;第 3 步可能需要从利益相关者(如 CEO、会计师或其他主题专家)那里获得反馈(人工反馈),以验证当前计划;第 4 步可能需要计算或数据分析,所有这些都最终形成最终报告。
沟通:在整个过程中,熟练的代理必须确定管理每个步骤和相关实体(其他代理或人类)的信息流的最有效方法。例如,它必须确定主题专家应该了解的背景,或者前面步骤的哪些输出与财务分析步骤相关。
所以。。。什么是代理?
定义各不相同,但基于上述,我们可以将代理定义为可以推理、行动和沟通以解决问题的实体。
多智能体应用程序涉及一组智能体,理想情况下,每个智能体都具有不同的功能,例如语言模型、工具和目标,协同工作以解决任务。
在此过程中,还期望这些智能体表现出一定程度的自主性,并在使用人类反馈时保持高效(即,他们必须积极主动,学习人类的偏好和上下文)。事实上,他们的“帮助”程度与他们在很少或没有人为干预的情况下正确处理任务的能力相关,真正将我们从许多任务的负担中解放出来。
为什么是现在?
从历史上看,代理代表人类或实体组协作解决复杂任务的概念已经确立。对基于智能体的系统的研究包括对机器人的研究,重点是路径规划、机器人导航和感知-计划-行动范式。此外,在人类协作任务的背景下研究了多智能体系统,其中包括集体智能和众包,以及通过群体环境中的人工代理复制人类协作的努力,例如群体智能和网络理论。
然而,由于缺乏能够适应上下文和缺乏能够融合计划、任务和行动的推理引擎,智能体的发展受到了限制。
最近的基准测试显示,大型基础模型,如 GPT-3.5 和 GPT-4 等,标志着人工实体推理能力的显着提高。它们提供了一个关键的缺失组件,从而在开发真正自主的多智能体系统方面实现了新的实验和进步。这些模型标志着智能体和多智能体系统新时代的开始。
多智能体系统
我们真的需要多个代理吗?或者单个代理设置(类似于 OpenAI 引入的 GPTA ssistants 的想法,或 LangChain 中的实现)就足够了?在过去的几个月里,我花时间思考这个问题,我目前的论点是,一些复杂的任务具有非常适合多智能体解决方案方法的属性。
复杂任务
在上面的介绍中,我提到了“任务复杂性”,作为多智能体方法的潜在驱动力。但是,哪些属性使任务变得复杂?以下列表探讨了此类属性的初始集:
任务分解
需要计划,这涉及将任务分解为必须成功完成的步骤。这是机器人和规划文献中广为人知和研究的特性[21,22]。
指令复杂性
复杂任务的说明可能冗长且未明确(例如,写一本 100 页的书,其中包含以下字符;报税等),需要多次迭代来构建上下文并完全定义解决方案。
冗长的指令或上下文对单代理系统来说是一个重大挑战,因为已知的冗长或复杂的指令存在困难(LLM在长上下文中很难遵循指令[7])。
认知科学的理论也证明,需要专门提高长期上下文性能的方法。例如,认知负荷理论表明,人脑的工作记忆能力有限。冗长且未指定说明的指令可能会使此容量不堪重负,从而导致理解和性能下降。通过构建指令以尽量减少不必要的认知负荷,我们可以提高任务性能。
多元化的专业知识
受益于多个实体的协作,每个实体都为任务带来了不同的技能/专业知识、工具或观点。
紧急解决方案
解决方案由多个代理之间的交互引起的问题,暴露于先前步骤的输出以及每个代理的状态和过程增强了解决方案。这一特性的灵感来自复杂系统理论1中的观察结果,其中系统的整体行为来自其各部分的相互作用。它还受到启发,它结合了元认知研究的见解,这表明智能体对自己认知过程的意识和调节可以显着影响解决问题的过程。元认知技能(对于当今的单个LLM具有挑战性[23,24])使智能体能够实时反思、评估和调整其策略,从而在多智能体协作的新兴框架内提供更具适应性和潜在创新性的解决方案。
自主探索性问题解决
任务解决方案事先不知道,可能采取各种形式,并且是探索广阔搜索空间(优化)的结果。对于这类问题,编写确定性管道(例如,LLM 提示、特定工具)更具挑战性,因此需要能够自我编排(具有一定的自主权)的代理来解决任务。
下面提到了一些复杂任务的例子:
Web 应用程序开发
构建一个 Web 应用程序,以管理和标准化夏威夷州所有承包商的数据。数据格式必须向后兼容,并提供仪表板和搜索以帮助回答关键问题,例如,哪些承包商按计划,哪些承包商迟到等;允许与其他州共享数据并确保 SOC 2 合规性。
供应链分析
确定圣克拉拉 Chancey Boulevard 的星巴克是否可以由圣何塞 Clive Avenue 的咖啡豆烘焙工坊提供服务,并分析成本影响。
多个实体的报税
为三家公司的投资组合创建详细的分析和最终建议:加利福尼亚州的 LLC、纽约的 S Corp 和伦敦的初创公司。协助他们报税。
幻灯片增强功能
查看并增强幻灯片,使其更具交互性。纠正语法,改进图形,并应用适当的动画。这些任务需要仔细规划,需要为多个下游步骤提供必要的输出,并咨询人类专家以获得反馈。
从 LLM 到 MultiAgent 方法。
LLM已经可以解决许多以前只在人类能力范围内的任务。但是我们目前训练LLM的方法使它们有盲点 - 幻觉和需要多步骤推理,逻辑或计算的taks的性能下降。
代理(LLM + 内存/知识源 + 工具)。让 LLM 访问知识源有助于地面反应(减少幻觉),同时让他们访问工具(例如代码编译器、API 等)允许他们处理计算、数据处理等任务。
但是,许多复杂的任务(如我们上面运行示例中的供应链任务),一些属性
多代理设置(代理组)。多智能体方法可实现“关注点分离”,每个智能体都可以解决特定目标,从而改善结果。先前的研究表明,多个智能体可以帮助鼓励发散性思维(Liang et al., 2023),提高事实性和推理性(Du et al., 2023),并提供验证(Wu et al., 2023)。
总之,对于复杂的问题,论点是多智能体设置可以提高性能。
一个真正的问题解决过程涉及重复使用现有信息来启动探索,这反过来又会披露更多信息,直到最终找到获得解决方案的方法。
多智能体LLM系统的研究和工具
IMO,多智能体方法仍然新兴,类似于早期用于构建神经网络的 Theano/Lua/Tensorflow/Pytorch 等工具,我们开始看到旨在实现多智能体应用程序开发的 OSS 框架。
本节旨在简要介绍AutoGen(用于构建多智能体应用程序的框架。免责声明 - 我是 AutoGen 的贡献者),并让读者了解其他相关的 OSS 项目:
自动生成
AutoGen 在如何促进多智能体应用程序的设计方面做出了一些重要决策
用于定义代理的灵活 API:AutoGen 提供了一个易于使用的 API,支持与代理之间以及代理和人类之间的多代理通信
会话编程范式:代理和人类通过共享消息列表进行通信,他们都附加到该列表。
生态系统集成:支持不断增长的生态系统集成列表。例如,AutoGen 支持多个 LLM 提供程序、多模态模型和代理、低代码工具等。
其他多智能体 AI 框架
[推荐]AutoGen:支持使用多个代理开发 LLM 应用程序的框架,这些代理可以相互交谈以解决任务。免责声明:我是贡献者!
骆驼:大规模语言模型社会“心智”探索的交际媒介
ChatDev:探讨代理协作编写软件的想法。
Langroid - 利用 LLM 与多智能体编程.
请注意,还有一些其他 OSS 项目侧重于代理,但不太强调多个代理协作完成任务。一些例子包括:
LangChain Agents - Langchain 的一个子集,其中使用语言模型作为推理引擎来确定要执行的操作顺序和顺序。
LLAMAIndex 代理 - “代理”是一个自动推理和决策引擎。它接受用户输入/查询,并可以做出执行该查询的内部决策,以便返回正确的结果。
BabyAGI - 人工智能驱动的任务管理系统的脚本.
AutoGPT - 由 LLM 提供支持的半自主代理,可为您执行任何任务
多智能体的挑战
持续学习和记忆
当智能体处理任务时,他们可能会开发子问题的解决方案,或者寻求人类的反馈/帮助来解决这些子问题。当将来遇到相同的子问题时,他们经常重复这个发现过程,导致效率严重低下。乍一看,存储每个子问题及其解决方案以供以后调用似乎是一个简单的解决方案。然而,在实践中,出现了一些挑战。这些包括确定如何识别子问题以及存储子问题的详细程度;评估子问题是否可以跨不同代理或组织边界重用,以及任何相关的安全影响;了解子问题之间是否存在相互依赖关系;并弄清楚如何创建可以适应各种上下文的子问题的广义表示。
Voyager [7] 等工具通过在 Minecraft 中实现一个能够学习编写代码(技能)的代理来研究这一概念,然后将其存储在内存库中以备将来重用。
高效编排
业务流程是指定义哪些代理处理任务,以及如何执行信息或操作序列以解决任务。找到最有效的代理组或工作流来解决任务是一项重要的元任务。是人工手动设计/指定代理列表,还是应该自动发现最佳代理工作流程(通过一些优化过程)?(例如,AutoGen 中的自动构建)。此外,在工作流设计之后,我们如何才能有效地路由操作回复空间(哪个座席无手完成任务的哪个部分)?此外,我们如何管理跨代理的通信模式,例如,我们是否根据问题域施加约束,或者为这些代理提供自主权来定义这些约束。
在推导出优化的编排方法时,可能有机会借鉴许多相邻理论领域的想法,例如机器人和规划、群体智能2、强化学习、网络理论3、行动者网络理论4。
任务终止条件(无限循环)
当agent长时间协作处理任务时,确定任务的完成状态可能具有挑战性。
当任务完成未明确定义时,这可能会导致代理交互的无限循环。
这也引入了新的用户体验注意事项,以探索沟通代理交叉跟踪(代理所采取的过程)以及任务状态和结果的一些具体摘要的正确方法。
AutoGen [1] 根据函数中定义的消息或自定义逻辑提供终止条件,有利于控制。AutoGen 和 CAMEL 都使用最大对话回合数来限制对话长度。在实践中,当智能体导航任务时,他们可能需要更动态的任务控制机制。一种可能的方法是“保姆”模型的想法,该模型可以帮助在各个点上对决策进行排名或确定优先级。例如,模型可以对给定任务的多个计划进行排序,确定计划是否成功或可能从提前终止中受益,或检测容易发生的无限循环。经过训练以编码专家用户偏好的小型奖励模型[15]可以重新用于此角色。
结论
在未来,代理可以可靠地帮助我们完成复杂的任务(例如,构建整个软件应用程序,文件税等)的承诺既有趣又可能接近。今天的 LLM 可以成为此类代理的构建块。当获得工具(LLM + 工具)的访问权限并且当他们在小组中工作时,这些代理可以解决当今无法实现的复杂任务。
然而,有许多开放的挑战,使这个方向成为一个活跃而有趣的研究领域。