实验设置说明和要求
保护您的账号和进度。请务必在无痕浏览器窗口中,使用实验凭证运行此实验。

使用 ADK 和 Agent2Agent (A2A) SDK 连接远程智能体

实验 1 小时 universal_currency_alt 7 个点数 show_chart 高级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GENAI120

Google Cloud 自定进度实验

Agent2Agent (A2A) protocol 解决了 AI 领域的一项关键挑战:使不同公司基于多元化框架构建、运行在独立服务器上的生成式 AI 智能体能够高效通信和协作 - 以智能体的身份,而非单纯作为工具。A2A 旨在为智能体提供一种通用语言,助力构建更互联、更强大、更具创新性的 AI 生态系统。

A2A 围绕多项核心概念构建,兼具强大功能与灵活特性:

  • 标准化通信:通过 HTTP(S) 进行 JSON-RPC 2.0 通信。
  • 智能体发现:智能体卡片详细说明了智能体的功能和连接信息,方便智能体之间相互发现并了解彼此的能力。
  • 丰富数据交换:支持文本、文件及结构化 JSON 数据传输。
  • 灵活交互模式:支持同步请求/响应、流式传输 (SSE) 和异步推送通知。
  • 适配企业场景:设计之初即充分考量安全、身份验证和可观测性三大核心需求。

目标

在本实验中,您将执行以下操作:

  • 将 ADK 智能体部署为 A2A 服务器。
  • 准备一张 JSON 智能体卡片,描述 A2A 智能体的功能特性。
  • 使另一个 ADK 智能体能够读取已部署 A2A 智能体的卡片,并将其用作子智能体。

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验会以定时的方式进行,且您无法暂停实验。定时器(点击“开始实验”即可启动)会显示云资源可供您使用的时间。

Qwiklabs 实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud Platform。

要求

要完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
  • 为完成实验留出时间。

注意:如果您已拥有个人 GCP 帐号或项目,请不要使用其进行此实验。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:

    • “打开 Google Cloud 控制台”按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示“登录”页面。

    提示:将这些标签页安排在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在“实验详细信息”窗格中找到“用户名”。

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在“实验详细信息”窗格中找到“密码”。

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标和“搜索”字段

任务 1. 安装 ADK 并设置环境

在本实验环境中,我们已为您启用了 Vertex AI APICloud Run API。如果您在自己的项目中操作,则可前往 Vertex AI 页面,然后按照提示启用相关 API。

准备 Cloud Shell 编辑器标签页

  1. 选中 Google Cloud 控制台窗口,按下键盘上的 G 键后再按 S 键,即可打开 Cloud Shell。或者,您也可以点击 Cloud 控制台右上角的“激活 Cloud Shell”按钮 (激活 Cloud Shell)。

  2. 点击继续

  3. 如果系统提示您为 Cloud Shell 授权,请点击授权

  4. 在 Cloud Shell 终端面板的右上角,点击在新窗口中打开按钮 “在新窗口中打开”按钮

  5. 在 Cloud Shell 终端中,输入以下命令打开 Cloud Shell 编辑器并进入主目录:

    cloudshell workspace ~
  6. 关闭屏幕右侧显示的任何其他教程或 Gemini 面板,以便为代码编辑器留出更多窗口空间。

  7. 在本实验的后续操作中,您可将此窗口作为集成了 Cloud Shell 编辑器和 Cloud Shell 终端的 IDE 使用。

下载并安装本实验所需的 ADK 和代码示例

  1. 在 Cloud Shell 终端中运行以下命令,以安装 ADK。注意:您需要指定版本,以确保您安装的 ADK 版本与本实验中使用的版本一致。

    # Install ADK and the A2A Python SDK cd ~ export PATH=$PATH:"/home/${USER}/.local/bin" python3 -m pip install google-adk==1.8.0 a2a-sdk==0.2.16 pip install --upgrade google-genai # Correcting a typo in this version sed -i 's/{a2a_option}"/{a2a_option} "/' ~/.local/lib/python3.12/site-packages/google/adk/cli/cli_deploy.py
  2. 将以下命令粘贴到 Cloud Shell 终端中,以从 Cloud Storage 存储桶复制实验代码并将其解压缩:

    gcloud storage cp gs://{{{project_0.project_id| YOUR_GCP_PROJECT_ID}}}-bucket/adk_and_a2a.zip ./adk_and_a2a.zip unzip adk_and_a2a.zip

    点击检查我的进度以验证是否完成了以下目标: 安装 ADK 并设置环境。

任务 2. 探索您将远程共享的 ADK 智能体

在本实验中,假设您任职于一家体育场馆维护公司 Cymbal Stadiums。在最近的一个项目中,您开发了一款图片生成智能体,能够按照企业品牌规范制作插图。现在,您组织中的多个不同团队也想使用这款智能体。

如果将代码复制给多个智能体作为子智能体使用,后续的维护与升级工作将极为繁琐。

