Install ADK and set up your environment

Check my progress

/ 25

Explore the ADK agent

Check my progress

/ 25

Deploy the Agent as an A2A Server

Check my progress

/ 25

Enable another ADK agent to call the agent remotely

Check my progress

/ 25

This lab may incorporate AI tools to support your learning.
注意:為了確保一致且高效能的體驗,本實驗室可能會針對某些模型要求提供快取的回應。

GENAI120

Google Cloud 自學實驗室

總覽

Agent2Agent (A2A) 通訊協定可解決 AI 領域的一項重大挑戰:允許不同公司在獨立伺服器上,執行以各種架構建構的生成式 AI 代理,有效地通訊和協作,讓代理不再只是工具。A2A 的目標是為代理提供通用語言,促進更緊密相連、更強大且創新的 AI 生態系統。

A2A 有以下幾個核心設計概念,因此功能強大且靈活:

  • 標準化通訊:透過 HTTP(S) 的 JSON-RPC 2.0。
  • 代理探索:代理資訊卡會提供代理功能和連線資訊的相關詳情,因此代理可以互相探索,瞭解彼此的功能。
  • 交換豐富資料:處理文字、檔案和結構化 JSON 資料。
  • 彈性互動:支援同步要求/回覆、串流 (SSE) 和非同步推播通知。
  • 企業適用:在設計中融入安全防護、驗證和觀測功能。

目標

在這個實驗室,您將瞭解如何執行下列工作:

  • 設定環境並安裝 Agent Development Kit (ADK)。
  • 將 ADK 代理部署為 A2A 伺服器。
  • 準備 JSON 代理資訊卡,說明 A2A 代理的功能。
  • 讓另一個 ADK 代理讀取已部署 A2A 代理的代理資訊卡,並將其當做子代理使用。

設定和需求

瞭解以下事項後,再點選「Start Lab」按鈕

請詳閱以下操作說明。實驗室活動會計時,且中途無法暫停。點選「Start Lab」後就會開始計時,顯示可使用 Google Cloud 資源的時間。

您將在真正的雲端環境完成實作實驗室活動,而不是模擬或示範環境。為此,我們會提供新的暫時憑證,供您在實驗室活動期間登入及存取 Google Cloud。

為了順利完成這個實驗室,請先確認:

  • 可以使用標準的網際網路瀏覽器 (Chrome 瀏覽器為佳)。
注意事項:請使用無痕模式 (建議選項) 或私密瀏覽視窗執行此實驗室,這可以防止個人帳戶和學員帳戶之間的衝突,避免個人帳戶產生額外費用。
  • 是時候完成實驗室活動了!別忘了,活動一旦開始將無法暫停。
注意事項:務必使用實驗室專用的學員帳戶。如果使用其他 Google Cloud 帳戶,可能會產生額外費用。

如何開始研究室及登入 Google Cloud 控制台

  1. 點選「Start Lab」按鈕。如果實驗室會產生費用,畫面上會出現選擇付款方式的對話方塊。左側的「Lab Details」窗格會顯示下列項目:

    • 「Open Google Cloud console」按鈕
    • 剩餘時間
    • 必須在這個研究室中使用的臨時憑證
    • 完成這個實驗室所需的其他資訊 (如有)
  2. 點選「Open Google Cloud console」;如果使用 Chrome 瀏覽器,也能按一下滑鼠右鍵,選取「在無痕視窗中開啟連結」

    接著,實驗室會啟動相關資源,並開啟另一個分頁,顯示「登入」頁面。

    提示:您可以在不同的視窗中並排開啟分頁。

    注意:如果頁面中顯示「選擇帳戶」對話方塊,請點選「使用其他帳戶」
  3. 如有必要,請將下方的 Username 貼到「登入」對話方塊。

    {{{user_0.username | "Username"}}}

    您也可以在「Lab Details」窗格找到 Username。

  4. 點選「下一步」

  5. 複製下方的 Password,並貼到「歡迎使用」對話方塊。

    {{{user_0.password | "Password"}}}

    您也可以在「Lab Details」窗格找到 Password。

  6. 點選「下一步」

    重要事項:請務必使用實驗室提供的憑證,而非自己的 Google Cloud 帳戶憑證。 注意:如果使用自己的 Google Cloud 帳戶來進行這個實驗室,可能會產生額外費用。
  7. 按過後續的所有頁面:

    • 接受條款及細則。
    • 由於這是臨時帳戶,請勿新增救援選項或雙重驗證機制。
    • 請勿申請免費試用。

