1. Pengantar
Tutorial ini akan memandu Anda men-deploy, mengelola, dan memantau agen canggih yang dibangun dengan Agent Development Kit (ADK) di Google Cloud Run. ADK memungkinkan Anda membuat agen yang mampu melakukan alur kerja multi-agen yang kompleks. Dengan memanfaatkan Cloud Run, platform serverless yang terkelola sepenuhnya, Anda dapat men-deploy agen sebagai aplikasi dalam container yang skalabel tanpa mengkhawatirkan infrastruktur yang mendasarinya. Kombinasi yang canggih ini memungkinkan Anda berfokus pada logika inti agen sekaligus mendapatkan manfaat dari lingkungan Google Cloud yang andal dan skalabel.
Sepanjang tutorial ini, kita akan mempelajari integrasi ADK yang lancar dengan Cloud Run. Anda akan mempelajari cara men-deploy agen, lalu mempelajari aspek praktis pengelolaan aplikasi dalam setelan seperti produksi. Kita akan membahas cara meluncurkan versi baru agen Anda dengan aman melalui pengelolaan traffic, sehingga Anda dapat menguji fitur baru dengan sebagian kecil pengguna sebelum rilis penuh.
Selain itu, Anda akan mendapatkan pengalaman langsung dalam memantau performa agen Anda. Kita akan menyimulasikan skenario dunia nyata dengan melakukan uji beban untuk mengamati kemampuan penskalaan otomatis Cloud Run dalam tindakan. Untuk mendapatkan insight yang lebih mendalam tentang perilaku dan performa agen Anda, kami akan mengaktifkan tracing dengan Cloud Trace. Hal ini akan memberikan tampilan permintaan yang mendetail dan menyeluruh saat permintaan tersebut melewati agen Anda, sehingga Anda dapat mengidentifikasi dan mengatasi hambatan performa. Setelah menyelesaikan tutorial ini, Anda akan memiliki pemahaman yang komprehensif tentang cara men-deploy, mengelola, dan memantau agen yang didukung ADK secara efektif di Cloud Run.
Selama mengikuti codelab, Anda akan menggunakan pendekatan langkah demi langkah sebagai berikut:
- Buat database PostgreSQL di CloudSQL untuk digunakan bagi layanan sesi database ADK Agent
- Menyiapkan agen ADK dasar
- Menyiapkan layanan sesi database untuk digunakan oleh runner ADK
- Men-deploy agen ke Cloud Run untuk pertama kalinya
- Pengujian beban dan memeriksa penskalaan otomatis Cloud Run
- Men-deploy revisi agen baru dan secara bertahap meningkatkan traffic ke revisi baru
- Menyiapkan cloud tracing dan memeriksa tracing eksekusi agen
Ringkasan Arsitektur

Prasyarat
- Nyaman bekerja dengan Python
- Pemahaman tentang arsitektur full-stack dasar menggunakan layanan HTTP
Yang akan Anda pelajari
- Struktur ADK dan utilitas lokal
- Menyiapkan agen ADK dengan layanan sesi Database
- Menyiapkan PostgreSQL di CloudSQL untuk digunakan oleh layanan sesi Database
- Men-deploy aplikasi ke Cloud Run menggunakan Dockerfile dan menyiapkan variabel lingkungan awal
- Mengonfigurasi dan Menguji penskalaan otomatis Cloud Run dengan pengujian beban
- Strategi untuk rilis bertahap dengan Cloud Run
- Menyiapkan pelacakan Agen ADK ke Cloud Trace
Yang Anda butuhkan
- Browser web Chrome
- Akun Gmail
- Project Cloud dengan penagihan diaktifkan
Codelab ini, yang dirancang untuk developer dari semua tingkat keahlian (termasuk pemula), menggunakan Python dalam aplikasi contohnya. Namun, pengetahuan Python tidak diperlukan untuk memahami konsep yang disajikan.
2. 🚀 Menyiapkan Penyiapan Workshop
Sekarang, kita akan menggunakan Cloud Shell IDE untuk tutorial ini. Klik tombol berikut untuk membuka Cloud Shell IDE
Setelah berada di Cloud Shell, clone direktori kerja template untuk codelab ini dari GitHub dengan menjalankan perintah berikut. Perintah ini akan membuat direktori kerja di direktori deploy_and_manage_adk
git clone https://github.com/alphinside/deploy-and-manage-adk-service.git deploy_and_manage_adk
Kemudian, jalankan perintah berikut di terminal untuk membuka repositori yang di-clone sebagai direktori kerja Anda
cloudshell workspace ~/deploy_and_manage_adk && cd ~/deploy_and_manage_adk
Setelah itu, antarmuka Anda akan terlihat seperti ini