您可以采用另一种方案,只需将该智能体部署一次并封装为 A2A 服务器,其他团队的智能体即可通过远程查询的方式集成使用该智能体。

  1. 在 Cloud Shell 编辑器的文件资源管理器窗格中,前往 adk_and_a2a/illustration_agent 目录。此目录包含您将远程共享的 ADK 智能体。点击相应目录将其展开。

  2. 打开此目录中的 agent.py 文件,然后滚动到标记为 # Tools 的部分。

  3. 请注意 generate_image() 函数,它将用作此智能体的工具。它会接收提示并执行两步流程。第一步,它会使用 Google Gen AI SDK 调用 generate_content(),后者会直接在响应中返回原始图片数据。第二步,该函数会使用 Cloud Storage 库将这些图片字节上传到 GCS 存储桶。最后,该工具会返回新创建的图片文件的公开网址。

  4. 请注意,提供给 root_agentinstruction 为智能体提供了具体指令,要求其使用符合公司品牌规范的图片生成提示。例如,它可以指定:

    • 特定的插图风格:(Corporate Memphis)
    • 配色方案(日落渐变背景下的紫色和绿色)
    • 体育场馆/体育相关及维护场景图片示例(因所属行业为体育场馆维护)
  5. 如需体验该智能体的功能,您首先需要编写一个 .env 文件,设置 ADK 智能体所需的环境变量。请在 Cloud Shell 终端中运行以下命令,在相应目录下创建此文件:

    cd ~/adk_and_a2a cat << EOF > illustration_agent/.env GOOGLE_GENAI_USE_VERTEXAI=TRUE GOOGLE_CLOUD_PROJECT={{{project_0.project_id| YOUR_GCP_PROJECT_ID}}} GOOGLE_CLOUD_LOCATION=global MODEL={{{project_0.startup_script.gemini_flash_model_id | gemini_flash_model_id}}} IMAGE_MODEL={{{project_0.startup_script.gemini_flash_image_model_id | gemini_flash_image_model_id}}} EOF
  6. 运行以下命令,将 .env 复制到本实验中会用到的另一个智能体目录中:

    cp illustration_agent/.env slide_content_agent/.env
  7. 现在,在 Cloud Shell 终端中运行以下命令启动 ADK 开发者界面:

    adk web

    输出

    INFO: Started server process [2434] INFO: Waiting for application startup. +-------------------------------------------------------+ | ADK Web Server started | | | | For local testing, access at http://localhost:8000. | +-------------------------------------------------------+ INFO: Application startup complete. INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
  8. 如需在新标签页中查看相应网页界面,请点击终端输出底部的 http://127.0.0.1:8000 链接。

  9. 系统即会在一个新浏览器标签页中打开 ADK 开发者界面。

  10. 从左侧的 Select an agent 下拉菜单中,选择 illustration_agent

  11. 向智能体输入适合用于招聘幻灯片演示文稿的文本,例如:

    By supporting each other, we get big things done!
  12. 大约 10 秒后,智能体将返回生成的提示以及用于预览图片的网址。点击图片网址预览图片,然后点击浏览器中的后退,返回开发者界面。

    输出示例

    模型回答示例

    示例图片

    生成的图片

  13. 请注意,您向智能体提供的提示并未提及体育、体育场馆或维护工作,但智能体结合您的文本与品牌规范,生成了用于图片生成模型的统一提示。

    探索完基础智能体后,关闭浏览器标签页。

  14. 点击 Cloud Shell 终端窗格,然后按 Ctrl+C 停止服务器。

    点击检查我的进度以验证是否完成了以下目标: 探索 ADK 智能体。

任务 3. 将智能体部署为 A2A 服务器

