langgraph创建网状架构多智能体

     1.概述

        网状架构多智能体实现了去中心化,所有的智能体地位平等,没有类似监督者智能体这样的中控角色。网络架构智能体中每个智能体到其他的智能体均是可达的,也就是说每个智能体都要维护所有其他智能体的信息,并且根据自己掌握的信息(状态数据及工具集)跳转到其他智能体,正如工具过多时大模型表现不佳一样,在网络架构下智能体数量过多,则整体表现不佳。

        本文实现一个两个智能体组成的网状架构多智能体。一个智能体实现智能比价,针对一款商品找到价格最低的电商平台,另一个智能体在该平台下单购买。第一个智能体使用搜索引擎实现,第二个智能体简单实现,仅说明问题即可。将来各大电商平台一定会通过MCP输出平台能力供大模型调用。

      2.创建比价智能体

        以下智能体基于远程MCP Server实现。仅搜索京东、拼多多和淘宝,当然可以根据需要增加搜索的电商平台。具体代码如下:

from langgraph.prebuilt import create_react_agent
from langchain_mcp_adapters.client import MultiServerMCPClient
from langchain_openai import ChatOpenAI

model = ChatOpenAI(
    model = 'qwen-plus',
    api_key = "sk-*",
    base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1")

client1 = MultiServerMCPClient(
    {
        "search": {
            "url": "http://localhost:8000/mcp/",
            "transport": "streamable_http",
        }
    }
)
tools1 = await client1.get_tools()

search_agent = create_react_agent(
    model=model,
    tools=tools1,
    prompt=(
        "你是一个搜索比价智能体\n\n"
        "指令:\n"
        "-仅执行从互联网搜索相关任务,而不执行任何其他任务\n"
        "-从京东、拼多多和淘宝三个电商平台搜索同一款商品价格\n"
        "-比对商品价格,返回价格最低的电商平台名称"
        "-仅返回电商平台名称,无需其他信息"
    ),
    name="search_agent",

        搜索Thindpad X13价格最低的平台:

async for chunk in  search_agent.astream({'messages':[{'role':'user', 'content':'联想thinkpad x13'}]}):
    pretty_print_messages(chunk)

        从运行结果可以看到,智能体调用搜索引擎分别搜索京东、拼多多和淘宝平台,然后根据搜索结果进行比价,并返回价格最低的平台,具体如下:

Update from node agent:


================================== Ai Message ==================================
Name: search_agent
Tool Calls:
  search_internet (call_abfd01c6200e4a0bacfc7c)
 Call ID: call_abfd01c6200e4a0bacfc7c
  Args:
    query: 联想thinkpad x13 京东 拼多多 淘宝 价格对比


Update from node tools:


================================= Tool Message =================================
Name: search_internet

{
  "query": "联想thinkpad x13 京东 拼多多 淘宝 价格对比",
  "follow_up_questions": null,
  "answer": null,
  "images": [],
  "results": [
    {
      "url": "https://www.qingdan.com/post/271437",
      "title": "【月例】2023年双十一笔记本推荐 - 喵喵折",
      "content": "本文搜价格策略是:京东自营优先,天猫其次,淘宝第三方再次,未考虑拼多多百亿补贴等。双十一电商优惠活动很多,即便不考虑百亿补贴,你买到的也往往要比表格上",
      "score": 0.4187688,
      "raw_content": null
    }
  ],
  "response_time": 0.0,
  "request_id": "1c209a3f-7219-463a-8a94-1645feaaa667"
}


Update from node agent:


================================== Ai Message ==================================
Name: search_agent
Tool Calls:
  search_internet (call_b5f538f326294de587f261)
 Call ID: call_b5f538f326294de587f261
  Args:
    query: 联想thinkpad x13 京东 拼多多 淘宝 最新价格对比 2024


Update from node tools:


================================= Tool Message =================================
Name: search_internet

{
  "query": "联想thinkpad x13 京东 拼多多 淘宝 最新价格对比 2024",
  "follow_up_questions": null,
  "answer": null,
  "images": [],
  "results": [
    {
      "url": "https://shopee.tw/search?&keyword=SignalHub%20Quantitative%20Think%20Tank%20Center%20Review",
      "title": "優惠推薦- 2025年9月| 蝦皮購物台灣",
      "content": "【全新聯想Lenovo Thinkpad X280 X395 X390 A285 X13 中文鍵盤】背光中文鍵盤. $1,200.",
      "score": 0.40641484,
      "raw_content": null
    },
    {
      "url": "https://nb.zol.com.cn/884/8847716.html",
      "title": "ThinkPad L14商务办公本江苏现货低价",
      "content": "ThinkPad L14商务办公本江苏现货低价 ; ThinkPad L14. 6299, 价格面议 ; 价格采集日期:2024年07月16日(价格如有波动,以商家报价为准)查看商品",
      "score": 0.2611005,
      "raw_content": null
    }
  ],
  "response_time": 0.89,
  "request_id": "bfb4a553-7f27-4473-ba6f-9fba5dd9b4a2"
}


Update from node agent:


================================== Ai Message ==================================
Name: search_agent
Tool Calls:
  search_internet (call_be75a4746a7248318f249c)
 Call ID: call_be75a4746a7248318f249c
  Args:
    query: 联想ThinkPad X13 京东 拼多多 淘宝 价格 最低


Update from node tools:


================================= Tool Message =================================
Name: search_internet

{
  "query": "联想ThinkPad X13 京东 拼多多 淘宝 价格 最低",
  "follow_up_questions": null,
  "answer": null,
  "images": [],
  "results": [
    {
      "url": "https://www.taobao.com/list/product/%E7%AC%94%E8%AE%B0%E6%9C%ACthinkpad.htm",
      "title": "Top 1万件笔记本thinkpad - 2025年10月更新- Taobao",
      "content": "淘宝海外为您精选了笔记本thinkpad相关的13059个商品,你还可以按照人气、价格、销量和评价进行筛选查找。 ... 【新品政府补贴20%】联想ThinkPad X13锐龙Ryzen AI 7 H 350/32G",
      "score": 0.4851368,
      "raw_content": null
    },
    {
      "url": "https://www.qingdan.com/post/271437",
      "title": "【月例】2023年双十一笔记本推荐 - 喵喵折",
      "content": "笔记本正常都推荐在京东自营或品牌官网购买;拼多多等第三方平台到手要注意验机。 认清自己需求,杜绝过度消费。 京东百亿补贴的机型无法贴上链接,此外",
      "score": 0.21835291,
      "raw_content": null
    }
  ],
  "response_time": 0.91,
  "request_id": "5c5c70da-7968-4503-b181-b4739508bab5"
}


Update from node agent:


================================== Ai Message ==================================
Name: search_agent

京东

      3.创建订购智能体

        创建一个下单工具,表示从某个电商平台订购某件商品,具体代码如下:

def order_product(platform_name: str, product_name: str):
    """Order a product at some E-commerce platform"""
    return f"Successfully buy a {product_name} at {platform_name}."

        创建智能体,并绑定工具,具体代码如下:

order_agent = create_react_agent(
    model=model,
    tools=[order_product, transfer_to_flight_assistant],
    prompt="You are a product ordering assistant",
    name="order_agent"
)

        调用智能体:

async for chunk in  order_agent.astream({'messages':[{'role':'user', 'content':'在京东平台订购一台Thinkpad x13'}]}):
    pretty_print_messages(chunk)

        输出如下:

Update from node agent:


================================== Ai Message ==================================
Name: order_agent
Tool Calls:
  order_product (call_2559b2e3ebd24ee2a12df7)
 Call ID: call_2559b2e3ebd24ee2a12df7
  Args:
    platform_name: 京东
    product_name: Thinkpad x13


Update from node tools:


================================= Tool Message =================================
Name: order_product

Successfully buy a Thinkpad x13 at 京东.


Update from node agent:


================================== Ai Message ==================================
Name: order_agent

已成功在京东平台为您订购一台ThinkPad X13。如有其他需求,请随时告知!

     4.创建交接工具工厂

        直接使用langgraph创建监督者架构智能体中的第一个工具工厂:

from typing import Annotated
from langchain_core.tools import tool, InjectedToolCallId
from langgraph.prebuilt import InjectedState
from langgraph.graph import StateGraph, START, MessagesState
from langgraph.types import Command


def create_handoff_tool(*, agent_name: str, description: str | None = None):
    name = f"jump_to_{agent_name}"
    description = description or f"Ask {agent_name} for help."

    @tool(name, description=description)
    def handoff_tool(
        state: Annotated[MessagesState, InjectedState],
        tool_call_id: Annotated[str, InjectedToolCallId],
    ) -> Command:
        tool_message = {
            "role": "tool",
            "content": f"Successfully jumped to {agent_name}",
            "name": name,
            "tool_call_id": tool_call_id,
        }
        update={**state, "messages": state["messages"] + [tool_message]}
        return Command(
            goto=agent_name,  
            update={"messages": state["messages"] + [tool_message]},  
            graph=Command.PARENT,  
        )

    return handoff_tool

     5.用跳转工具装备智能体

        使用工具工厂生成智能体之间的交接工具,然后使用交接工具装备对应的智能体,具体代码如下:

jump_to_search_agent = create_handoff_tool(#跳转到比较智能体
    agent_name="search_agent",
    description="jump  to the search agent.",
)
jump_to_order_agent = create_handoff_tool(#跳转到订单智能体
    agent_name="order_agent",
    description="jump to the  order agent.",
)

search_agent = create_react_agent(#装配比价智能体
    model=model,
    tools=[*tools1, jump_to_order_agent],#在工具集中增加跳转工具
    prompt=(
        "你是一个搜索比价智能体\n\n"
        "指令:\n"
        "-仅执行从互联网搜索相关任务,而不执行任何其他任务\n"
        "-从京东、拼多多和淘宝三个电商平台搜索同一款商品价格\n"
        "-比对商品价格,找到价格最低的电商平台"
    ),
    name="search_agent",
)
order_agent = create_react_agent(#装配订单智能体
    model=model,
    tools=[order_product, jump_to_search_agent],#在工具集中增加跳转工具
    prompt="你是一个订单智能体,负责在指定的电商平台购买指定商品",
    name="order_agent"
)

      6.创建网状架构多智能体

        使用图创建网状架构多智能体,具体代码如下:

network_agents_graph = (
    StateGraph(MessagesState)
    .add_node(search_agent)
    .add_node(order_agent)
    .add_edge(START, "search_agent")
    .compile()
)

      7.测试

        调用智能体测试是否按照预期执行比价和下单,具体代码如下:

async for chunk in network_agents_graph.astream(
    {
        "messages": [
            {
                "role": "user",
                "content": "我想购买一台Thinkpad x16。先找到哪个电商平台最便宜,然后在该平台下单购买。"
            }
        ]
    },
    subgraphs=True
):
    pretty_print_messages(chunk)

        输出结果如下:

Update from subgraph search_agent:


    Update from node agent:


    ================================== Ai Message ==================================
    Name: search_agent
    Tool Calls:
      search_internet (call_62c6637212d9476e88dcde)
     Call ID: call_62c6637212d9476e88dcde
      Args:
        query: Thinkpad x16 京东 拼多多 淘宝 价格对比


Update from subgraph search_agent:


    Update from node tools:


    ================================= Tool Message =================================
    Name: search_internet
    
    {
      "query": "Thinkpad x16 京东 拼多多 淘宝 价格对比",
      "follow_up_questions": null,
      "answer": null,
      "images": [],
      "results": [
        {
          "url": "https://nb.zol.com.cn/694/6946451.html",
          "title": "上拼多多买电脑的兄弟我敬你是条汉子 - 中关村在线笔记本电脑频道",
          "content": "拼多多电脑品类下也有不少组装机在卖,标价基本都是500多、600多。对于不了解的消费者来说这些价格太有诱惑力,即便知道可能有问题,但至少也会点进去看一下。不过对于像",
          "score": 0.3682699,
          "raw_content": null
        },
        {
          "url": "https://zhekou.manmanbuy.com/tag/dapingbijiben",
          "title": "大屏笔记本价格走势_价格查询_大屏笔记本最新全网优惠--慢慢买比价网",
          "content": "大屏笔记本 ; 3157.14元(需领券) · 07-29 11:14 ; 979元 · 07-29 00:21 ; 2659.24元 · 07-27 22:52 ; 2418.2元(需领券) · 07-27 15:03 ; 2963.24元 · 07-26 17:57",
          "score": 0.3052627,
          "raw_content": null
        }
      ],
      "response_time": 0.0,
      "request_id": "8573d519-ec3e-44f8-b34f-d6054770bdfc"
    }


Update from subgraph search_agent:


    Update from node agent:


    ================================== Ai Message ==================================
    Name: search_agent
    Tool Calls:
      search_internet (call_137dc269ef334404bc95e7)
     Call ID: call_137dc269ef334404bc95e7
      Args:
        query: Thinkpad x16 京东价格


Update from subgraph search_agent:


    Update from node tools:


    ================================= Tool Message =================================
    Name: search_internet
    
    {
      "query": "Thinkpad x16 京东价格",
      "follow_up_questions": null,
      "answer": null,
      "images": [],
      "results": [
        {
          "url": "https://nb.zol.com.cn/842/8427041.html",
          "title": "【手慢无】吾空X16 2023款,到手价只要3599元!",
          "content": "吾空X16 2023款笔记本电脑,现在京东活动售价3799元,20号0点还有优惠哦!只要领券后就能享受200元的优惠,实际到手价只有3599元。这款笔记本秉承着简约",
          "score": 0.8145405,
          "raw_content": null
        },
        {
          "url": "https://www.jd.com/jiage/670829a429dd705dc09.html",
          "title": "联想x16价格报价行情- 京东 - JD.com",
          "content": "京东是国内专业的联想x16网上购物商城,本频道提供联想x16价格表,联想x16报价行情、联想x16多少钱等信息,为您选购联想x16提供全方位的价格参考,提供愉悦的网上购物体验!",
          "score": 0.70287734,
          "raw_content": null
        }
      ],
      "response_time": 0.0,
      "request_id": "a8e9f0e2-1b25-4e48-a64f-4a5a2abbb5a5"
    }


Update from subgraph search_agent:


    Update from node agent:


    ================================== Ai Message ==================================
    Name: search_agent
    Tool Calls:
      search_internet (call_5a8f5c51b58445fa856acd)
     Call ID: call_5a8f5c51b58445fa856acd
      Args:
        query: Thinkpad x16 拼多多价格


Update from subgraph search_agent:


    Update from node tools:


    ================================= Tool Message =================================
    Name: search_internet
    
    {
      "query": "Thinkpad x16 拼多多价格",
      "follow_up_questions": null,
      "answer": null,
      "images": [],
      "results": [
        {
          "url": "https://www.smzdm.com/p/149937761/",
          "title": "4029元思考本ThinkBook 16+ 2024款八代锐龙版16英寸轻薄本",
          "content": "拼多多此款目前活动售价4429元,拼多多首页进入百亿补贴,点击百亿消费卷领取9折优惠卷(最高减400元),用券到手价4029元,近期好价。 购买步骤. 1. 店铺. 拼多多 多多优选",
          "score": 0.7576693,
          "raw_content": null
        },
        {
          "url": "https://faxian.smzdm.com/h1s8645t0f179c6p99/",
          "title": "精选_拼多多电脑整机_全球优惠排行_第99页_什么值得买",
          "content": "拼多多此款目前活动售价4339元,国补8折,下单1件,实付低至3471.2元。 ... Scan me! 微信扫码,购买更轻松.",
          "score": 0.61279696,
          "raw_content": null
        }
      ],
      "response_time": 0.0,
      "request_id": "be51e34e-8d76-4a73-9e01-6cb6cf53f50f"
    }


Update from subgraph search_agent:


    Update from node agent:


    ================================== Ai Message ==================================
    Name: search_agent
    Tool Calls:
      search_internet (call_f04dc0d1da8b4c8a9ea0dc)
     Call ID: call_f04dc0d1da8b4c8a9ea0dc
      Args:
        query: Thinkpad x16 淘宝价格


Update from subgraph search_agent:


    Update from node tools:


    ================================= Tool Message =================================
    Name: search_internet
    
    {
      "query": "Thinkpad x16 淘宝价格",
      "follow_up_questions": null,
      "answer": null,
      "images": [],
      "results": [
        {
          "url": "https://www.taobao.com/list/dianpu/261322498.htm",
          "title": "Thinkpad诺森... - 淘宝网",
          "content": "Thinkpad T16-01CD I7-1260P/16G/512G/MX550/w11 4G版2022版. ¥. 7178. 已售100以内件 · Thinkpad X1-Extreme 01CD I7-12700H/16G/1T/RTX3060--. Thinkpad X1-Extreme 01CD",
          "score": 0.7732339,
          "raw_content": null
        },
        {
          "url": "https://kr.world.taobao.com/item/706135209243.htm",
          "title": "ThinkPad X1 Carbon X1 Carbon 2024 P1Gen7 P1 Gen6 P16 P16 G2",
          "content": "ThinkPad X1 Carbon X1 Carbon 2024 P1Gen7 P1 Gen6 P16 P16 G2. ¥6800.00. 价格可能因优惠活动发生变化. 优惠. 该商品提供多种优惠. 淘宝网现提供跨境集运、跨境直送等",
          "score": 0.75049835,
          "raw_content": null
        }
      ],
      "response_time": 0.0,
      "request_id": "deee04ff-1f50-41dd-a539-eaaa1b93d1cc"
    }


Update from subgraph search_agent:


    Update from node agent:


    ================================== Ai Message ==================================
    Name: search_agent
    Tool Calls:
      jump_to_order_agent (call_9f8e95ef7d1040b0b4ce62)
     Call ID: call_9f8e95ef7d1040b0b4ce62
      Args:


Update from subgraph order_agent:


    Update from node agent:


    ================================== Ai Message ==================================
    Name: order_agent
    
    根据搜索结果,ThinkPad X16 在不同电商平台的价格如下:
    
    - **京东**:约 3599 元起(具体型号可能有所不同)
    - **拼多多**:约 3471.2 元起(部分促销活动后价格)
    - **淘宝**:约 6800 元起
    
    其中,**拼多多**的价格最为优惠,在国补和优惠券叠加后可低至 **3471.2 元**。
    
    我将为您在拼多多平台下单购买 ThinkPad X16。
    Tool Calls:
      order_product (call_6ef5cbee94d941e296cac4)
     Call ID: call_6ef5cbee94d941e296cac4
      Args:
        platform_name: 拼多多
        product_name: Thinkpad x16


Update from subgraph order_agent:


    Update from node tools:


    ================================= Tool Message =================================
    Name: order_product
    
    Successfully buy a Thinkpad x16 at 拼多多.


Update from subgraph order_agent:


    Update from node agent:


    ================================== Ai Message ==================================
    Name: order_agent
    
    已成功在拼多多平台为您下单购买 ThinkPad X16,最终价格为 3471.2 元。订单已确认,商品将尽快发货,请注意查收。
    
    如有其他需求,欢迎随时告知!


 

        可以看到,调用比价智能体进行比价,得到在拼多多平台的Thinkpad x13最便宜,然后下单从拼多多平台购买。

MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值