在当今复杂的业务场景中,单一的人工智能模型(LLM,Large Language Model)往往难以应对多样化的数据处理与分析需求。为了提升系统的灵活性和效率,Multi-Agent系统应运而生。本文将以Langchain框架中的多LLM Agent系统为例,介绍如何构建一个处理用户请求、收集数据、生成图表并最终反馈结果的复杂系统。在本文中,我们将实现一个处理用户查询印度过去五年GDP数据的Multi-Agent系统。
Multi-Agent系统主要由以下几个关键部分组成:
- 研究员(Researcher Agent):负责搜集用户所需的数据。通过调用外部搜索引擎或数据库,收集并整理相关信息。
- 路由器(Router Agent):根据当前状态和消息内容,决定信息流向。它是系统的中枢,确保各Agent之间的无缝衔接。
- 图表生成器(Chart Generator Agent):负责将收集到的数据转换为可视化图表,以便于用户理解。
- 工具调用器(Call Tool Agent):用于执行各种外部工具或脚本,如Python脚本执行器,用于数据处理或生成图表。
- 状态管理器(Agent State):维护每个Agent的状态信息,包括消息记录、发送者等,以便实现跨Agent的上下文记忆。
我们选择了Langchain框架来构建这个系统,因为它提供了丰富的工具集和灵活的架构支持。此外,我们使用了ChatOpenAI的GPT-4o-mini模型作为底层语言模型,以支持智能体的自然语言理解和生成能力。
1、初始请求
用户通过系统接口提交一个请求,如“查询印度过去五年的GDP数据,并生成图表”。
2、数据收集
研究员Agent接收请求后,开始搜集相关数据。它可能通过调用搜索引擎API(如Tavily工具),检索到印度过去五年每年的GDP数据。收集到的数据以特定格式(如JSON)返回,并附加到全局状态中。
3、路由决策
路由器Agent根据当前状态(即全局状态中的消息列表)和最后一条消息的内容,决定下一步的行动。如果研究员Agent已经收集到足够的数据,并且没有直接生成图表的能力,路由器Agent会指示图表生成器Agent接管任务。
4、图表生成
图表生成器Agent接收到任务后,开始将收集到的数据转换为可视化图表。它可能会首先选择一种合适的图表类型(如折线图、柱状图等),然后使用Python的matplotlib库等工具生成图表。生成的图表将以图片形式保存,并附加到全局状态中。
5、工具调用与执行
在图表生成过程中,图表生成器Agent可能需要调用外部工具(如Python脚本执行器)来辅助生成图表。工具调用器Agent负责执行这些外部工具,并将执行结果返回给图表生成器Agent。
6、结果汇总与呈现
当图表生成完成后,图表生成器Agent会将图表和相关的GDP数据汇总成最终答案,并通过系统接口呈现给用户。最终答案可能包含图表图片、GDP数据表格、数据来源等详细信息。
1、安装依赖
2、创建代理
这是创建LLM Agent的通用函数,通过给定一组tools和对应agent的指定描述来创建对应的agent
3、添加工具
这里提供了2个tool,一个是用于搜索的tool,一个是tool运行时获取python函数并执行它
4、设置代理状态
我们这里提到的代理都是有状态的代理,有状态 LLM Agent会保留和更新交互中的上下文信息,从而动态适应其决策过程。这种架构有助于进行复杂的推理,支持顺序任务中的长期依赖关系。
5、定义代理
6、agent循环执行
这里用来判断当前是结束调用还是继续agent循环调用tool
7、定义完整图
8、开始执行
通过构建Multi-Agent系统,我们可以有效地将复杂的任务分解成多个子任务,并由不同的LLM Agent协作完成。这不仅提高了系统的灵活性和可扩展性,还使得每个代理能够专注于其擅长的领域,从而提升了整体性能和效率。这种架构在处理复杂数据处理和可视化任务时尤为有用,为AI在实际应用中的落地提供了可行方案。