Ini akan menjadi antarmuka utama kita, IDE di atas, terminal di bawah. Sekarang kita perlu menyiapkan terminal untuk membuat dan mengaktifkan Project Google Cloud yang akan ditautkan ke akun penagihan uji coba yang diklaim sebelumnya. Kami telah menyiapkan skrip agar sesi terminal Anda selalu siap. Jalankan perintah berikut ( pastikan Anda sudah berada di dalam ruang kerja deploy_and_manage_adk
bash setup_trial_project.sh && source .env
Saat menjalankan perintah ini, Anda akan diminta untuk memasukkan nama project ID yang disarankan. Anda dapat menekan Enter untuk melanjutkan

Setelah menunggu beberapa saat, jika Anda melihat output ini di konsol, Anda siap melanjutkan ke langkah berikutnya 
Hal ini menunjukkan bahwa terminal Anda sudah diautentikasi dan disetel ke project ID yang benar ( warna kuning di samping jalur direktori saat ini). Perintah ini membantu Anda membuat project baru, menemukan dan menautkan project ke akun penagihan uji coba, menyiapkan file .env untuk konfigurasi variabel lingkungan, dan juga mengaktifkan project ID yang benar di terminal untuk Anda.
Sekarang, kita siap untuk langkah berikutnya
3. 🚀 Mengaktifkan API
Dalam tutorial ini, kita akan berinteraksi dengan database CloudSQL, model Gemini, dan Cloud Run. Produk ini memerlukan aktivasi API berikut. Jalankan perintah ini untuk mengaktifkannya
Proses ini memerlukan waktu beberapa saat.
gcloud services enable aiplatform.googleapis.com \
run.googleapis.com \
cloudbuild.googleapis.com \
cloudresourcemanager.googleapis.com \
sqladmin.googleapis.com \
compute.googleapis.com
Setelah perintah berhasil dieksekusi, Anda akan melihat pesan yang mirip dengan yang ditampilkan di bawah:
Operation "operations/..." finished successfully.
4. 🚀 Penyiapan Lingkungan Python dan Variabel Lingkungan
Kita akan menggunakan Python 3.12 dalam codelab ini dan kita akan menggunakan pengelola project Python uv untuk menyederhanakan kebutuhan pembuatan dan pengelolaan versi Python serta lingkungan virtual. Paket uv ini sudah diinstal sebelumnya di Cloud Shell.
Jalankan perintah ini untuk menginstal dependensi yang diperlukan ke lingkungan virtual di direktori .venv
uv sync --frozen
Selanjutnya, kita akan memeriksa file variabel lingkungan yang diperlukan untuk project ini. Sebelumnya, file ini disiapkan oleh skrip setup_trial_project.sh. Jalankan perintah berikut untuk membuka file .env di editor
cloudshell open .env
Anda akan melihat konfigurasi berikut yang sudah diterapkan pada file .env.
# .env # Google Cloud and Vertex AI configuration GOOGLE_CLOUD_PROJECT=your-project-id GOOGLE_CLOUD_LOCATION=global GOOGLE_GENAI_USE_VERTEXAI=True # Database connection for session service # DB_CONNECTION_NAME=your-db-connection-name
Untuk codelab ini, kita akan menggunakan nilai yang telah dikonfigurasi sebelumnya untuk GOOGLE_CLOUD_LOCATION dan GOOGLE_GENAI_USE_VERTEXAI.
Sekarang kita dapat melanjutkan ke langkah berikutnya, yaitu membuat database yang akan digunakan oleh agen kita untuk persistensi status dan sesi.
5. 🚀 Menyiapkan Database CloudSQL
Kita akan memerlukan database yang akan digunakan oleh agen ADK nanti. Mari kita buat database PostgreSQL di Cloud SQL. Jalankan perintah berikut untuk membuat instance database terlebih dahulu. Kita akan menggunakan nama database postgres default, jadi kita akan melewati pembuatan database di sini. Kita juga perlu mengonfigurasi nama pengguna database default (juga postgres). Untuk tujuan tutorial, mari kita gunakan ADK-deployment123 sebagai sandi kita
gcloud sql instances create adk-deployment \
--database-version=POSTGRES_17 \
--edition=ENTERPRISE \
--tier=db-g1-small \
--region=us-central1 \
--availability-type=ZONAL \
--project=${GOOGLE_CLOUD_PROJECT} && \
gcloud sql users set-password postgres \
--instance=adk-deployment \
--password=ADK-deployment123
Dalam perintah di atas, gcloud sql instances create adk-deployment umum pertama adalah perintah yang kita gunakan untuk membuat instance database. Kita menggunakan spesifikasi minimal sandbox untuk tujuan tutorial ini. Perintah kedua gcloud sql users set-password postgres digunakan untuk mengubah sandi nama pengguna postgres default
Perhatikan bahwa kita menggunakan adk-deployment sebagai nama instance database. Setelah selesai, Anda akan melihat output di terminal seperti yang ditunjukkan di bawah yang menunjukkan bahwa instance sudah siap dan sandi pengguna default telah diperbarui
Created [https://sqladmin.googleapis.com/sql/v1beta4/projects/your-project-id/instances/adk-deployment]. NAME: adk-deployment DATABASE_VERSION: POSTGRES_17 LOCATION: us-central1-a TIER: db-g1-small PRIMARY_ADDRESS: xx.xx.xx.xx PRIVATE_ADDRESS: - STATUS: RUNNABLE Updating Cloud SQL user...done.
Karena deployment database ini akan memakan waktu, mari lanjutkan ke bagian berikutnya sambil menunggu deployment database CloudSQL siap.
6. 🚀 Membangun Agen Cuaca dengan ADK dan Gemini 2.5
Pengantar Struktur Direktori ADK
Mari kita mulai dengan mempelajari apa yang ditawarkan ADK dan cara membuat agen. Dokumentasi lengkap ADK dapat diakses di URL ini . ADK menawarkan banyak utilitas dalam eksekusi perintah CLI-nya. Beberapa di antaranya adalah sebagai berikut :
- Menyiapkan struktur direktori agen
- Mencoba interaksi dengan cepat melalui input output CLI
- Menyiapkan antarmuka web UI pengembangan lokal dengan cepat
Sekarang, mari kita periksa struktur agen di direktori weather_agent
weather_agent/ ├── __init__.py ├── agent.py └── tool.py
Jika Anda memeriksa init.py dan agent.py, Anda akan melihat kode ini
# __init__.py
from weather_agent.agent import root_agent
__all__ = ["root_agent"]
# agent.py
import os
from pathlib import Path
import google.auth
from dotenv import load_dotenv
from google.adk.agents import Agent
from weather_agent.tool import get_weather
# Load environment variables from .env file in root directory
root_dir = Path(__file__).parent.parent
dotenv_path = root_dir / ".env"
load_dotenv(dotenv_path=dotenv_path)
# Use default project from credentials if not in .env
_, project_id = google.auth.default()
os.environ.setdefault("GOOGLE_CLOUD_PROJECT", project_id)
os.environ.setdefault("GOOGLE_CLOUD_LOCATION", "global")
os.environ.setdefault("GOOGLE_GENAI_USE_VERTEXAI", "True")
root_agent = Agent(
name="weather_agent",
model="gemini-2.5-flash",
instruction="""
You are a helpful AI assistant designed to provide accurate and useful information.
""",
tools=[get_weather],
)
Penjelasan Kode ADK
Skrip ini berisi inisiasi agen tempat kita menginisialisasi hal-hal berikut:
- Menetapkan model yang akan digunakan menjadi
gemini-2.5-flash - Menyediakan alat
get_weatheruntuk mendukung fungsi agen sebagai agen cuaca
Menjalankan UI Web secara Lokal
Sekarang, kita dapat berinteraksi dengan agen dan memeriksa perilakunya secara lokal. ADK memungkinkan kita memiliki UI web pengembangan untuk berinteraksi dan memeriksa apa yang terjadi selama interaksi. Jalankan perintah berikut untuk memulai server UI pengembangan lokal
uv run adk web --port 8080
Perintah ini akan menghasilkan output seperti contoh berikut, yang berarti kita sudah dapat mengakses antarmuka web
INFO: Started server process [xxxx] INFO: Waiting for application startup. +-----------------------------------------------------------------------------+ | ADK Web Server started | | | | For local testing, access at http://localhost:8080. | +-----------------------------------------------------------------------------+ INFO: Application startup complete. INFO: Uvicorn running on http://0.0.0.0:8080 (Press CTRL+C to quit)
Sekarang, untuk memeriksanya, klik tombol Web Preview di area atas Cloud Shell Editor Anda, lalu pilih Preview on port 8080

Anda akan melihat halaman web berikut tempat Anda dapat memilih agen yang tersedia di tombol drop-down kiri atas ( dalam kasus ini, agennya adalah weather_agent) dan berinteraksi dengan bot. Anda akan melihat banyak informasi tentang detail log selama runtime agen di jendela kiri

Sekarang, coba berinteraksi dengannya. Di panel kiri, kita dapat memeriksa rekaman aktivitas untuk setiap input, sehingga kita dapat memahami durasi waktu yang diperlukan untuk setiap tindakan yang dilakukan oleh agen sebelum membentuk jawaban akhir.

Ini adalah salah satu fitur observasi yang telah dibangun ke dalam ADK, saat ini kami memeriksanya secara lokal. Selanjutnya, kita akan melihat cara mengintegrasikannya ke Cloud Tracing sehingga kita memiliki trace terpusat dari semua permintaan
7. 🚀 Men-deploy ke Cloud Run
Sekarang, mari kita deploy layanan agen ini ke Cloud Run. Untuk demo ini, layanan ini akan diekspos sebagai layanan publik yang dapat diakses oleh orang lain. Namun, perlu diingat bahwa ini bukan praktik terbaik karena tidak aman

Skenario deployment ini memungkinkan Anda menyesuaikan layanan backend agen. Kita akan menggunakan Dockerfile untuk men-deploy agen ke Cloud Run. Pada tahap ini, kita sudah memiliki semua file yang diperlukan ( Dockerfile dan server.py) untuk men-deploy aplikasi ke Cloud Run. Dengan memiliki 2 item ini, Anda dapat menyesuaikan deployment agen secara fleksibel ( misalnya, menambahkan rute backend kustom dan/atau menambahkan layanan sidecar tambahan untuk tujuan pemantauan). Kita akan membahasnya secara mendetail nanti.
Sekarang, mari kita deploy layanan terlebih dahulu, buka Terminal Cloud Shell dan pastikan project saat ini dikonfigurasi ke project aktif Anda, jalankan skrip penyiapan lagi, atau Anda juga dapat menggunakan perintah gcloud config set project [PROJECT_ID] untuk mengonfigurasi project aktif Anda
bash setup_trial_project.sh && source .env
Sekarang, kita perlu membuka kembali file .env, membukanya, dan Anda akan melihat bahwa kita perlu menghapus komentar variabel DB_CONNECTION_NAME dan mengisinya dengan nilai yang benar
# Google Cloud and Vertex AI configuration
GOOGLE_CLOUD_PROJECT=your-project-id
GOOGLE_CLOUD_LOCATION=global
GOOGLE_GENAI_USE_VERTEXAI=True
# Database connection for session service
DB_CONNECTION_NAME=your-db-connection-name
Untuk mendapatkan nilai DB_CONNECTION_NAME, buka dasbor Cloud SQL
Kemudian, klik instance yang telah Anda buat. Buka kotak penelusuran di bagian atas konsol cloud, lalu ketik "cloud sql". Kemudian, klik produk Cloud SQL

Setelah itu, Anda akan melihat instance yang dibuat sebelumnya, klik instance tersebut

Di dalam halaman instance, scroll ke bawah ke bagian "Connect to this instance" dan Anda dapat menyalin Connection Name untuk menggantikan nilai DB_CONNECTION_NAME.

Setelah itu, buka file .env dengan perintah berikut
cloudshell edit .env
dan ubah variabel DB_CONNECTION_NAME di file .env. File env Anda akan terlihat seperti contoh di bawah
# Google Cloud and Vertex AI configuration
GOOGLE_CLOUD_PROJECT=your-project-id
GOOGLE_CLOUD_LOCATION=global
GOOGLE_GENAI_USE_VERTEXAI=True
# Database connection for session service
DB_CONNECTION_NAME=your-project-id:your-location:your-instance-name
Setelah itu, jalankan skrip deployment
bash deploy_to_cloudrun.sh
Jika Anda diminta untuk mengonfirmasi pembuatan registry artefak untuk repositori Docker, cukup jawab Y.
Sambil menunggu proses deployment, mari kita lihat deploy_to_cloudrun.sh
#!/bin/bash
# Load environment variables from .env file
if [ -f .env ]; then
export $(cat .env | grep -v '^#' | xargs)
else
echo "Error: .env file not found"
exit 1
fi
# Validate required variables
required_vars=("GOOGLE_CLOUD_PROJECT" "DB_CONNECTION_NAME")
for var in "${required_vars[@]}"; do
if [ -z "${!var}" ]; then
echo "Error: $var is not set in .env file"
exit 1
fi
done
gcloud run deploy weather-agent \
--source . \
--port 8080 \
--project ${GOOGLE_CLOUD_PROJECT} \
--allow-unauthenticated \
--add-cloudsql-instances ${DB_CONNECTION_NAME} \
--update-env-vars SESSION_SERVICE_URI="postgresql+pg8000://postgres:ADK-deployment123@postgres/?unix_sock=/cloudsql/${DB_CONNECTION_NAME}/.s.PGSQL.5432",GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT} \
--region us-central1 \
--min 1 \
--memory 1G \
--concurrency 10
Skrip ini akan memuat variabel .env Anda, lalu menjalankan perintah deployment.
Jika Anda melihat lebih dekat, kita hanya memerlukan satu perintah gcloud run deploy untuk melakukan semua hal yang diperlukan jika Anda ingin men-deploy layanan: membangun image, mengirim ke registry, men-deploy layanan, menyetel kebijakan IAM, membuat revisi, dan bahkan merutekan traffic. Dalam contoh ini, kita sudah menyediakan Dockerfile, sehingga perintah ini akan menggunakannya untuk membangun aplikasi
Setelah deployment selesai, Anda akan mendapatkan link yang mirip dengan di bawah ini:
https://weather-agent-*******.us-central1.run.app
Setelah mendapatkan URL ini, Anda dapat menggunakan aplikasi dari jendela Samaran atau perangkat seluler dan mengakses UI Dev agen. Sambil menunggu deployment, mari kita periksa layanan mendetail yang baru saja kita deploy di bagian berikutnya
8. 💡 Dockerfile dan Skrip Server Backend
Agar agen dapat diakses sebagai layanan, kita akan menggabungkan agen di dalam aplikasi FastAPI yang akan dijalankan pada perintah Dockerfile. Berikut adalah konten Dockerfile
FROM python:3.12-slim
RUN pip install --no-cache-dir uv==0.7.13
WORKDIR /app
COPY . .
RUN uv sync --frozen
EXPOSE 8080
CMD ["uv", "run", "uvicorn", "server:app", "--host", "0.0.0.0", "--port", "8080"]
Kita dapat mengonfigurasi layanan yang diperlukan untuk mendukung agen di sini, seperti menyiapkan layanan Sesi, Memori, atau Artefak untuk tujuan produksi di sini. Berikut adalah kode server.py yang akan digunakan
import os
from dotenv import load_dotenv
from fastapi import FastAPI
from google.adk.cli.fast_api import get_fast_api_app
from pydantic import BaseModel
from typing import Literal
from google.cloud import logging as google_cloud_logging
# Load environment variables from .env file
load_dotenv()
logging_client = google_cloud_logging.Client()
logger = logging_client.logger(__name__)
AGENT_DIR = os.path.dirname(os.path.abspath(__file__))
# Get session service URI from environment variables
session_uri = os.getenv("SESSION_SERVICE_URI", None)
# Prepare arguments for get_fast_api_app
app_args = {"agents_dir": AGENT_DIR, "web": True, "trace_to_cloud": True}
# Only include session_service_uri if it's provided
if session_uri:
app_args["session_service_uri"] = session_uri
else:
logger.log_text(
"SESSION_SERVICE_URI not provided. Using in-memory session service instead. "
"All sessions will be lost when the server restarts.",
severity="WARNING",
)
# Create FastAPI app with appropriate arguments
app: FastAPI = get_fast_api_app(**app_args)
app.title = "weather-agent"
app.description = "API for interacting with the Agent weather-agent"
class Feedback(BaseModel):
"""Represents feedback for a conversation."""
score: int | float
text: str | None = ""
invocation_id: str
log_type: Literal["feedback"] = "feedback"
service_name: Literal["weather-agent"] = "weather-agent"
user_id: str = ""
# Example if you want to add your custom endpoint
@app.post("/feedback")
def collect_feedback(feedback: Feedback) -> dict[str, str]:
"""Collect and log feedback.
Args:
feedback: The feedback data to log
Returns:
Success message
"""
logger.log_struct(feedback.model_dump(), severity="INFO")
return {"status": "success"}
# Main execution
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8080)
Penjelasan Kode Server
Berikut adalah hal-hal yang ditentukan dalam skrip server.py:
- Konversi agen kita menjadi aplikasi FastAPI menggunakan metode
get_fast_api_app. Dengan cara ini, kita akan mewarisi definisi rute yang sama yang digunakan untuk UI pengembangan web. - Konfigurasi layanan Sesi, Memori, atau Artefak yang diperlukan dengan menambahkan argumen kata kunci ke metode
get_fast_api_app. Dalam tutorial ini, jika kita mengonfigurasi variabel lingkunganSESSION_SERVICE_URI, layanan sesi akan menggunakannya. Jika tidak, layanan sesi akan menggunakan sesi dalam memori - Kita dapat menambahkan rute kustom untuk mendukung logika bisnis backend lainnya. Dalam skrip, kita menambahkan contoh rute fungsi masukan
- Aktifkan cloud tracing di parameter arg
get_fast_api_app, untuk mengirimkan rekaman aktivitas ke Google Cloud Trace - Jalankan layanan FastAPI menggunakan uvicorn
Sekarang, jika deployment Anda sudah selesai, coba berinteraksi dengan agen dari UI Dev web dengan mengakses URL Cloud Run
9. 🚀 Memeriksa Penskalaan Otomatis Cloud Run dengan Pengujian Beban
Sekarang, kita akan memeriksa kemampuan penskalaan otomatis Cloud Run. Untuk skenario ini, mari deploy revisi baru sambil mengaktifkan konkurensi maksimum per instance. Di bagian sebelumnya, kita menetapkan konkurensi maksimum ke 10 ( flag --concurrency 10). Oleh karena itu, kita dapat memperkirakan bahwa Cloud Run akan mencoba menskalakan instance-nya saat kita melakukan uji beban yang melebihi jumlah ini.
Mari kita periksa file load_test.py. Ini akan menjadi skrip yang kita gunakan untuk melakukan pengujian beban menggunakan framework locust. Skrip ini akan melakukan hal berikut :
- user_id dan session_id yang diacak
- Buat session_id untuk user_id
- Hit endpoint "/run_sse" dengan user_id dan session_id yang dibuat
Kita perlu mengetahui URL layanan yang di-deploy, jika Anda melewatkannya. Kita dapat membuka konsol Cloud Run
Kemudian, temukan layanan weather-agent Anda, lalu klik

