查看原文
其他

Multi Agent策略架构 基础(1)【2023Q4】

孔某人 孔某人的低维认知 2023-12-12

0、前言

最近Multi Agent的热度变得高了起来,我也遇到一些希望了解这方面认知的人。翻了下目前似乎还没有符合我心愿的基础介绍材料,所以才有了本文。

本文实际上是一个非技术细节的基础介绍,考虑到需要阅读本文的同学应该也都不是自己有精力细抠目前demo项目代码的人,所以就没有特意在标题中注明。另外,我个人实际上觉得本文要介绍的一些内容远比抠那些现有的项目细节更加重要

在我看来知道本文提到的信息往多了说也才60分,离能做出靠谱的方案还有不少距离,所以我把本文称为“基础”系列。

1、背景信息简介

这个思路并非全新的,所以先介绍一下相关的领域。

1.1、Multi Agent RL

Wiki:https://en.wikipedia.org/wiki/Multi-agent_reinforcement_learningulti-agent_reinforcement_learning

多智能体强化学习是我认为与该思路最接近的一个方向,我认为实际上这个思路就是从该领域平移而来。

强化学习(RL)本来就已经是一个比较玄学的领域了,Multi Agent RL是RL中也比较玄学的领域,堪称“玄学的平方”。说实话我并不建议大家去深入钻这个领域,适当涉猎即可。

1.2、Multi Agent用于LLM数据生产与对齐

在LLM相关领域中,我最早看到Multi Agent思路还是用于对齐或其他数据生产,而不是现在这样作为AI Agent运行时的内部策略架构。

我是在2023.6月的智源大会上才发现该思路已经成为学术界的一种主流思路,因为人工设计方式进行对齐看起来没有希望。OpenAI新建的Superalignment 团队也是以这个技术思路去进行探索的。

在当时我写了一篇文章介绍这方面:《自动化的RLHF数据生成 与 Multi-Agent Alignment》(文章发表于知乎)。

1.3、Multi Agent策略框架的demo

1.2节的思路其实还都是在LLM的数据准备、训练、对齐阶段,但本文所讨论的思路已经是试图直接把Multi Agent的方式应用在AI Agent运行期间。

这方面有几个代表性的demo项目:

  • AutoGPT。严格来说AutoGPT内部只是单Agent,但它自己含有自我批判的逻辑,在我来看可以看成是Multi Agent策略框架的一个退化版本。

  • Smallville 小镇 ,国内又称作“斯坦福小镇”。这是Multi Agent用在AI Agent的实际运行中最早的广为认知的案例,虽然说它实际上更像是一个随机剧情生成器,并没有太多能对其走向进行精确干预的能力。如果有玩过Rimworld之类的生存模拟器类游戏的同学肯定会对此非常熟悉。

  • 面壁智能的 ChatDev 。虽然我很想说这更像是一个公司PR工作。但它确实在Smallville上前进了一步:(1) Agent之间的交互走向不再是漫无目的的,而是有着一个大体的目标。(2)对于组织内的分工有了更明确的设计。


我建议所有本文的读者都该找一些Rimworld的实况路线来看下,虽然它没有使用LLM,但在用于创作剧本、允许用户进行部分干预这方面,跟Multi Agent应用面对的场景我认为几乎没什么差别。如果觉得Rimworld实在太复杂,可以找一些简单的来看,例如“冰汽时代 (Frostpunk)”的录像。

2、消除焦虑

虽然有点早,但我得先在这里消除一下读者的焦虑,以及给一些头脑发热的同学泼一些冷水。

我们交给ChatDev的任务,其实也可以交给AutoGPT。但AutoGPT推出这么久了,大家的工作被AutoGPT替代了么?AutoGPT构建的产品遍地走了么?只靠AutoGPT的公司大行其道了么?都没有。

AutoGPT官方自己也宣称只是一个技术Demo,更多是向大家展示可以有这样的思路,但从实际落地角度上来说还有很远的距离,至少项目官方自己没觉得能够直接靠打磨这个方式去创业。

本质原因不外乎两点:

【1】AutoGPT能够完成任务的成功率是否足够高?

如果虽然理论上能成功,但成功率低于0.01%,那么这对于很多场景来说无法接受。

很遗憾对于稍微复杂的任务来说,AutoGPT的成功率看起来跟0也没什么不同。

【2】成本是否足够低?

由于AutoGPT单次运行的成功率并不是100%,所以得到单次成功结果需要的成本为:【单次运行成本】/【成功率】。

对于AutoGPT来说,单次运行需要的成本就可能达到数十美元,且上不封顶。再叠加成功率的系数,实际成本是无法接受的。

