Agent Development Kit (ADK) 架構可簡化 AI 代理的建立、評估及部署作業。ADK 提供以程式碼為主的模組化方法,可建構能夠推論、規劃及使用工具的代理程式。
本教學課程說明如何使用 Python 適用的 ADK,在 Cloud Run 中建構及部署 AI 代理程式。這個代理程式會擷取你指定城市的天氣報告。
如要進一步瞭解如何使用 Google Cloud CLI 代管 ADK 代理程式,請參閱 ADK 說明文件中的「部署至 Cloud Run」。
目標
- 編寫範例應用程式,定義天氣代理程式。
- 從來源將代理程式部署至 Cloud Run。
- 執行代理程式,查詢天氣資訊。
費用
在本文件中,您會使用下列 Google Cloud的計費元件:
您可以使用 Pricing Calculator,根據預測用量估算費用。
事前準備
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the Cloud Run Admin API, Vertex AI API, and Cloud Build APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles. - 在 Google Cloud 專案中設定 Cloud Run 開發環境。
- 請按照代理程式開發套件說明文件中的指示安裝 ADK。
-
專案的「Cloud Run 原始碼開發人員」 (
roles/run.sourceDeveloper) -
Vertex AI 使用者 (
roles/aiplatform.user) 專案 -
服務帳戶使用者 (
roles/iam.serviceAccountUser) 服務身分 -
專案的記錄檢視器 (
roles/logging.viewer)
必要的角色
如要取得將 AI 代理程式部署至 Cloud Run 所需的權限,請要求管理員授予下列 IAM 角色:
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
編寫範例應用程式
如要使用 Python 編寫應用程式,請按照下列步驟操作:
建立名為
parent_folder的新父項目錄,然後將目錄變更為該目錄:mkdir parent_folder cd parent_folder在
parent_folder目錄中,建立名為multi_tool_agent的新子目錄,然後將目錄變更為該目錄:mkdir multi_tool_agent cd multi_tool_agent建立
__init__.py檔案來匯入代理程式:from . import agent建立
agent.py檔案,定義代理程式,用來回答特定城市的時間和天氣相關問題:import datetime from zoneinfo import ZoneInfo from google.adk.agents import Agent def get_weather(city: str) -> dict: """Retrieves the current weather report for a specified city. Args: city (str): The name of the city for which to retrieve the weather report. Returns: dict: status and result or error msg. """ if city.lower() == "new york": return { "status": "success", "report": ( "The weather in New York is sunny with a temperature of 25 degrees" " Celsius (77 degrees Fahrenheit)." ), } else: return { "status": "error", "error_message": f"Weather information for '{city}' is not available.", } def get_current_time(city: str) -> dict: """Returns the current time in a specified city. Args: city (str): The name of the city for which to retrieve the current time. Returns: dict: status and result or error msg. """ if city.lower() == "new york": tz_identifier = "America/New_York" else: return { "status": "error", "error_message": ( f"Sorry, I don't have timezone information for {city}." ), } tz = ZoneInfo(tz_identifier) now = datetime.datetime.now(tz) report = ( f'The current time in {city} is {now.strftime("%Y-%m-%d %H:%M:%S %Z%z")}' ) return {"status": "success", "report": report} root_agent = Agent( name="weather_time_agent", model="gemini-2.0-flash", description=( "Agent to answer questions about the time and weather in a city." ), instruction=( "You are a helpful agent who can answer user questions about the time and weather in a city." ), tools=[get_weather, get_current_time], )建立
.env檔案並新增下列變數:GOOGLE_GENAI_USE_VERTEXAI=TRUE GOOGLE_CLOUD_PROJECT=PROJECT_ID GOOGLE_CLOUD_LOCATION=REGION更改下列內容:
- PROJECT_ID: Google Cloud 專案 ID。
- REGION:您打算部署服務的區域。
前往上層資料夾目錄
parent_folder,然後建立requirements.txt檔案,新增google-adk依附元件:google-adk來源專案包含下列結構:
parent_folder/ ├── requirements.txt └── multi_tool_agent/ ├── __init__.py ├── agent.py └── .env
您的應用程式已完成,可以開始部署。
從來源部署至 Cloud Run
從來源部署功能會自動從原始碼建構容器映像檔,並進行部署。
在原始碼目錄 (
parent_folder) 中,使用下列指令部署至 Cloud Run:gcloud beta run deploy --source .
系統提示您輸入服務名稱時,請按 Enter 鍵接受預設名稱,例如
weather-agent。如果系統提示您在專案中啟用其他 API (例如 Artifact Registry API),請按下
y鍵回應。系統提示您選擇地區時,請選取偏好的地區,例如
europe-west1。如果系統提示您在指定區域建立存放區,請按下
y回應。如果系統提示您允許公開存取: 請回覆
y。如果網域限制機構政策禁止顯示這項提示,您可能不會看到提示。詳情請參閱「事前準備」一節。
然後稍等片刻,等待部署成功。成功完成後,指令列會顯示服務網址。從服務網址前往
/list-apps。例如:https://weather-agent-123456789101.us-central1.run.app/list-apps。
執行代理程式
如要查詢 ADK 代理程式,請執行下列 curl 指令:
如要取得應用程式清單,請執行下列指令:
curl -X GET SERVICE_URL/list-apps將 SERVICE_URL 換成已部署服務的網址。
如要啟動工作階段,請執行下列指令:
curl -X POST SERVICE_URL/apps/multi_tool_agent/users/u_123/sessions/s_123 -H "Content-Type: application/json" -d '{"key1": "value1", "key2": 42}'如要查詢代理程式,請執行下列指令:
curl -X POST SERVICE_URL/run \ -H "Content-Type: application/json" \ -d "{\"appName\": \"multi_tool_agent\",\"userId\": \"u_123\",\"sessionId\": \"s_123\",\"newMessage\": { \"role\": \"user\", \"parts\": [{ \"text\": \"What's the weather in New York today?\" }]}}"
代理程式會在查詢結果中傳回天氣資訊。
如要進一步瞭解支援的 curl 指令及相關範例,請參閱 ADK 說明文件中的「使用 API 伺服器」。
清除所用資源
為避免系統向您的 Google Cloud 帳戶收取額外費用,請刪除您在本教學課程中部署的所有資源。
刪除專案
如果您是為了這個教學課程建立新專案,請刪除該專案。如果您使用現有專案,並想保留專案,但不要本教學課程新增的變更,請刪除為本教學課程建立的資源。
如要避免付費,最簡單的方法就是刪除您為了本教學課程所建立的專案。
刪除專案的方法如下:
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
刪除教學課程資源
刪除您在本教學課程中部署的 Cloud Run 服務。Cloud Run 服務收到要求後才會開始計費。
如要刪除 Cloud Run 服務,請執行下列指令:
gcloud run services delete SERVICE-NAME
將 SERVICE-NAME 改為您的服務名稱。
您也可以從Google Cloud 控制台刪除 Cloud Run 服務。
移除您在教學課程設定期間新增的
gcloud預設區域設定:gcloud config unset run/region移除專案設定:
gcloud config unset project