ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

第11章 案例实战:共享空间驱动的多智能体

第11章 案例实战:共享空间驱动的多智能体 LangGraph智能体设计模式与多智能体开发人工智能技术丛书【行情 报价 价格 评测】-京东王晓华LangGraph开发入门书《LangGraph智能体设计模式与多智能体开发》全文试读~_langgraph智能体设计模式与多智能体开发 pdf 下载-CSDN博客目录11.1 多智能体的共享空间驱动11.2 多智能体的共享空间驱动实战11.2.1 基于共享空间驱动的多智能体实战11.2.2 管控全局的共享空间详解11.3 本章小结Swarm模式的智能体在设计上具有独立性这种模式可以灵活对智能体进行调度和定义。但是当单个全能 Agent 在复杂任务面前显露出逻辑臃肿、能力上限不足的瓶颈时Supervisor 模式作为多智能体协作的核心架构就应运而生了它深度借鉴软件工程的分工协作思想通过“主管−下属”的层级设计将复杂任务拆解为专业化子任务实现高效协同。11.1 多智能体的共享空间驱动相对于Swarm模式我们采用的Supervisor模式的核心逻辑在于明确角色分工主管 Agent作为全局统筹者不直接参与具体执行而是专注于接收最终目标、拆解任务流程、制定执行计划并根据下属 Agent的专业领域将子任务精准分发同时全程把控任务进度、协调跨角色协作中的信息同步。下属 Agent 则作为垂直领域的专家各自配备专属的提示词、工具集和模型仅聚焦自身擅长的细分场景。比如研究员 Agent 专注搜索与数据提取工程师 Agent 专攻代码生成文案师 Agent聚焦内容创作通过专业化深耕确保单环节输出质量。在LangGraph的技术支撑下Supervisor 模式进一步放大了多智能体系统的优势每个下属 Agent 都是独立可复用的子图Subgraph支持单独开发、测试与优化大幅降低了系统维护成本也为功能迭代提供了灵活性同时这种架构能够自然模拟真实工作流无论是软件开发的“产品经理−工程师−测试员”链路还是内容创作的“策划−研究员−作者−编辑”流程都能通过主管的任务调度与下属的专业执行精准复刻。具体来看支撑这一协作模式有序运转的核心是结构化的状态管理体系通过Pydantic 模型明确了各角色的核心数据字段与流转规则from pydantic import BaseModel,Fieldclass ResearchState(BaseModel):topic: str Field(default, description研究员需开展研究的核心主题明确研究方向与范围为数据搜集提供靶向指引)research_data: str Field(default,description研究员通过搜索、数据提取等工作获取的相关资料包含事实、数据、案例等是支撑后续创作的核心依据)article: str Field(default, description写作者基于研究资料完成的完整文章内容需符合任务主题与输出要求)class WriterState(BaseModel):research_data: str Field(default,description接收自研究员的结构化研究资料是写作者开展文章创作的核心输入素材)article: str Field(default, description写作者基于研究资料完成的完整文章内容需符合任务主题与输出要求)# 2.主管Agent的Stateclass SupervisorState(bigmodel.BaseAgentState):topic: str Field(default,description多智能体协作任务的核心主题由主管Agent接收并同步至研究员、写作者等下属Agent统一任务方向)research_data: str | None Field(defaultNone,description整合后的研究员输出成果由主管Agent管控并流转至写作者Agent为创作提供数据支撑未完成研究时可为空)article: str | None Field(defaultNone,description写作者Agent提交的最终文章成果由主管Agent汇总存档是整个协作任务的核心产出任务未完成时可为空)ResearchState为研究员Agent定义了“研究主题”与“研究数据”的核心产出WriterState 则聚焦写作者Agent的“输入数据”与“文章成果”而SupervisorState作为全局状态中枢整合了“任务主题”“研究数据”“最终文章”等关键信息既承接初始任务目标又同步各下属Agent的执行结果实现数据在协作链路中的精准传递与共享。11.2 多智能体的共享空间驱动实战在上一节中我们学习了多智能体独立角色与状态的空间定义相对于Swarm设计模式我们在不同的状态空间定义时使用了具有共享性质的空间参数“article”。除此之外每一个角色定义时又有单独独立的状态空间这就像公司的办公场所既有“会议室”对内容进行交互每个人又有独立的办公空间完成独立的任务项目。下面我们将基于此完成基于共享空间的多智能体实战。11.2.1 基于共享空间驱动的多智能体实战我们先构建了基于不同角色分工的多智能体协作示例核心设计思路是在各智能体的状态空间中统一定义“article”字段作为内容载体。依托这一设计我们能够实现关键信息在不同职能的智能体之间有序传递进而推动多智能体协同完成完整任务。下面给出一个流式多智能体示例我们详细拆解这一全局状态管控机制的实现逻辑import bigmodelfrom agent_moudles import web_searach_toolllm bigmodel.llmtools [web_searach_tool.search_web4query]from pydantic import BaseModel,Fieldclass ResearchState(BaseModel):topic: str Field(default, description研究员需开展研究的核心主题明确研究方向与范围为数据搜集提供靶向指引)research_data: str Field(default,description研究员通过搜索、数据提取等工作获取的相关资料包含事实、数据、案例等是支撑后续创作的核心依据)article: str Field(default, description写作者基于研究资料完成的完整文章内容需符合任务主题与输出要求)class WriterState(BaseModel):research_data: str Field(default,description接收自研究员的结构化研究资料是写作者开展文章创作的核心输入素材)article: str Field(default, description写作者基于研究资料完成的完整文章内容需符合任务主题与输出要求)# 2.主管Agent的Stateclass SupervisorState(bigmodel.BaseAgentState):topic: str Field(default,description多智能体协作任务的核心主题由主管Agent接收并同步至研究员、写作者等下属Agent统一任务方向)research_data: str | None Field(defaultNone,description整合后的研究员输出成果由主管Agent管控并流转至写作者Agent为创作提供数据支撑未完成研究时可为空)article: str | None Field(defaultNone,description写作者Agent提交的最终文章成果由主管Agent汇总存档是整个协作任务的核心产出任务未完成时可为空)from langchain.agents import create_agentresearch_agent create_agent(modelllm,toolstools,system_prompt你是一个有用的智能体助手.对用户传来的研究内容使用网络搜索后再回答。)def research_node(state: ResearchState):print(--- [黑盒内部] Researcher正在执行---)reply research_agent.invoke({messages:state.topic})topic_result reply[messages][-1].contentreturn {article:topic_result}writer_agent create_agent(modelllm,system_prompt你是一个有用的智能体助手.对用户传来的研究资料撰写一篇关于此主题的简短报告。)def writer_node(state: WriterState):print(--- [黑盒内部] Writer正在执行---)reply writer_agent.invoke({messages:state.article})article_result reply[messages][-1].contentreturn {article:article_result}from langgraph.graph import StateGraph,ENDsupervisor_graph_builder StateGraph(SupervisorState)supervisor_graph_builder.add_node(research_node, research_node)supervisor_graph_builder.add_node(write_node, writer_node)#流程先研究再写作(简单的线性流程)supervisor_graph_builder.set_entry_point(research_node)supervisor_graph_builder.add_edge(research_node, write_node)supervisor_graph_builder.add_edge(write_node, END)team_app_mode1 supervisor_graph_builder.compile()# ---运行团队---print(---运行---)inputs {topic: 简单的说下天空为什么是蓝色的不超过200字。}result team_app_mode1.invoke(inputs)print(\n---最终文章---)print(result[article])输出结果如下所示---运行------ [黑盒内部] Researcher正在执行------ [黑盒内部] Writer正在执行------最终文章---**报告天空为何呈现蓝色**阳光看似白色实际上是由多种颜色的光组成的复合光不同颜色对应不同的波长。在可见光谱中蓝光的波长较短约450–495纳米而红光的波长较长约620–750纳米。当阳光穿过地球大气层时会与空气中的气体分子如氮气和氧气以及微小颗粒发生相互作用。由于瑞利散射的强度与波长的四次方成反比波长越短的光被散射得越强烈。因此蓝光比红光等其他颜色的光更容易被散射到各个方向。这种强烈的散射使得无论我们从天空的哪个方向观察都能接收到大量来自太阳光中被散射的蓝光从而让整个天空呈现出蔚蓝色。这一现象在晴朗的白天尤为明显。综上所述天空之所以呈现蓝色是由于阳光中波长较短的蓝光在大气中发生瑞利散射的结果。从结果可以看到我们得到了问题的答案读者可以尝试更多的问题。下面我们主要讲一下“article”在多智能体间的传递逻辑。“article”在这套多智能体系统中的传递核心依托于全局状态SupervisorState这一“数据中枢”和“研究→写作”的线性工作流它从初始的空值状态逐步成为承载资料、最终形成成果的核心内容载体全程在研究员、写作者智能体间有序流转。在整个系统中全局状态扮演着统筹所有信息的角色存储着任务全生命周期的关键数据包括任务主题topic、研究资料research_data以及文章article所有智能体的输入与输出都通过它实现同步而研究员的ResearchState和写作者的WriterState则是对应智能体的“专属工作面板”仅包含各自所需的核心字段本质上是全局状态的子集映射这为“article”的精准传递奠定了基础。任务启动前所有与“article”相关的字段都处于初始空值状态ResearchState的article默认为空字符串WriterState的article同样是空字符串作为全局核心的SupervisorState的article则为None。此时系统仅接收用户输入的任务主题“简单的说下天空为什么是蓝色的不超过200字”尚无任何“article”相关的实质性内容传递流程尚未真正开始。流程进入“research_node”后研究员智能体接收全局状态中的任务主题调用网络搜索工具生成含天空呈蓝色的“资料型article”topic_result节点返回该内容后LangGraph将其更新至SupervisorState的article字段全局与ResearchState的article同步完成“article”首次传递。研究员工作结束流程流转至“write_node”写作者智能体以全局状态中的“资料型article”为素材按要求创作“成品型article”article_result其返回后覆盖全局原有内容WriterState的article同步更新。写作者工作结束流程至END节点系统调用team_app_mode1.invoke(inputs)获取结果通过print(result[article])输出最终成果形成传递闭环。代码中研究员输出未存research_data而是直接存article不影响逻辑仅简化路径。从 LangGraph 框架视角来看该多智能体系统的核心优势在于通过全局状态与流程编排实现了跨智能体的数据精准流转。LangGraph 以 SupervisorState作为全局数据中枢统一存储任务全生命周期的关键信息其中“article”字段作为核心内容载体成为不同智能体间数据传递的纽带而研究员、写作者的专属状态ResearchState、WriterState本质是全局状态的子集映射确保各智能体仅获取所需字段同时保障数据同步一致性。在流程设计上LangGraph 通过线性编排“research_node→write_node→END”的工作流让“article”从初始空值逐步流转研究员节点调用工具生成资料型内容后LangGraph 自动将其更新至全局状态的“article” 字段。写作者节点则从全局状态读取该内容进行加工生成成品后再反向覆盖全局状态全程无需额外通信机制仅依赖 LangGraph的状态同步能力即可完成协作。可以看到这种设计充分体现了 LangGraph 在多智能体系统中的核心价值——通过全局状态统一管控与节点流程编排简化了跨智能体的数据传递逻辑确保了内容从生成到加工的有序流转最终高效达成协作任务目标。11.2.2 管控全局的共享空间详解上一节中我们建立了一个由SupervisorState驱动的多智能体而SupervisorState作为管控全局的共享空间正是这一机制的核心载体——它并非简单的状态传递媒介而是多智能体协同的“公共数据枢纽”让不同职能的智能体能够围绕统一的信息资产展开协作。共享空间的核心价值在于打破单个智能体的“信息孤岛”通过标准化的全局状态定义如前文统一命名的“article” 字段让所有参与协作的智能体都能访问、读取和更新关键数据无需额外搭建复杂的点对点通信链路。这种设计模式下共享空间就像多智能体团队的“公共工作台”研究员获取的研究资料、写作者生成的文章草稿、主管汇总的任务进度等都能实时同步至该空间确保每个智能体拿到的都是最新、最一致的信息。相较于传统的分步数据传递共享空间通过全局状态的统一管控大幅简化了多智能体的协作逻辑无需手动维护智能体间的信息同步只需约定好共享字段的定义与使用规则LangGraph 框架就能自动完成状态的流转与更新。例如研究员完成数据搜集后仅需将结果写入共享空间的“article” 字段写作者即可直接从该字段读取素材开展创作整个过程无需额外的交互指令完全依托共享空间的全局可见性实现无缝衔接。同时共享空间还保障了流式协同的顺畅推进让多智能体的工作流能够按既定顺序高效迭代 ——从任务主题传入、研究资料积累到文章成品生成每一步的成果都沉淀在共享空间中既避免了数据冗余与不一致又为后续智能体的工作提供了可靠依据。这种以共享空间为核心的协作模式不仅降低了多智能体系统的开发与维护成本更让不同角色的智能体能够聚焦自身核心职能在统一的信息底座上协同完成复杂任务充分发挥多智能体分工协作的优势。从整体来看我们通过对整体状态空间的不同管控从而在多个智能体之间对信息和数据进行流转从而完成了对整体状态空间的精细化管控在多个智能体之间构建起高效的信息与数据流转通道。而“智能体驱动”的核心升级在于让协作的主导权从“固定流程”转向“智能体自主决策”——不再依赖预设的线性节点排布而是由智能体根据共享状态中的信息如任务进度、数据完整性、需求变化主动判断行动方向、分配工作优先级甚至动态调整协作链路。在这种模式下每个智能体都具备了“目标导向”的决策能力主管智能体不再只是传递任务而是会基于用户需求拆解核心目标判断需要调用哪些职能的智能体如研究员、写作者、审核员并根据各智能体的执行反馈实时优化分工研究员智能体拿到任务主题后会自主判断现有资料是否充足主动触发搜索工具补充数据若遇到复杂问题还能向主管申请协同其他专业智能体支援写作者智能体则会基于共享空间中的研究资料自主决定创作框架若发现资料存在缺口或逻辑矛盾会直接通过共享状态向研究员发起补充需求无需人工介入。LangGraph的状态驱动特性为这种自主协作提供了底层支撑智能体的每一次决策都会同步至全局共享状态而状态的变化又会反过来触发下一轮的决策与行动——比如当共享空间中“research_data” 字段更新为完整资料时写作者智能体自动感知并启动创作当“article”字段生成初稿后审核智能体可主动介入进行优化。这种“决策−行动−状态更新−再决策”的闭环让多智能体系统从“被动执行流程”升级为“主动推进任务”不仅大幅提升了协作效率更让系统具备了应对复杂、动态任务的自适应能力真正实现了以智能体为核心的高效协同。11.3 本章小结本章我们主要讲解了基于共享空间的多智能体实战可以看到智能体的每一次决策都会同步至全局共享状态而状态的变化又会反过来触发下一轮的决策与行动。比如当共享空间中 “research_data”字段更新为完整资料时写作者智能体自动感知并启动创作当“article”字段生成初稿后审核智能体可主动介入进行优化。这种 “决策−行动−状态更新−再决策” 的闭环使得多智能体系统从“被动执行流程” 升级为 “主动推进任务”不仅大幅提升了协作效率更让系统具备了应对复杂、动态任务的自适应能力真正实现了以智能体为核心的高效协同。
返回列表