回到ChatDev的情况,我相信新的框架能够提升一些最后的【成功率】,但面对复杂问题仍然是非常低的。另外Multi Agent的运行方式会更加放大单次运行成本。从【单次运行成本】/【成功率】的角度来说到底优化了多少可能并不那么乐观。

目前由于之前一段时间LLM应用层并没有孵化出太多靠谱的应用,让很多人把Multi Agent当作下一个潜在的银弹。但我目前的看法是:之前的RAG并非银弹,当前的Multi Agent也并非银弹。它有其适合的场景,但当前对其的追捧热潮也终会快速过去。

3、Multi Agent策略架构

3.1、分类

我把类似ChatDev这样的Multi Agent方式归类为【策略架构】,和ToT、GoT等等是类似的层面。当然Multi Agent的能力理论上可以更强一些,但我认为其本质能力上仍然在同一个台阶上。

我认为可以把某个具体的Multi Agent的实现在几乎保持其同等效果的情况下简化为某个XoT的实现。到底是要单设一些Agent角色,还是要求“在XoT的框架中对于每个Thought都进行各种角色视角上的review和进一步推理”,在我来看没有太过本质的区别。

本来还想写一下我对各种XoT框架的评价的,但由于精力问题压到了现在还没写,只能先写Multi Agent了。实际上,我看待这两类东西是很类似的,只是Multi Agent显式地设置角色,相对于XoT框架来说更符合大家在一般人类组织中的经验而已。

3.2、为什么需要Multi Agent

虽然不同的Agent有着不同的角色设定(或system prompt),但实际上底层可以调用同样的LLM。那么问题是:Multi Agent比单Agent好在哪里?

这个问题是比较复杂和难懂的。我尽量尝试讲清楚我的认知,但我不是很有把握能让大家都理解,请读者放慢阅读速度,并可能需要暂停阅读去查阅一些相关资料。

【1】单视角的缺陷

从人类的认知科学已经知道,单个人的视角是有缺陷的,即使他是一个很理性的人并尝试以很理性的方式独立思考,就结果来说这个思考过程的结果仍然是不太靠谱的。人类是以群体的方式进化的,只有在群体讨论、相互检查、相互批判、一起理性推理才能够以一个比较好的准确率得到正确的推理结果。

这方面可以进一步阅读:


那么LLM有单视角缺陷的问题么?也是有的。虽然LLM可以扮演很多视角,但会随着system prompt或者前几轮的对话快速坍缩到某个具体的视角上,按照这个视角进行对答。在我来看,进入到单视角之后,LLM也一样有着单视角问题,即使像是AutoGPT要求进行自我批判之后,仍然也距离多视角辩论有差距。

对这方面有兴趣可以参考我之前的文章:


而Multi Agent可以跳出这个限制,更加灵活的调用LLM已经学习到的其他视角来进行自我修正和推理。

当然正如前面所说,使用一些prompt模板也可以在XoT框架上实现同样的功能。

【2】推理过程的显式化

相对于单Agent的AutoGPT,Multi Agent有一个优势:推理过程变得更加显式化了,表现在:

  • 设定者可以指定包含哪些视角,排除哪些视角。而不是交给单Agent的自我批判的不确定性。

  • 外部观察者和调试者可以直接按照角色的发言来更高效的了解推理过程,而不是在一个Agent的漫长自我思考历史中进行整理。

  • 对于每个Agent来说,他只需要关注自己的立场、与自己冲突的观点/信息、其他可能与自己有关的信息即可。而不再需要完整记忆所有历史。从实现的角度上来说能够比较自然也普适地降低对于记忆容量的要求

  • 但也导致没法像XoT那样能在推理过程中动态引入新视角,有利有弊。


当然,这些方式在XoT框架上也都能够手工实现,只是Multi Agent的框架相对来说似乎更通用一点,Multi Agent的框架也不能完全排除XoT框架中的好的设计,这两者应该是融合的。

3.3、Multi-Agent擅长的领域

目前来看,Multi Agent的擅长领域有:

【1】广义的剧本生成

这其实是类似Rimworld这样的游戏的方式。设定一个环境场景,放入一些人设的Agent,让他们自发活动,产生各种故事。

可以尝试对于故事走向做一些干预,或者是从产生的历史中剪辑出有意思的部分,方式不止一种。

由于这是自动生成的过程,所以可以反复修改。

虽然这个过程的成本仍然是较高的,但对标的是人类编剧,我认为应该还算是便宜的。

但确实目前Multi-Agent在一些干预能力上还有一些制约,例如:我们想要这个小世界模拟出世界崩溃的情况。这是可能的么,我们的要求是否是不可行的?怎么干预来实现逐步到达这个目标呢?

【2】复杂问题的推理、决策、信息层面的行动

