【项目实训个人博客】multi-agent调研(1)
随着LLM的涌现,以LLM为中枢构建的Agent系统在近期受到了广泛的关注。Agent系统旨在利用LLM的归纳推理能力,通过为不同的Agent分配角色与任务信息,并配备相应的工具插件,从而完成复杂的任务。
目前更常见的框架大多聚焦于single-agent的场景。single-agent的核心在于LLM与工具的配合。LLM通过理解用户的任务,推理出需要调用的工具,并基于调用结果给用户反馈。在完成任务的过程中,Agent可能与用户有多轮交互。下图即展示了一个主流的Agent执行流程。
与此同时,也有越来越多的Agent框架开始聚焦于multi-agent场景。为了完成任务,multi-agent会为不同的Agent赋予不同的角色定位,通过Agent之间的协同合作来完成复杂的任务。而在完成任务的过程中,相比于single-agent来说,与用户的交互会更少一些。
multi-agent的主要组件
为了构建一个multi-agent框架,我们需要思考相比于single-agent,框架中多了哪些组件。
-
-
- environment:所有的agent应该处于同一个环境中。环境中包含了全局的状态信息,agent与环境之间存在信息的交互与更新。
-
-
-
- stage:要完成一个复杂的任务,现有multi-agent框架往往采用SOP的思想,把复杂的任务分解成若干个子任务。对应到软件公司这个场景,"编写2048游戏"这个任务可以被分解为:编写prd,设计框架、写code,code review等子任务。
- controller:controller可以是LLM,也可以是预先定义好的规则。它主要负责环境在不同agent和stage之间的切换。
- memory:在single-agent中,记忆只包括了用户、LLM回应和工具调用结果这几个部分。而在multi-agent框架中,一方面由于agent数量的增多使得消息数量增多,另一方面,在每条消息中可能还需要对发送方、接收方等字段进行记录。
-
multi-agent的核心流程
multi-agent框架的核心交互流程可以概括如下:
- controller更新当前环境的状态,选择下一时刻行动的agentA。
- 将输出message更新到公共环境中。
- agentA调用LLM,基于指令执行动作,获取输出message。
- agentA t与环境交互,更新自身的memory信息。