接下来,您需要执行相关步骤,将该智能体部署为远程 A2A 智能体。

  1. A2A 智能体通过提供智能体卡片来标识自身身份及功能特性。运行以下命令创建 agent.json 文件。

    touch illustration_agent/agent.json
  2. 打开 adk_and_a2a/illustration_agent 目录中的 agent.json 文件,然后粘贴以下内容:

    { "name": "illustration_agent", "description": "An agent designed to generate branded illustrations for Cymbal Stadiums.", "defaultInputModes": ["text/plain"], "defaultOutputModes": ["application/json"], "skills": [ { "id": "illustrate_text", "name": "Illustrate Text", "description": "Generate an illustration to illustrate the meaning of provided text.", "tags": ["illustration", "image generation"] } ], "url": "https://illustration-agent-{{{project_0.startup_script.project_number|Project Number}}}.{{{project_0.default_region| GCP_LOCATION}}}.run.app/a2a/illustration_agent", "capabilities": {}, "version": "1.0.0" }
  3. 保存文件。

  4. 查看 agent.json 文件中的 JSON。请注意,它为智能体提供了 namedescription,并确定了一些 skills。它还指明了智能体本身可通过哪个 url 调用。

    在您按照本实验的指示部署智能体后,智能体的 url 将构建为 Cloud Run 服务网址。

    这里的参数 capabilities 虽然名称与 skills 相似,但它专指流式传输等功能。

  5. 运行以下命令,在 illustration_agent 目录中创建 requirements.txt 文件。

    touch illustration_agent/requirements.txt
  6. 选择该文件,然后将以下内容粘贴到该文件中。

    google-adk==1.8.0 a2a-sdk==0.2.16
  7. 保存文件。

  8. 在以下命令中,您将使用 adk deploy cloud_run 命令和 --a2a 标志,将智能体作为 A2A 服务器部署到 Cloud Run。您可以搜索“将 ADK 智能体部署到 Cloud Run”这个实验,详细了解如何将智能体部署到 Cloud Run。在此命令中:

    • --project--region 分别用于定义将在哪个项目和哪个区域部署 Cloud Run 服务
    • --service_name 用于定义 Cloud Run 服务的名称
    • --a2a 标志表示应将其托管为 A2A 智能体。这意味着以下两点:
      • 您的智能体将由一个桥接 ADK 与 A2A 智能体的类(即 A2aAgentExecutor)封装。这个类负责将 A2A protocol 的任务和消息语言转换为 ADK 运行器能够理解的事件语言。
      • 智能体卡片也将托管在 CLOUD_RUN_URL/a2a/AGENT_NAME/.well-known/agent.json注意:虽然此版本的卡片很快就能使用,但智能体网址的动态重写功能目前不适用于 Cloud Run,因此我们不会在此版本的实验中使用它。

    使用以下命令将智能体作为 A2A 服务器部署到 Cloud Run

    adk deploy cloud_run \ --project {{{project_0.project_id| YOUR_GCP_PROJECT_ID}}} \ --region {{{project_0.default_region| GCP_LOCATION}}} \ --service_name illustration-agent \ --a2a \ illustration_agent
  9. 系统会提示您允许此容器接收未经身份验证的回答。为进行实验测试,请在 Cloud Shell 终端中输入 Y(表示“是”),然后按 Return 键

    注意:部署过程大约需要 5-10 分钟。如果您遇到 PERMISSION_DENIED 错误,请尝试再次运行上述命令。

    预期输出:

    您会看到与构建 Dockerfile、部署容器和部署服务相关的步骤,接下来是:

    Service [illustration-agent] revision [illustration-agent-00001-xpp] has been deployed and is serving 100 percent of traffic. Service URL: https://illustration-agent-{{{project_0.startup_script.project_number|Project Number}}}.{{{project_0.default_region| GCP_LOCATION}}}.run.app

    点击检查我的进度以验证是否完成了以下目标: 将智能体部署为 A2A 服务器。

任务 4. 允许其他 ADK 智能体远程调用此智能体

在此任务中,您将为第二个 ADK 智能体提供识别插图智能体功能并远程调用该智能体的能力。第二个智能体将负责为幻灯片创建内容。它会撰写标题和几句正文,然后转交给插图智能体来生成与文本相匹配的插图。

  1. 在 Cloud Shell 终端中,运行以下命令,将智能体卡片 JSON 文件复制到 adk_and_a2a 目录,并更改其名称以表明它代表 illustration_agent

    cp illustration_agent/agent.json illustration-agent-card.json
  2. 在 Cloud Shell 编辑器的文件资源管理器窗格中,前往 adk_and_a2a/slide_content_agent,然后打开 agent.py 文件。

    查看此智能体的 instruction,了解它将如何根据用户对幻灯片的建议撰写标题和正文,然后转交给您的 A2A 智能体来为幻灯片配图。

  3. # Agents 标题下粘贴以下代码,以使用 ADK 中的 RemoteA2aAgent 类添加远程智能体:

    illustration_agent = RemoteA2aAgent( name="illustration_agent", description="Agent that generates illustrations.", agent_card=( "illustration-agent-card.json" ), )
  4. 通过向 root_agent 添加以下参数,将 illustration_agent 添加为 root_agent 的子智能体:

    sub_agents=[illustration_agent]
  5. 保存文件。

  6. 通过 Cloud Shell 终端启动界面:

    cd ~/adk_and_a2a adk web
  7. 再次点击终端输出中的 http://127.0.0.1:8000 链接。

  8. 系统随即会打开一个新的浏览器标签页,其中包含 ADK 开发者界面。从左侧的 Select an agent 下拉菜单中,选择 slide_content_agent

  9. 向智能体提出幻灯片创意:

    制作一张幻灯片,介绍我们出色的在职培训。

您应该会看到以下输出内容:

  • slide_content_agent 本身撰写的标题和正文
  • transfer_to_agent 的调用,表示转交给 illustration_agent
  • illustration_agent 的回答,其中包含一个链接,点击链接即可查看新图片。
智能体生成文本,然后转交给 illustration_agent 来生成图片。

生成的图片

点击检查我的进度以验证是否完成了以下目标: 启用另一个 ADK 智能体以远程调用该智能体。

恭喜!

在本实验中,您将一个 ADK 智能体部署为 A2A 服务器,准备了一张 JSON 智能体卡片来描述 A2A 智能体的功能,还使另一个 ADK 智能体能够读取已部署 A2A 智能体的卡片并将其用作子智能体

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2025 年 10 月 6 日

上次测试实验的时间:2025 年 10 月 6 日

版权所有 2020 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

请使用无痕模式或无痕式浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。