在当今复杂的业务场景中,单一的人工智能模型(LLM,Large Language Model)往往难以应对多样化的数据处理与分析需求。为了提升系统的灵活性和效率,Multi-Agent系统应运而生。本文将以Langchain框架中的多LLM Agent系统为例,介绍如何构建一个处理用户请求、收集数据、生成图表并最终反馈结果的复杂系统。在本文中,我们将实现一个处理用户查询印度过去五年GDP数据的Multi-Agent系统。
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模型作为底层语言模型,以支持智能体的自然语言理解和生成能力。
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, MessagesPlaceholderfrom langgraph.graph import END, StateGraph, STARTdef 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 TavilySearchResultsfrom langchain_core.tools import toolfrom langchain_experimental.utilities import PythonREPLtavily_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%免费】🆓