ChatDev就是这种情况,本质不是一个随机的小世界模拟,而是希望解决一个复杂的问题。

解决这个问题的过程中,需要几方面的能力,需要多视角review来确保是一个较为正确或者是较优的方案,而不只是某个人或者Agent的拍脑袋。

ChatDev的构建一个程序的过程 也是把思路逐步细化为一个可行方案的过程。

在复杂决策的层面上也有一些问题需要解决,除了目前成本较高外,我还发现一个问题:

被忽视的LLM伪随机性问题,贪心解码为什么无法消除它 【2023Q3】

【3】高质量的语义数据生产

这个其实就是前面1.2节的目标之一。

我们可以靠Multi Agent模拟的过程来找出一个Thought能够推理出的经过其他Agent review过的更可靠的推论Thought,这个数据可以本身作为CoT语料数据去再喂给LLM进行微调或训练。

不只是复杂的推理,还有很多其他的场景也可以使用类似的方式进行高质量数据生成。

同样,这个场景下也有这个方式成本较高的问题。最好是整个流程本来就作为某个业务场景的需求,这样它记录下的数据就可以低成本的进行收集。

3.4、Multi-Agent策略框架的可操控性

Multi Agent的可操控性是一个比较难的问题,目前我并没有看到很完善的方案。从有用性的角度上来讲,还是列一些常见的思路:

【1】Agent的选择

Agent人设的选择本身就是一种操控,而且影响不小。就好像现在LLM对齐中的“红队”,设置和不设置会明显的影响内部的研发流程和研发质量。

【2】单步推理/对话的控制

一种简单的方式是在单步的过程中就进行控制,例如:

  • 如果话题或者范围偏离预设,就直接尝试重新生成当前发言的Agent的内容,或者直接让其跳过本轮。

  • 在Agent的system prompt中设定,让其避免讨论某些内容,或者更积极的讨论某些内容。

  • 通过独立于Multi Agent流程的方式对单轮发言进行Review甚至修正或覆盖,这个外部过程可以是XoT的框架,甚至另一个Multi Agent的讨论等等。

  • 等等


【3】多世界模拟

干预单步推理并不能确保整体走向是朝着我们期望的目标的,单步的介入只是在当前位置把走向更多的指向遥远的目标。但整个探索过程所处的环境并不是凸的(或者说单峰的),可能会有局部最优、或者是拦在最短通路上的障碍。

整个过程实际上是一个类似地图上路径规划的探索过程,而且存在信息不完全的“战争迷雾”(RTS游戏术语)。

那么一种方式就是在整个探索过程有多样性的时候,模拟多个历史,并在其中找出更符合整体目标的历史过程。

牺牲算力,来探索更低更可能性但更符合我们要求的结果。但这仍然不能保证我们就能探索到我们期望的路径,也可能我们期望的目标就是不可达成的。

【4】自动或人工的 外部事件/信息注入

除了任由整个Multi Agent系统自己模拟外,我们可以在外部注入一些事件或者信息,例如:

  • 剧情生成过程中,注入一些客观事件的发生。

  • 讨论过程中,作为外部人员让Agent们讨论某个角度或者某个问题的可能性。

  • 观察Multi Agent系统运行的用户人工根据系统的运行情况给出一些人工指导,覆盖初始设定,调整单步的引导方向。


某些场景下,这些外部注入可以靠自动化的程序选择触发时机和触发内容。

但不少场景下,无法靠自动化完成,需要人工注入新内容。好在Multi Agent的系统一般都不会运行的特别快(这是个固有缺点),使得用户有在外部观察系统状态,并进行人工知识注入的可行性。

4、总结

Multi Agent策略框架有其优势,在某些场景下大概率会是最佳实践。

但目前确实还存在很多关键问题,例如:高昂的LLM调用成本、LongContext LLM的需求、可操控性不够好等等问题。

Multi Agent策略框架跟LLM一样也是个工具,不是银弹。

相关阅读

【2023Q2】Rethinking LLM:自动化的RLHF数据生成 与 Multi-Agent Alignment (在知乎)

我劝你放下对 完全理性的崇拜【2023H2】

人的直觉推理 与 LLM中知识的存储形式 【2023Q3】

【2023Q3】Rethinking LLM(6):从认知科学角度看LLM (在知乎)

被忽视的LLM伪随机性问题,贪心解码为什么无法消除它 【2023Q3】

交流与合作

如果希望和我交流讨论,或参与相关的讨论群,或者建立合作,请私信联系,见 联系方式

希望留言可以知乎对应文章下留言


本文于2023.10.12首发于微信公众号与知乎。

知乎链接 https://zhuanlan.zhihu.com/p/660894761

继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存