Google Cloud 控制台稍後會在這個分頁開啟。

注意:如要使用 Google Cloud 產品和服務,請點選「導覽選單」,或在「搜尋」欄位輸入服務或產品名稱。「導覽選單」圖示和搜尋欄位

工作 1:安裝 ADK 並設定環境

在這個實驗室環境,Vertex AI APICloud Run API 已啟用。如要在您的專案執行這些步驟,請前往 Vertex AI 並按照提示啟用。

準備 Cloud Shell 編輯器分頁

  1. 選取 Google Cloud 控制台視窗,然後依序按下 G 和 S 鍵來開啟 Cloud Shell。或者,您也可以點選 Cloud 控制台右上方的「啟用 Cloud Shell」按鈕 啟用 Cloud Shell
  2. 點選「繼續」
  3. 系統提示您授權 Cloud Shell 時,點按「授權」
  4. 點選 Cloud Shell 終端機面板右上角的「在新視窗中開啟」按鈕 「在新視窗中開啟」按鈕
  5. 點按窗格頂端的「開啟編輯器」鉛筆圖示 「編輯」鉛筆圖示,即可查看檔案。
  6. 點選左側導覽選單頂端的「Explorer」圖示 「探索工具」圖示,開啟檔案總管。
  7. 點選「Open Folder」按鈕。
  8. 在隨即開啟的「Open Folder」對話方塊,點選「OK」,選取學員帳戶的主資料夾。
  9. 關閉畫面右側顯示的其他教學課程或 Gemini 面板,為程式碼編輯器騰出更多視窗空間。
  10. 操作這個實驗室其餘步驟時,您可以全程將這個視窗當成 IDE 使用,搭配 Cloud Shell 編輯器和 Cloud Shell 終端機作業。

下載並安裝實驗室所需的 ADK 和程式碼範例

  • 在 Cloud Shell 終端機執行下列程式碼,下載這個實驗室的程式碼,並安裝 Agent Development Kit (ADK) 和其他必要項目:

    gcloud storage cp -r gs://{{{project_0.project_id| YOUR_GCP_PROJECT_ID}}}-bucket/* . export PATH=$PATH:"/home/${USER}/.local/bin" python3 -m pip install --upgrade google-adk[a2a]==1.31.0 google-genai

    點選「Check my progress」,確認目標已達成。 安裝 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 程式庫,將這些圖像位元組上傳至 Google Cloud Storage bucket。最後,這項工具會傳回新建圖像檔案的網址。

  4. 請注意,提供給 root_agentinstruction 含有具體指示,要求代理使用符合公司品牌宣傳指南的圖像生成提示詞。比方說,該指令指定:

    • 特定插畫風格:(Corporate Memphis)
    • 調色盤 (日落時的紫綠漸層)
    • 體育館/運動和維護工作的圖像範例,因為這是體育館維護公司
  5. 如要查看實際運作情況,請先編寫 .env 檔案,設定 ADK 代理所需的環境變數。在 Cloud Shell 終端機執行下列指令,將 .env 檔案寫入這個目錄。

    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. 如要讓代理為圖片建立經簽署的網址,您必須模擬專屬服務帳戶。執行下列指令,透過模擬方式設定應用程式預設憑證:

    gcloud auth application-default login \ --impersonate-service-account=illustration-agent-sa@{{{project_0.project_id|YOUR_GCP_PROJECT_ID}}}.iam.gserviceaccount.com
  8. Cloud Shell 終端機會要求您確認是否要以個人帳戶進行驗證。請輸入 Y (表示「是」),然後按下 Enter 鍵。

  9. 點選系統提供的連結,然後選取您的 Qwiklabs 學生帳戶進行驗證。

  10. 驗證完成後,系統會顯示授權碼。請使用「複製」按鈕複製授權碼,然後返回 Cloud Shell 終端機。

  11. 將複製的授權碼貼到 Cloud Shell 終端機,然後按下 Enter 鍵。

  12. 在 Cloud Shell 終端機輸入下列指令,啟動 Agent Development Kit 開發人員使用者介面:

    adk web --allow_origins "regex:https://.*\.cloudshell\.dev"

    輸出內容

    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)
  13. 點選終端機輸出內容底部的 http://127.0.0.1:8000 連結,在新分頁開啟網頁介面。

  14. 新的瀏覽器分頁會隨即開啟,顯示 ADK 開發人員使用者介面。

  15. 在 ADK 開發人員使用者介面分頁,從左側的「Select an app」下拉式選單中選取「illustration_agent」

  16. 在給代理的提示詞中,輸入適合用於招募投影片的文字:

    互相扶持能成就大事!
  17. 大約一兩分鐘後,代理會傳回生成的提示詞,以及圖像預覽畫面。

    輸出內容示例

    回覆內容和生成圖像。

  18. 您會發現提供給代理的提示詞並未提及運動、體育場或維護工作,但代理會將這些文字內容和品牌宣傳指南合併為單一提示詞,供圖像生成模型使用。

    探索完基礎代理後,請關閉瀏覽器分頁。

  19. 返回 Cloud Shell 終端機,按下 CTRL+C 鍵停止伺服器。

    點選「Check my progress」,確認目標已達成。 探索 ADK 代理。

