7-多智能体架构

发布时间:2026/6/30 23:41:13
7-多智能体架构 文章目录协议的本质区别工具VS代理多智能体架构A2A案例协议的本质区别工具VS代理在AI技术快速发展的今天两个关键协议正在重塑我们构建智能系统的方式这两个协议代表了AI架构发展的不同维度但它们共同指向一个未来我们正从确定性编程转向自主协作系统。Agent-to-Agent协议(A2A)Model Context Protocol(MCP)MCP本质上是关于工具访问的协议。它定义了大语言模型如何与各种工具、数据和资源交互的标准方式简单来说**MCP让AI能够使用各种功能就像程序员调用函数一样。**A2A则专注于代理协作。它建立了智能代理之间相互发现、交流和合作的方式使得不同的Al系统能够像人类团队一样协同工作。多智能体架构LangChain体系中LangChain主要集成了和大语言模型的交互能力。LangGraph主要实现复杂的流程调度。将这两个能力结合起来就可以实现一个多智能体架构(Multi-Agent Architecture)它不是让一个大模型“无所不能”而是通过多个专精的Agent协作来完成更复杂的任务。单智能体结构:一个LLM工具集合LLM决定是否调用工具自己完成所有逻辑使用场景:简单对话助手单一领域(天气查询、SQL问答、知识库QA)例子:“查询北京天气” - LLM调用get_weather()“翻译一句话” - LLM 调用translator()案例from langchain.agentsimportcreate_agentfrom langchain.chat_modelsimportinit_chat_modelfrom langchain_core.messagesimportHumanMessagefrom lang_chain.configimportOPENAI_API_KEY# 单智能体 # 定义工具 defget_weather(city:str)-str:查询指定城市的天气情况。returnf今天{city}的天气是晴天 # 定义大模型 llminit_chat_model(modeldeepseek-chat,model_providerdeepseek,api_keyOPENAI_API_KEY,base_urlhttps://api.deepseek.com)# 使用LangGraph创建Agentagentcreate_agent(modelllm,# 添加模型 tools[get_weather],# 添加工具)human_messageHumanMessage(content今天北京的天气如何)responseagent.invoke({messages:[human_message]})print(response[messages][-1].content)多智能体在LangGraph里Agent就是一个可调用的节点通常封装了一个LLM工具调用逻辑。多智能体架构 多个Agent节点组成一个图(Graph)它们通过消息传递、条件跳转command/send和记忆(Memory)协作。对比单智能体一个大模型负责所有决策多智能体多个小模型/角色分工明确互相调用好处:解耦复杂任务每个Agent只解决自己领域的问题。可扩展可以动态增加新Agent。更可控通过人类干预闭环(HITL)、时间回溯(Time Travel)管理执行流程。六大典型架构Network(网络)每个智能体都可以与其他任何智能体进行通信。任何智能体都可以决定下一步调用哪个其他智能体类似“去中心化网络”应用场景- 多视角协作 - 并行搜索信息 - 研究讨论类场景Supervisor(主管)包含一个主管智能体每个智能体都与一个主管智能体进行通信。主管智能体决定下一步应该调用哪个智能体。【为主】应用场景- 企业助手IT、HR、财务等不同领域 - 智能客服分配给不同领域专家Supervisoras tools(主管as工具调用)主管架构的一种特殊情况。单个智能体可以被表示为工具。主管智能体使用一个支持工具调用的LLM来决定调用哪个智能体工具以及传递给这些智能体的参数。应用场景- 当一LLM核心但可以调用领域专家 - 类似插件系统copilot 插件Hierarchical(层级式)包含多层的Supervisor架构每一层都有自己的主管类似于公司的组织架构(GM-总监-组长-员工)应用场景- 大型任务拆解项目管理、复杂管道任务 - AI公司/部门结构模拟Custom(自定义)使用LangGraph提供的灵活的图结构和条件边可以自定义各种执行流比较灵活使用的也最多。应用场景- 高度定制的企业级AI应用 - 多步骤、多部门、多数据源场景A2A案例案例1supervisor主管from langchain.agentsimportcreate_agentfrom langchain.chat_modelsimportinit_chat_modelfrom langchain_core.messagesimportAIMessage,HumanMessagefrom langgraph_supervisorimportcreate_supervisorfrom lang_chain.configimportOPENAI_API_KEY#1.初始化大语言模型 llminit_chat_model(modeldeepseek-chat,model_providerdeepseek,api_keyOPENAI_API_KEY,base_urlhttps://api.deepseek.com,)#2.定义工具 defbook_flight(from_airport:str,to_airport:str):预订从出发地到目的地的航班。 return f成功预定从{from_airport}到{to_airport}的航班 def book_hotel(hotel_name: str): 预订指定名称的酒店。returnf成功预定{hotel_name}的住宿 #3.创建子agent flight_assistantcreate_agent(modelllm,tools[book_flight],nameflight_assistant)hotel_assistantcreate_agent(modelllm,tools[book_hotel],namehotel_assistant,)#4.主agent调度主管 supervisorcreate_supervisor(agents[flight_assistant,hotel_assistant],modelllm,prompt(你是一个智能任务调度主管负责调度多个智能助手完成用户请求。\n工作流程\n1.分析用户需求提取任务\n2.先调用工具flight_assistant完成航班预订任务\n3.再调用工具hotel_assistant完成酒店预订任务\n4.返回结果向用户汇报结果\n注意每个助手只能调用1次不要重复内容只能使用中文不要输出任何原文),).compile()if__name____main__:print(智能旅行调度系统)# mock输入数据 input_data{messages:[HumanMessage(content我想从北京去上海出差在希尔顿酒店预定一间标准间价格不要超过500元)]}forchunk in supervisor.stream(input_data):foragent_name,output in chunk.items():ifoutput isNone:continueformsg in output.get(messages,[]):ifisinstance(msg,AIMessage)and msg.content:print(f[{agent_name}]: {msg.content})print(-*50)案例2handoff交接