多代理系统通信工具

使用A2A协议实现多代理系统间的通信,适用于远程代理交互和自动化任务处理。

  • by chandini2595
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 chandini2595/MCP-and-A2A-codelab

使用说明

实验概述

实验名称 Codelab YouTube链接
使用ADK创建多代理系统,在agent Engine中部署,并开始使用A2A协议 查看Codelab 观看视频
开始学习adk、mcp和a2a 查看Codelab 观看视频
开始使用a2a动作引擎 查看Codelab 观看视频

此演示展示了如何使用A2A Python SDK在购买礼宾代理和远程披萨和汉堡销售商代理之间启用A2A(Agent2Agent)协议通信。Burger和Pizza卖家代理是一个独立的代理,可以在具有不同框架的不同服务器上运行,在这个演示示例中,Burger代理建立在Crew AI之上,Pizza代理建立在LangGraph之上。

关于此仓库的详细教程: Agent2Agent(A2A)协议入门:云上与Gemini的采购礼宾和远程卖家代理交互

先决条件

  • 如果您是从本地IDE执行此项目,请使用CLI使用以下命令登录Gcloud:

    gcloud auth application-default login
    
  • 启用以下API

    gcloud services enable aiplatform.googleapis.com 
    
  • 安装 紫外线 依赖关系和准备python环境

    curl -LsSf https://astral.sh/uv/install.sh | sh
    uv python install 3.12
    uv sync --frozen
    

如何跑步

首先,我们需要运行远程卖家代理。我们有两个远程卖家代理,一个是汉堡代理,另一个是披萨代理。我们需要分别运行它们。这些代理将为A2A服务器提供服务

在当地经营汉堡代理商

  1. 复制 remote_seller_agents/burger_agent/.env.example 到 remote_seller_agents/burger_agent/.env.

  2. 在中填写所需的环境变量 .env 文件。替代 GOOGLE_CLOUD_PROJECT 使用您的Google Cloud项目ID。

    GOOGLE_CLOUD_LOCATION=us-central1
    GOOGLE_CLOUD_PROJECT={your-project-id}
    
  3. 经营汉堡代理商。

    cd remote_seller_agents/burger_agent
    uv sync --frozen
    uv run .
    
  4. 它将继续运行 http://localhost:10001

在当地经营披萨代理商

  1. 复制 remote_seller_agents/pizza_agent/.env.example 到 remote_seller_agents/pizza_agent/.env.

  2. 在中填写所需的环境变量 .env 文件。替代 GOOGLE_CLOUD_PROJECT 使用您的Google Cloud项目ID。

    GOOGLE_CLOUD_LOCATION=us-central1
    GOOGLE_CLOUD_PROJECT={your-project-id}
    
  3. 经营披萨代理。

    cd remote_seller_agents/pizza_agent
    uv sync --frozen
    uv run .
    
  4. 它将继续运行 http://localhost:10000

在当地运营采购礼宾代理

最后,我们可以运行采购礼宾代理拥有的A2A客户端功能。

  1. 返回演示根目录(其中 purchasing_concierge 目录已找到)

  2. 复制 purchasing_concierge/.env.example 到 purchasing_concierge/.env.

  3. 在中填写所需的环境变量 .env 文件。替代 GOOGLE_CLOUD_PROJECT 使用您的Google Cloud项目ID。 并填写 PIZZA_SELLER_AGENT_URL 和 BURGER_SELLER_AGENT_URL 使用远程卖家代理的URL。

    PIZZA_SELLER_AGENT_URL=http://localhost:10000
    BURGER_SELLER_AGENT_URL=http://localhost:10001
    GOOGLE_GENAI_USE_VERTEXAI=TRUE
    GOOGLE_CLOUD_PROJECT={your-project-id}
    GOOGLE_CLOUD_LOCATION=us-central1
    
  4. 使用adk web开发UI运行采购礼宾代理

    uv sync --frozen
    uv run adk web
    

部署

部署Burger代理-云运行

运行以下命令

gcloud run deploy burger-agent \
    --source remote_seller_agents/burger_agent \
    --port=8080 \
    --allow-unauthenticated \
    --min 1 \
    --region us-central1 \
    --update-env-vars GOOGLE_CLOUD_LOCATION=us-central1 \
    --update-env-vars GOOGLE_CLOUD_PROJECT={your-project-id}

部署Pizza代理-云运行

运行以下命令

gcloud run deploy pizza-agent \
    --source remote_seller_agents/pizza_agent \
    --port=8080 \
    --allow-unauthenticated \
    --min 1 \
    --region us-central1 \
    --update-env-vars GOOGLE_CLOUD_PROJECT={your-project-id} \
    --update-env-vars GOOGLE_CLOUD_LOCATION=us-central1

部署采购礼宾代理-代理引擎

  1. 首先创建暂存桶

    gcloud storage buckets create gs://purchasing-concierge-{your-project-id} --location=us-central1
    
  2. 复制 .env.example 到 .env.

  3. 在中填写所需的环境变量 .env 文件。替代 GOOGLE_CLOUD_PROJECT 使用您的Google Cloud项目ID。

    GOOGLE_GENAI_USE_VERTEXAI=TRUE
    GOOGLE_CLOUD_PROJECT={your-project-id}
    GOOGLE_CLOUD_LOCATION=us-central1
    STAGING_BUCKET=gs://purchasing-concierge-{your-project-id}
    PIZZA_SELLER_AGENT_URL={your-pizza-agent-url}
    BURGER_SELLER_AGENT_URL={your-burger-agent-url}
    
  4. 将采购礼宾代理部署到代理引擎

    uv sync --frozen
    uv run deploy_to_agent_engine.py
    

运行聊天界面以连接到代理引擎

  1. 更新 .env 文件与 AGENT_ENGINE_RESOURCE_NAME 这是从前面的步骤中获得的。

  2. 运行Gradio应用程序

uv sync --frozen
uv run purchasing_concierge_ui.py