工作 3:將代理部署為 A2A 伺服器

在這項工作,您需要按照下列步驟,將這個代理部署為遠端 A2A 代理。A2A 代理會提供代理資訊卡,說明其身分和功能。

  1. 請執行下列指令來建立 agent.json 檔案:

    cat << EOF > illustration_agent/agent.json { "name": "illustration_agent", "description": "設計用來為 Cymbal Stadiums 生成品牌插圖的代理。", "defaultInputModes": ["text/plain"], "defaultOutputModes": ["application/json"], "skills": [ { "id": "illustrate_text", "name": "Illustrate Text", "description": "根據提供的文字生成插圖來闡明意義。", "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" } EOF
  2. 檢查 agent.json 檔案中的 JSON。您會發現該檔案為代理提供 namedescription、識別一些 skills,並指出可呼叫代理的 url

    按照這個實驗室的指示部署代理後,代理的 url 會建構為 Cloud Run 服務網址。

    雖然 name 與 skills 相似,但這裡保留的 capabilities 參數是用來表示串流等功能。

  3. 執行下列指令,在 illustration_agent 目錄建立 requirements.txt 檔案:

    cat << EOF > illustration_agent/requirements.txt google-adk[a2a]==1.31.0 EOF
  4. 在下列指令,您要使用 adk deploy cloud_run--a2a 旗標,將代理部署至 Cloud Run 做為 A2A 伺服器:

    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 \ -- \ --service-account=illustration-agent-sa@{{{project_0.project_id| YOUR_GCP_PROJECT_ID}}}.iam.gserviceaccount.com \ --set-env-vars="GOOGLE_CLOUD_LOCATION=global"
  5. 系統提示是否允許進行未經驗證的回應時,請輸入 Y,然後按下 Enter 鍵。

    代理部署期間,請檢查下列傳遞至指令的引數:

    • --project--region 用來定義要將 Cloud Run 服務部署至哪一個專案和區域。
    • --service_name 用來定義 Cloud Run 服務的名稱。
    • --a2a 旗標表示應以 A2A 形式託管代理,這表示代理會封裝到 A2aAgentExecutor 類別,這個類別負責橋接 ADK 和 A2A 代理,會將 A2A 通訊協定的 Task 和 Message 語言,翻譯成 ADK Runner 的 Event 語言。
    • -- 分隔符的用途是將旗標直接傳遞至底層的 gcloud run deploy 指令。ADK 工具會忽略 -- 後列出的所有旗標,並直接由 Google Cloud CLI 處理。這裡的分隔符是用於指派專屬服務帳戶,並在初始部署時設定 GOOGLE_CLOUD_LOCATION 環境變數。
    注意:部署作業約需 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

    點選「Check my progress」,確認目標已達成。 將代理部署為 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 標頭下方 (第 16 行左右) 貼上下列程式碼,以使用 ADK 的 RemoteA2aAgent 類別新增遠端代理:

    illustration_agent = RemoteA2aAgent( name="illustration_agent", description="用來生成插圖的代理。", agent_card=( "illustration-agent-card.json" ), )
  4. 在同一個檔案的 # Add the sub_agents parameter below 下方新增下列參數,將 illustration_agent 新增為 root_agent 的子代理:

    sub_agents=[illustration_agent]
  5. 儲存檔案。

  6. 在 Cloud Shell 終端機輸入下列指令,啟動使用者介面:

    cd ~/adk_and_a2a adk web --allow_origins "regex:https://.*\.cloudshell\.dev"
  7. 再次點選終端機輸出內容中的 http://127.0.0.1:8000 連結,啟動 ADK 開發人員使用者介面。

  8. 在 ADK 開發人員使用者介面的瀏覽器分頁中,從左側的「Select an app」下拉式選單中選取「slide_content_agent」

  9. 在提示詞中向代理說明投影片構想,如下所示:

    製作投影片內容,說明我們優質的訓練課程。

    您應該會看到下列輸出內容:

    • slide_content_agent 撰寫的標題和內文。
    • 呼叫 transfer_to_agent,表示要轉移至 illustration_agent
    • illustration_agent 的回覆,內含新圖像。

    預期的輸出內容:

    代理會生成文字,然後轉交給 illustration_agent 生成圖像。

    點選「Check my progress」,確認目標已達成。 讓另一個 ADK 代理遠端呼叫代理。

恭喜!

在本實驗室中,您已透過 A2A 通訊協定,展現跨代理協作的強大功能!您已將本機 ADK 代理以獨立微服務的形式部署至 Cloud Run,並透過標準化代理資訊卡詳細說明其功能。然後,您讓次要獨立代理安全地移交任務。掌握這些基礎技能後,您就能開始在分散各處的團隊之間,建構可擴充的多代理生態系統。

Google Cloud 教育訓練與認證

協助您瞭解如何充分運用 Google Cloud 的技術。我們的課程會介紹專業技能和最佳做法,讓您可以快速掌握要領並持續進修。我們提供從基本到進階等級的訓練課程,並有隨選、線上和虛擬課程等選項,方便您抽空參加。認證可協助您驗證及證明自己在 Google Cloud 技術方面的技能和專業知識。

使用手冊上次更新日期:2026 年 4 月 20 日

實驗室上次測試日期:2026 年 4 月 20 日

Copyright 2026 Google LLC 保留所有權利。Google 和 Google 標誌是 Google LLC 的商標,其他公司和產品名稱則有可能是其關聯公司的商標。

Before you begin

  1. Labs create a Google Cloud project and resources for a fixed time
  2. Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
  3. On the top left of your screen, click Start lab to begin

Use private browsing

  1. Copy the provided Username and Password for the lab
  2. Click Open console in private mode

Sign in to the Console

  1. Sign in using your lab credentials. Using other credentials might cause errors or incur charges.
  2. Accept the terms, and skip the recovery resource page
  3. Don't click End lab unless you've finished the lab or want to restart it, as it will clear your work and remove the project

This content is not currently available

We will notify you via email when it becomes available

Great!

We will contact you via email if it becomes available

One lab at a time

Confirm to end all existing labs and start this one

Use private browsing to run the lab

Using an Incognito or private browser window is the best way to run this lab. This prevents any conflicts between your personal account and the Student account, which may cause extra charges incurred to your personal account.

Complete this quick step to start your lab.