URL layanan akan ditampilkan tepat di samping informasi Region. Mis.

Untuk menyederhanakan semuanya, jalankan skrip berikut untuk mendapatkan URL layanan yang baru di-deploy dan menyimpannya dalam variabel lingkungan SERVICE_URL
export SERVICE_URL=$(gcloud run services describe weather-agent \
--platform managed \
--region us-central1 \
--format 'value(status.url)')
Kemudian, jalankan perintah berikut untuk melakukan uji beban pada aplikasi agen kita
uv run locust -f load_test.py \
-H $SERVICE_URL \
-u 60 \
-r 5 \
-t 120 \
--headless
Dengan menjalankan ini, Anda akan melihat metrik seperti ini ditampilkan. ( Dalam contoh ini, semua permintaan berhasil )
Type Name # reqs # fails | Avg Min Max Med | req/s failures/s
--------|------------------------------------|-------|-------------|-------|-------|-------|-------|--------|-----------
POST /run_sse end 813 0(0.00%) | 5817 2217 26421 5000 | 6.79 0.00
POST /run_sse message 813 0(0.00%) | 2678 1107 17195 2200 | 6.79 0.00
--------|------------------------------------|-------|-------------|-------|-------|-------|-------|--------|-----------
Aggregated 1626 0(0.00%) | 4247 1107 26421 3500 | 13.59 0.00
Kemudian, mari kita lihat apa yang terjadi di Cloud Run. Buka kembali layanan yang di-deploy, lalu lihat dasbornya. Hal ini akan menunjukkan cara Cloud Run menskalakan instance secara otomatis untuk menangani permintaan yang masuk. Karena kita membatasi konkurensi maksimum hingga 10 per instance, instance Cloud Run akan mencoba menyesuaikan jumlah penampung untuk memenuhi kondisi ini secara otomatis.

