论文链接:https://arxiv.org/abs/2402.16823
项目主页链接:https://gptswarm.org/
该项目重点围绕agent展开研究,当我们去想象agent去真正落地,能够参与到真实世界的工作时,那么一定会面临着多样化的工作场景。在这样的场景下,我们如果面对每个具体的需求,去设计agent工作流,再去为每个agent设计prompt,这样自动化程度太低了,而且缺少足够的自适应能力。这篇文章的工作能够极大提高agent工作的时候的自适应能力。
我们去考虑传统的agent的工作,可以把设计好的工作流看做是一个graph,每个节点上有一个设计好的agent,如果是prompt-based,那么就是每个agent都有一个自己的prompt。那么自然就可以去想这个图结构和节点上所带着的prompt是否可以优化,以及是否有机会自动编排。
核心方法:(from kimi)
论文通过提出GPTSwarm框架来解决上述问题,具体方法包括:
图表示法:将语言代理系统描述为计算图,其中节点代表处理多模态数据或查询LLMs的函数,边描述操作间的信息流。
层次化智能:通过将基本的LLM操作组合成代理图,并将多个代理图组合成更大的复合图(swarm),形成更深层次的智能层次结构。
自动图优化:开发了两种图优化方法:
节点优化(Node Optimization):改进节点级别的LLM提示,通过迭代更新每个节点的提示,假设其他提示固定不变。
边优化(Edge Optimization):通过改变图的连接性来改善代理的协调,使用连续优化方法,优化图的邻接矩阵。
REINFORCE算法:应用REINFORCE算法来优化边,通过梯度上升变体(如Adam)进行优化。
迭代优化过程:通过迭代优化每个节点的提示,同时考虑节点间的相互影响。
提示优化方法:使用现有的提示优化方法(如OPRO)来改进每个节点的提示。
框架的通用性:GPTSwarm支持多种语言基础任务,包括文件分析、网络搜索和索引记忆等,简化了不同模块的重用和集成。
实验验证:在多个基准测试(MMLU、Mini CrossWords、HumanEval和GAIA)上验证框架的有效性,展示了自动图优化的好处。
开源框架:提供了一个开源框架,允许用户构建任意代理系统,并通过重新组合基本操作来实现。
其中需要重点关注,也是这篇文章最亮眼的地方是图优化方法。事实上过去的优化算法,大多是应用在一个连续空间下,比如优化某个函数的值,但是这里事实上是需要优化一个图结构,我们并不容易能够找到一个最优的图是什么样,同时更不容易找到对于每个节点,我们需要提供什么样的提示能够让这些agent的性能达到更好。
这里定义了一个edge optimization的问题。
然后作者并没有在离散空间下优化这个问题,而是把它转成一个概率空间下的问题,然后用adam优化。
由此可以得到优化算法如下: