Multi-Agent实战:构建复杂的数据处理与可视化系统

在当今复杂的业务场景中,单一的人工智能模型(LLM,Large Language Model)往往难以应对多样化的数据处理与分析需求。为了提升系统的灵活性和效率,Multi-Agent系统应运而生。本文将以Langchain框架中的多LLM Agent系统为例,介绍如何构建一个处理用户请求、收集数据、生成图表并最终反馈结果的复杂系统。在本文中,我们将实现一个处理用户查询印度过去五年GDP数据的Multi-Agent系统。

Multi-Agent系统概述

Multi-Agent系统主要由以下几个关键部分组成:

  1. 研究员(Researcher Agent):负责搜集用户所需的数据。通过调用外部搜索引擎或数据库,收集并整理相关信息。

  2. 路由器(Router Agent):根据当前状态和消息内容,决定信息流向。它是系统的中枢,确保各Agent之间的无缝衔接。

  3. 图表生成器(Chart Generator Agent):负责将收集到的数据转换为可视化图表,以便于用户理解。

  4. 工具调用器(Call Tool Agent):用于执行各种外部工具或脚本,如Python脚本执行器,用于数据处理或生成图表。

  5. 状态管理器(Agent State):维护每个Agent的状态信息,包括消息记录、发送者等,以便实现跨Agent的上下文记忆。

我们选择了Langchain框架来构建这个系统,因为它提供了丰富的工具集和灵活的架构支持。此外,我们使用了ChatOpenAI的GPT-4o-mini模型作为底层语言模型,以支持智能体的自然语言理解和生成能力。

Multi-Agent工作流程

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数据表格、数据来源等详细信息。

针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

Multi-Agent系统实现

1、安装依赖

pip install -U langchain langchain_openai langsmith pandas langchain_experimental matplotlib langgraph langchain_core

2、创建代理

from langchain_core.messages import (  
 BaseMessage,    
 HumanMessage,   
  ToolMessage,
  )
  from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder

from langgraph.graph import END, StateGraph, START



def create_agent(llm, tools, system_message: str):   
 """Create an agent."""   
  prompt = ChatPromptTemplate.from_messages(      
    [          
      (               
                     "system",              
                     "You are a helpful AI assistant, collaborating with other assistants."               
          " Use the provided tools to progress towards answering the question."      
                     " If you are unable to fully answer, that's OK, another assistant with different tools "               
                     " will help where you left off. Execute what you can to make progress."                
                     " If you or any of the other assistants have the final answer or deliverable,"               
                    " prefix your response with FINAL ANSWER so the team knows to stop."               
                    " You have access to the following tools: {tool_names}.\n{system_message}",         
               ),          
               MessagesPlaceholder(variable_name="messages"),      
          ]  
     )  
     prompt = prompt.partial(system_message=system_message)    
     prompt = prompt.partial(tool_names=", ".join([tool.name for tool in tools]))   
     return prompt | llm.bind_tools(tools)

这是创建LLM Agent的通用函数,通过给定一组tools和对应agent的指定描述来创建对应的agent

3、添加工具

from typing import Annotated` 
 from langchain_community.tools.tavily_search import TavilySearchResults
 from langchain_core.tools import tool
 from langchain_experimental.utilities import PythonREPL
 
  tavily_tool = TavilySearchResults(max_results=5) 

  # Warning: This executes code locally, which can be unsafe when not sandboxed  
   repl = PythonREPL()


@tool
def python_repl(
   code: Annotated[str, "The python code to execute to generate your chart."],
):
   """Use this to execute python code. If you want to see the output of a value,`
     you should print it out with `print(...)`. This is visible to the user."""`` 
       try:  
          result = repl.run(code)`  
          except BaseException as e:       
               return f"Failed to execute. Error: {repr(e)}"  
          result_str = f"Successfully executed:\n```python\n{code}\n```\nStdout: {result}"   
            return (      
               result_str + "\n\nIf you have completed all tasks, respond with FINAL ANSWER.")  
                

这里提供了2个tool,一个是用于搜索的tool,一个是tool运行时获取python函数并执行它

4、设置代理状态

我们这里提到的代理都是有状态的代理,有状态 LLM Agent会保留和更新交互中的上下文信息,从而动态适应其决策过程。这种架构有助于进行复杂的推理,支持顺序任务中的长期依赖关系。

在这里插入图片描述

5、定义代理

在这里插入图片描述
在这里插入图片描述

6、agent循环执行

这里用来判断当前是结束调用还是继续agent循环调用tool

在这里插入图片描述

7、定义完整图

在这里插入图片描述

8、开始执行

在这里插入图片描述

完整代码库可以参考这里: https://github.com/vinitgela/gen-ai-meetup-pune

通过构建Multi-Agent系统,我们可以有效地将复杂的任务分解成多个子任务,并由不同的LLM Agent协作完成。这不仅提高了系统的灵活性和可扩展性,还使得每个代理能够专注于其擅长的领域,从而提升了整体性能和效率。这种架构在处理复杂数据处理和可视化任务时尤为有用,为AI在实际应用中的落地提供了可行方案。

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份 LLM大模型资料 分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以 扫描下方二维码领取🆓↓↓↓

👉[CSDN大礼包🎁:全网最全《LLM大模型入门+进阶学习资源包》免费分享(安全链接,放心点击)]()👈

学习路线

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值