10. 🚀 Merilis Revisi Baru Secara Bertahap
Sekarang, mari kita lihat skenario berikut. Kita ingin memperbarui perintah agen. Buka weather_agent/agent.py dengan perintah berikut
cloudshell edit weather_agent/agent.py
dan ganti dengan kode berikut:
# weather_agent/agent.py
import os
from pathlib import Path
import google.auth
from dotenv import load_dotenv
from google.adk.agents import Agent
from weather_agent.tool import get_weather
# Load environment variables from .env file in root directory
root_dir = Path(__file__).parent.parent
dotenv_path = root_dir / ".env"
load_dotenv(dotenv_path=dotenv_path)
# Use default project from credentials if not in .env
_, project_id = google.auth.default()
os.environ.setdefault("GOOGLE_CLOUD_PROJECT", project_id)
os.environ.setdefault("GOOGLE_CLOUD_LOCATION", "global")
os.environ.setdefault("GOOGLE_GENAI_USE_VERTEXAI", "True")
root_agent = Agent(
name="weather_agent",
model="gemini-2.5-flash",
instruction="""
You are a helpful AI assistant designed to provide accurate and useful information.
You only answer inquiries about the weather. Refuse all other user query
""",
tools=[get_weather],
)
Kemudian, Anda ingin merilis revisi baru, tetapi tidak ingin semua traffic permintaan langsung menuju ke versi baru. Kita dapat melakukan rilis bertahap dengan Cloud Run. Pertama, kita perlu men-deploy revisi baru, tetapi dengan tanda –no-traffic. Simpan skrip agen sebelumnya dan jalankan perintah berikut
gcloud run deploy weather-agent \
--source . \
--port 8080 \
--project $GOOGLE_CLOUD_PROJECT \
--allow-unauthenticated \
--region us-central1 \
--no-traffic
Setelah selesai, Anda akan menerima log yang serupa dengan proses deployment sebelumnya dengan perbedaan jumlah traffic yang ditayangkan. Kampanye ini akan menampilkan 0 persen traffic yang ditayangkan.
Service [weather-agent] revision [weather-agent-xxxx-xxx] has been deployed and is serving 0 percent of traffic.
Selanjutnya, buka dasbor Cloud Run
Kemudian, temukan layanan weather-agent Anda, lalu klik

Buka tab Revisi dan Anda akan melihat daftar revisi yang di-deploy di sana

Anda akan melihat bahwa revisi baru yang di-deploy menyajikan 0%, dari sini Anda dapat mengklik tombol kebab (⋮) dan memilih Kelola Traffic

Di jendela yang baru muncul, Anda dapat mengedit persentase traffic yang masuk ke revisi tertentu.

Setelah menunggu beberapa saat, traffic akan diarahkan secara proporsional berdasarkan konfigurasi persentase. Dengan begitu, kita dapat dengan mudah mengembalikan ke revisi sebelumnya jika terjadi masalah dengan rilis baru
11. 🚀 Pelacakan ADK
Agen yang dibangun dengan ADK sudah mendukung pelacakan menggunakan penyematan telemetri terbuka di dalamnya. Kita memiliki Cloud Trace untuk merekam pelacakan tersebut dan memvisualisasikannya. Mari kita periksa server.py tentang cara mengaktifkannya di layanan yang sebelumnya kita deploy
# server.py
...
app_args = {"agents_dir": AGENT_DIR, "web": True, "trace_to_cloud": True}
...
app: FastAPI = get_fast_api_app(**app_args)
...
Di sini, kita meneruskan argumen trace_to_cloud ke True. Jika men-deploy dengan opsi lain, Anda dapat melihat dokumentasi ini untuk mengetahui detail selengkapnya tentang cara mengaktifkan tracing ke Cloud Trace dari berbagai opsi deployment
Coba akses UI dev web layanan Anda dan lakukan percakapan dengan agen. Setelah itu, buka halaman Trace Explorer
Di halaman trace explorer, Anda akan melihat bahwa trace percakapan kita dengan agen telah dikirimkan. Anda dapat melihat dari bagian Span name dan memfilter rentang khusus untuk agen kami ( bernama agent_run [weather_agent]) di sana

Jika rentang sudah difilter, Anda juga dapat memeriksa setiap rekaman aktivitas secara langsung. Bagian ini akan menampilkan durasi mendetail pada setiap tindakan yang dilakukan oleh agen. Misalnya, lihat gambar di bawah

Di setiap bagian, Anda dapat memeriksa detail dalam atribut seperti yang ditunjukkan di bawah

Sekarang kita memiliki kemampuan observasi dan informasi yang baik tentang setiap interaksi agen kita dengan pengguna untuk membantu men-debug masalah. Jangan ragu untuk mencoba berbagai alat atau alur kerja.
12. 🎯 Tantangan
Coba alur kerja multi-agen atau agen untuk melihat performanya saat beban tinggi dan seperti apa rekaman aktivitasnya
13. 🧹 Membersihkan
Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam codelab ini, ikuti langkah-langkah berikut:
- Di konsol Google Cloud, buka halaman Manage resources.
- Dalam daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
- Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
- Atau, Anda dapat membuka Cloud Run di konsol, memilih layanan yang baru saja Anda deploy, lalu menghapusnya.