Membangun dan men-deploy agen ADK di Cloud Run

1. Pengantar

Lab ini berfokus pada penerapan dan deployment layanan agen klien. Anda akan menggunakan Agent Development Kit (ADK) untuk membangun agen AI yang menggunakan alat.

Di lab ini, kita akan membangun agen kebun binatang yang menggunakan Wikipedia untuk menjawab pertanyaan tentang hewan.

Dari kiri ke kanan, seekor singa, dua penguin, seseorang yang mengenakan topi safari, seekor gajah, dan seekor beruang berdiri dengan membelakangi penonton, sambil melihat ke atas ke arah roket merah dan putih besar yang meluncur ke langit biru dengan awan putih. Dua roket yang lebih kecil juga terlihat meluncur di kejauhan. Adegan ini berlatar belakang kandang kebun binatang dengan pagar kayu dan tebing berbatu.

Terakhir, kita akan men-deploy agen pemandu wisata ke Cloud Run Google, bukan hanya menjalankannya secara lokal.

Prasyarat

  • Project Google Cloud yang mengaktifkan penagihan.

Yang akan Anda pelajari

  • Cara menyusun project Python untuk deployment ADK.
  • Cara menerapkan agen yang menggunakan alat dengan google-adk.
  • Cara men-deploy aplikasi Python sebagai container serverless ke Cloud Run.
  • Cara mengonfigurasi autentikasi service-to-service yang aman menggunakan peran IAM.
  • Cara menghapus resource Cloud untuk menghindari biaya di masa mendatang.

Yang Anda butuhkan

  • Akun Google Cloud dan Project Google Cloud
  • Browser web seperti Chrome

2. Mengapa harus men-deploy ke Cloud Run?

Cloud Run adalah pilihan yang tepat untuk menghosting agen ADK karena merupakan platform serverless, yang berarti Anda dapat berfokus pada kode, bukan pada pengelolaan infrastruktur yang mendasarinya. Kami menangani pekerjaan operasional untuk Anda.

Anggap saja seperti toko pop-up: toko ini hanya buka dan menggunakan resource saat pelanggan (permintaan) datang. Jika tidak ada pelanggan, toko akan ditutup sepenuhnya, dan Anda tidak perlu membayar toko yang kosong.

Fitur Utama

Menjalankan Container di Mana Saja:

  • Anda membawa container (image Docker) yang berisi aplikasi Anda.
  • Cloud Run menjalankannya di infrastruktur Google.
  • Tidak ada patching OS, penyiapan VM, atau masalah penskalaan.

Penskalaan Otomatis:

  • Jika 0 orang menggunakan aplikasi Anda → 0 instance berjalan (turun ke nol instance yang hemat biaya).
  • Jika 1.000 permintaan masuk → maka akan diluncurkan salinan sebanyak yang diperlukan.

Stateless secara Default:

  • Setiap permintaan dapat ditujukan ke instance yang berbeda.
  • Jika Anda perlu menyimpan status, gunakan layanan eksternal seperti Cloud SQL, Firestore, atau Memorystore.

Mendukung Bahasa atau Framework Apa Pun:

  • Selama berjalan di container Linux, Cloud Run bisa menangani Python, Go, Node.js, Java, atau .Net.

Bayar Sesuai Penggunaan:

3. Penyiapan project

Akun Google

Jika belum memiliki Akun Google pribadi, Anda harus membuat Akun Google.

Gunakan akun pribadi, bukan akun kantor atau sekolah.

Login ke Konsol Google Cloud

Login ke Konsol Google Cloud menggunakan Akun Google pribadi.

Aktifkan Penagihan

Menyiapkan akun penagihan pribadi

Jika menyiapkan penagihan menggunakan kredit Google Cloud, Anda dapat melewati langkah ini.

Untuk menyiapkan akun penagihan pribadi, buka di sini untuk mengaktifkan penagihan di Cloud Console.

Beberapa Catatan:

  • Menyelesaikan lab ini akan dikenai biaya kurang dari $1 USD untuk resource Cloud.
  • Anda dapat mengikuti langkah-langkah di akhir lab ini untuk menghapus resource agar tidak dikenai biaya lebih lanjut.
  • Pengguna baru memenuhi syarat untuk mengikuti Uji Coba Gratis senilai$300 USD.

Membuat project (opsional)

Jika Anda tidak memiliki project saat ini yang ingin digunakan untuk lab ini, buat project baru di sini.

4. Buka Cloud Shell Editor

  1. Klik link ini untuk langsung membuka Cloud Shell Editor
  2. Jika diminta untuk memberikan otorisasi kapan saja hari ini, klik Authorize untuk melanjutkan.Klik untuk memberikan otorisasi pada Cloud Shell
  3. Jika terminal tidak muncul di bagian bawah layar, buka terminal:
    • Klik Lihat
    • Klik TerminalMembuka terminal baru di Cloud Shell Editor

5. Mengaktifkan API

Untuk menggunakan Cloud Run, Artifact Registry, Cloud Build, Vertex AI, dan Compute Engine, Anda harus mengaktifkan API masing-masing di project Google Cloud Anda.

  • Di terminal, aktifkan API:
    gcloud services enable \
      run.googleapis.com \
      artifactregistry.googleapis.com \
      cloudbuild.googleapis.com \
      aiplatform.googleapis.com \
      compute.googleapis.com
    
    Setelah selesai dijalankan, Anda akan melihat output seperti berikut:
    Operation "operations/acat.p2-[GUID]" finished successfully.
    

Memperkenalkan API

  • Cloud Run Admin API (run.googleapis.com) memungkinkan Anda menjalankan layanan frontend dan backend, tugas batch, atau situs di lingkungan yang terkelola sepenuhnya. Layanan ini menangani infrastruktur untuk men-deploy dan menskalakan aplikasi dalam container Anda.
  • Artifact Registry API (artifactregistry.googleapis.com) menyediakan repositori pribadi yang aman untuk menyimpan image container Anda. Artifact Registry adalah evolusi Container Registry dan terintegrasi secara lancar dengan Cloud Run dan Cloud Build.
  • Cloud Build API (cloudbuild.googleapis.com) adalah platform CI/CD serverless yang menjalankan build Anda di infrastruktur Google Cloud. Layanan ini digunakan untuk membangun image container Anda di cloud dari Dockerfile Anda.
  • Vertex AI API (aiplatform.googleapis.com) memungkinkan aplikasi yang di-deploy berkomunikasi dengan model Gemini untuk melakukan tugas AI inti. API ini menyediakan API terpadu untuk semua layanan AI Google Cloud.
  • Compute Engine API (compute.googleapis.com) menyediakan virtual machine yang aman dan dapat disesuaikan yang berjalan di infrastruktur Google. Meskipun dikelola, Compute Engine API sering kali diperlukan sebagai dependensi dasar untuk berbagai resource komputasi dan jaringan.

6. Menyiapkan lingkungan pengembangan

Membuat direktori

  1. Di terminal, buat direktori project dan subdirektori yang diperlukan:
    cd && mkdir zoo_guide_agent && cd zoo_guide_agent
    
  2. Di terminal, jalankan perintah berikut untuk membuka direktori zoo_guide_agent di penjelajah Cloud Shell Editor:
    cloudshell open-workspace ~/zoo_guide_agent
    
  3. Panel explorer di sebelah kiri akan dimuat ulang. Sekarang Anda akan melihat direktori yang Anda buat.
    Screenshot direktori baru di panel samping penjelajah

Menetapkan project Anda

  1. Di terminal, tetapkan project Anda dengan perintah ini:
    gcloud config set project [PROJECT_ID]
    
    Contoh: gcloud config set project lab-project-id-example Menetapkan project ID di terminal Cloud Shell Editor
  2. Anda akan melihat pesan ini:
    Updated property [core/project].
    

Persyaratan penginstalan

  1. Jalankan perintah berikut di terminal untuk membuat file requirements.txt.
    cloudshell edit requirements.txt
    
  2. Tambahkan kode berikut ke file requirements.txt yang baru dibuat
    google-adk==1.14.0
    langchain-community==0.3.27
    wikipedia==1.4.0
    
  3. Di terminal, buat dan aktifkan lingkungan virtual menggunakan uv. Tindakan ini memastikan dependensi project Anda tidak bertentangan dengan Python sistem.
    uv venv
    source .venv/bin/activate
    
  4. Instal paket yang diperlukan ke lingkungan virtual Anda di terminal.
    uv pip install -r requirements.txt
    

Menyiapkan variabel lingkungan

  • Gunakan perintah berikut di terminal untuk membuat file .env.
    # 1. Set the variables in your terminal first
    PROJECT_ID=$(gcloud config get-value project)
    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    SA_NAME=lab2-cr-service
    
    # 2. Create the .env file using those variables
    cat <<EOF > .env
    PROJECT_ID=$PROJECT_ID
    PROJECT_NUMBER=$PROJECT_NUMBER
    SA_NAME=$SA_NAME
    SERVICE_ACCOUNT=${SA_NAME}@${PROJECT_ID}.iam.gserviceaccount.com
    MODEL="gemini-2.5-flash"
    EOF
    

7. Membuat Alur Kerja Agen

Buat file __init__.py

  1. Buat file init.py dengan menjalankan perintah berikut di terminal:
    cloudshell edit __init__.py
    
    File ini memberi tahu Python bahwa direktori zoo_guide_agent adalah paket.
  2. Tambahkan kode berikut ke file __init__.py baru:
    from . import agent
    

Buat file agent.py

  1. Buat file agent.py utama dengan menempelkan perintah berikut ke terminal.
    cloudshell edit agent.py
    
  2. Impor dan Penyiapan Awal: Tambahkan kode berikut ke file agent.py Anda yang saat ini kosong:
    import os
    import logging
    import google.cloud.logging
    from dotenv import load_dotenv
    
    from google.adk import Agent
    from google.adk.agents import SequentialAgent
    from google.adk.tools.tool_context import ToolContext
    from google.adk.tools.langchain_tool import LangchainTool
    
    from langchain_community.tools import WikipediaQueryRun
    from langchain_community.utilities import WikipediaAPIWrapper
    
    import google.auth
    import google.auth.transport.requests
    import google.oauth2.id_token
    
    # --- Setup Logging and Environment ---
    
    cloud_logging_client = google.cloud.logging.Client()
    cloud_logging_client.setup_logging()
    
    load_dotenv()
    
    model_name = os.getenv("MODEL")
    
    Blok pertama file agent.py ini membawa semua library yang diperlukan dari ADK dan Google Cloud. File ini juga menyiapkan logging dan memuat variabel lingkungan dari file .env Anda, yang sangat penting untuk mengakses URL model dan server Anda.
  3. Tentukan alat: Kualitas agen bergantung pada alat yang dapat digunakannya. Tambahkan kode berikut ke bagian bawah agent.py untuk menentukan alat:
    # Greet user and save their prompt
    
    def add_prompt_to_state(
        tool_context: ToolContext, prompt: str
    ) -> dict[str, str]:
        """Saves the user's initial prompt to the state."""
        tool_context.state["PROMPT"] = prompt
        logging.info(f"[State updated] Added to PROMPT: {prompt}")
        return {"status": "success"}
    
    # Configuring the Wikipedia Tool
    wikipedia_tool = LangchainTool(
        tool=WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper())
    )
    
    Penjelasan Alat
    • add_prompt_to_state 📝: Alat ini mengingat pertanyaan pengunjung kebun binatang. Saat pengunjung bertanya, "Di mana singanya?", alat ini menyimpan pertanyaan spesifik tersebut ke memori agen sehingga agen lain dalam alur kerja tahu apa yang harus diteliti.
      Cara: Fungsi ini adalah fungsi Python yang menulis perintah pengunjung ke dalam kamus tool_context.state bersama. Konteks alat ini merepresentasikan memori jangka pendek agen untuk satu percakapan. Data yang disimpan ke status oleh satu agen dapat dibaca oleh agen berikutnya dalam alur kerja.
    • LangchainTool 🌍: Ini memberikan pengetahuan umum tentang dunia kepada agen pemandu wisata. Saat pengunjung mengajukan pertanyaan yang tidak ada di database kebun binatang, seperti "Apa makanan singa di alam liar?", alat ini memungkinkan agen mencari jawabannya di Wikipedia.
      Cara: Bertindak sebagai adaptor, sehingga agen kita dapat menggunakan alat WikipediaQueryRun bawaan dari library LangChain.
      Robot yang terlihat ramah memegang buku catatan dengan gambar hewan dan balon pikiran singa, sedang berbicara dengan seorang pria dan anak laki-laki dengan ransel. Jerapah dan elemen kebun binatang lainnya berada di latar belakang, dengan pohon palem yang membingkai pintu masuk.
  4. Tentukan agen Specialist: Tambahkan kode berikut ke bagian bawah agent.py untuk menentukan agen comprehensive_researcher dan response_formatter:
    # 1. Researcher Agent
    comprehensive_researcher = Agent(
        name="comprehensive_researcher",
        model=model_name,
        description="The primary researcher that can access both internal zoo data and external knowledge from Wikipedia.",
        instruction="""
        You are a helpful research assistant. Your goal is to fully answer the user's PROMPT.
        You have access to two tools:
        1. A tool for getting specific data about animals AT OUR ZOO (names, ages, locations).
        2. A tool for searching Wikipedia for general knowledge (facts, lifespan, diet, habitat).
    
        First, analyze the user's PROMPT.
        - If the prompt can be answered by only one tool, use that tool.
        - If the prompt is complex and requires information from both the zoo's database AND Wikipedia,
          you MUST use both tools to gather all necessary information.
        - Synthesize the results from the tool(s) you use into preliminary data outputs.
    
        PROMPT:
        { PROMPT }
        """,
        tools=[
            wikipedia_tool
        ],
        output_key="research_data" # A key to store the combined findings
    )
    
    # 2. Response Formatter Agent
    response_formatter = Agent(
        name="response_formatter",
        model=model_name,
        description="Synthesizes all information into a friendly, readable response.",
        instruction="""
        You are the friendly voice of the Zoo Tour Guide. Your task is to take the
        RESEARCH_DATA and present it to the user in a complete and helpful answer.
    
        - First, present the specific information from the zoo (like names, ages, and where to find them).
        - Then, add the interesting general facts from the research.
        - If some information is missing, just present the information you have.
        - Be conversational and engaging.
    
        RESEARCH_DATA:
        { research_data }
        """
    )
    
    • Agen comprehensive_researcher adalah "otak" operasi kita. Agen ini mengambil perintah pengguna dari State yang dibagikan, memeriksa apakah perintah tersebut adalah Alat Wikipedia, dan memutuskan mana yang akan digunakan untuk menemukan jawabannya.
    • Peran agen response_formatter adalah presentasi. Agen ini mengambil data mentah yang dikumpulkan oleh agen Peneliti (diteruskan melalui Status) dan menggunakan kemampuan bahasa LLM untuk mengubahnya menjadi respons percakapan yang ramah.
      Robot dengan mata biru bercahaya duduk di depan monitor melengkung besar yang menampilkan MCP ZOO SERVER di sebelah kiri dan halaman Wikipedia ZOO di sebelah kanan. Ikon hewan terlihat di antarmuka server. Meja memiliki beberapa touchpad biru bercahaya. Latar belakang menampilkan cakrawala kota melalui jendela besar.
  5. Tentukan agen Alur kerja: Tambahkan blok kode ini ke bagian bawah agent.py untuk menentukan agen berurutan tour_guide_workflow:
    tour_guide_workflow = SequentialAgent(
        name="tour_guide_workflow",
        description="The main workflow for handling a user's request about an animal.",
        sub_agents=[
            comprehensive_researcher, # Step 1: Gather all data
            response_formatter,       # Step 2: Format the final response
        ]
    )
    
    Agen alur kerja bertindak sebagai pengelola 'back office' untuk tur ke kebun binatang. Alat ini menerima permintaan riset dan memastikan kedua agen yang kita definisikan di atas melakukan tugasnya dalam urutan yang benar: pertama riset, lalu pemformatan. Hal ini menciptakan proses yang dapat diprediksi dan andal untuk menjawab pertanyaan pengunjung.
    Cara: Ini adalah SequentialAgent, jenis agen khusus yang tidak berpikir sendiri. Satu-satunya tugasnya adalah menjalankan daftar sub_agents (peneliti dan pemformat) dalam urutan tetap, dengan otomatis meneruskan memori bersama dari satu ke yang berikutnya.
  6. Menyusun alur kerja utama: Tambahkan blok kode terakhir ini ke bagian bawah agent.py untuk menentukan root_agent:
    root_agent = Agent(
        name="greeter",
        model=model_name,
        description="The main entry point for the Zoo Tour Guide.",
        instruction="""
        - Let the user know you will help them learn about the animals we have in the zoo.
        - When the user responds, use the 'add_prompt_to_state' tool to save their response.
        After using the tool, transfer control to the 'tour_guide_workflow' agent.
        """,
        tools=[add_prompt_to_state],
        sub_agents=[tour_guide_workflow]
    )
    
    Framework ADK menggunakan root_agent sebagai titik awal untuk semua percakapan baru. Peran utamanya adalah mengatur keseluruhan proses. Agen ini bertindak sebagai pengontrol awal, yang mengatur giliran pertama percakapan.
    Tiga robot digambarkan: Greeter-Bot di sebelah kiri menulis di notepad dengan balon pikiran singa, Researcher-Bot di tengah duduk di meja dengan komputer yang menampilkan data dan panah kueri yang mengarah ke sana, dan Presenter-Bot di sebelah kanan tersenyum sambil memegang diagram berlabel Data yang Dianalisis, dengan panah yang mengarah ke sana dari Researcher-Bot. Jerapah dan gajah terlihat di latar belakang, dan pohon palem membingkai pemandangan.

File agent.py lengkap

File agent.py Anda kini telah selesai. Dengan membangunnya seperti ini, Anda dapat melihat bagaimana setiap komponen, yakni alat, agen pekerja, dan agen pengelola, memiliki peran khusus dalam menciptakan sistem akhir yang cerdas.

File lengkap akan terlihat seperti ini:

import os
import logging
import google.cloud.logging
from dotenv import load_dotenv

from google.adk import Agent
from google.adk.agents import SequentialAgent
from google.adk.tools.tool_context import ToolContext
from google.adk.tools.langchain_tool import LangchainTool

from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper

import google.auth
import google.auth.transport.requests
import google.oauth2.id_token

# --- Setup Logging and Environment ---

cloud_logging_client = google.cloud.logging.Client()
cloud_logging_client.setup_logging()

load_dotenv()

model_name = os.getenv("MODEL")

# Greet user and save their prompt

def add_prompt_to_state(
    tool_context: ToolContext, prompt: str
) -> dict[str, str]:
    """Saves the user's initial prompt to the state."""
    tool_context.state["PROMPT"] = prompt
    logging.info(f"[State updated] Added to PROMPT: {prompt}")
    return {"status": "success"}

# Configuring the Wikipedia Tool
wikipedia_tool = LangchainTool(
    tool=WikipediaQueryRun(api_wrapper=WikipediaAPIWrapper())
)

# 1. Researcher Agent
comprehensive_researcher = Agent(
    name="comprehensive_researcher",
    model=model_name,
    description="The primary researcher that can access both internal zoo data and external knowledge from Wikipedia.",
    instruction="""
    You are a helpful research assistant. Your goal is to fully answer the user's PROMPT.
    You have access to two tools:
    1. A tool for getting specific data about animals AT OUR ZOO (names, ages, locations).
    2. A tool for searching Wikipedia for general knowledge (facts, lifespan, diet, habitat).

    First, analyze the user's PROMPT.
    - If the prompt can be answered by only one tool, use that tool.
    - If the prompt is complex and requires information from both the zoo's database AND Wikipedia,
        you MUST use both tools to gather all necessary information.
    - Synthesize the results from the tool(s) you use into preliminary data outputs.

    PROMPT:
    { PROMPT }
    """,
    tools=[
        wikipedia_tool
    ],
    output_key="research_data" # A key to store the combined findings
)

# 2. Response Formatter Agent
response_formatter = Agent(
    name="response_formatter",
    model=model_name,
    description="Synthesizes all information into a friendly, readable response.",
    instruction="""
    You are the friendly voice of the Zoo Tour Guide. Your task is to take the
    RESEARCH_DATA and present it to the user in a complete and helpful answer.

    - First, present the specific information from the zoo (like names, ages, and where to find them).
    - Then, add the interesting general facts from the research.
    - If some information is missing, just present the information you have.
    - Be conversational and engaging.

    RESEARCH_DATA:
    { research_data }
    """
)

tour_guide_workflow = SequentialAgent(
    name="tour_guide_workflow",
    description="The main workflow for handling a user's request about an animal.",
    sub_agents=[
        comprehensive_researcher, # Step 1: Gather all data
        response_formatter,       # Step 2: Format the final response
    ]
)

root_agent = Agent(
    name="greeter",
    model=model_name,
    description="The main entry point for the Zoo Tour Guide.",
    instruction="""
    - Let the user know you will help them learn about the animals we have in the zoo.
    - When the user responds, use the 'add_prompt_to_state' tool to save their response.
    After using the tool, transfer control to the 'tour_guide_workflow' agent.
    """,
    tools=[add_prompt_to_state],
    sub_agents=[tour_guide_workflow]
)

Selanjutnya adalah deployment.

8. Menyiapkan aplikasi untuk deployment

Memeriksa struktur akhir

Sebelum men-deploy, pastikan direktori project Anda berisi file yang benar.

  • Pastikan folder zoo_guide_agent Anda terlihat seperti ini:
    zoo_guide_agent/
    ├── .env
    ├── __init__.py
    ├── agent.py
    └── requirements.txt
    

Menyiapkan izin IAM

Setelah kode lokal Anda siap, langkah berikutnya adalah menyiapkan identitas yang akan digunakan agen Anda di cloud.

  1. Di terminal, muat variabel ke sesi shell Anda.
    source .env
    
  2. Buat akun layanan khusus untuk layanan Cloud Run Anda agar memiliki izinnya sendiri yang spesifik. Tempelkan kode berikut ke terminal:
    gcloud iam service-accounts create ${SA_NAME} \
        --display-name="Service Account for lab 2 "
    
    Dengan membuat identitas khusus untuk aplikasi tertentu ini, Anda memastikan bahwa agen hanya memiliki izin yang tepat yang diperlukan, bukan menggunakan akun default dengan akses yang terlalu luas.
  3. Berikan peran Vertex AI User ke akun layanan, yang memberinya izin untuk memanggil model Google.
    # Grant the "Vertex AI User" role to your service account
    gcloud projects add-iam-policy-binding $PROJECT_ID \
      --member="serviceAccount:$SERVICE_ACCOUNT" \
      --role="roles/aiplatform.user"
    

9. Men-deploy agen menggunakan ADK CLI

Setelah kode lokal dan project Google Cloud Anda sudah siap semuanya, saatnya men-deploy agen. Anda akan menggunakan perintah adk deploy cloud_run, alat praktis yang mengotomatiskan seluruh alur kerja deployment. Satu perintah ini akan mengemas kode Anda, membangun image container, mengirimkannya ke Artifact Registry, dan meluncurkan layanan di Cloud Run, sehingga dapat diakses di web.

  1. Jalankan perintah berikut di terminal untuk men-deploy agen Anda.
    # Run the deployment command
    uvx --from google-adk \
    adk deploy cloud_run \
      --project=$PROJECT_ID \
      --region=europe-west1 \
      --service_name=zoo-tour-guide \
      --with_ui \
      . \
      -- \
      --labels=dev-tutorial=codelab-adk \
      --service-account=$SERVICE_ACCOUNT
    
    Perintah uvx memungkinkan Anda menjalankan alat command line yang dipublikasikan sebagai paket Python tanpa memerlukan penginstalan global alat tersebut.
  2. Jika Anda diminta melakukan hal berikut:
    Deploying from source requires an Artifact Registry Docker repository to store built containers. A repository named [cloud-run-source-deploy] in region 
    [europe-west1] will be created.
    
    Do you want to continue (Y/n)?
    
    Jika ya, ketik Y, lalu tekan ENTER.
  3. Jika Anda diminta melakukan hal berikut:
    Allow unauthenticated invocations to [your-service-name] (y/N)?.
    
    Ketik y, lalu tekan ENTER. Hal ini memungkinkan pemanggilan yang tidak diautentikasi untuk lab ini agar pengujian menjadi mudah. Setelah berhasil dieksekusi, perintah akan memberikan URL layanan Cloud Run yang di-deploy. (Tampilannya akan terlihat seperti https://zoo-tour-guide-123456789.europe-west1.run.app).
  4. Salin URL layanan Cloud Run yang di-deploy untuk tugas berikutnya.

10. Menguji agen yang di-deploy

Setelah agen Anda aktif di Cloud Run, Anda akan melakukan pengujian untuk mengonfirmasi bahwa deployment berhasil dan agen berfungsi seperti yang diharapkan. Anda akan menggunakan URL Layanan publik (seperti https://zoo-tour-guide-123456789.europe-west1.run.app/) untuk mengakses antarmuka web ADK dan berinteraksi dengan agen.

  1. Buka URL Layanan Cloud Run publik di browser web Anda. Karena Anda menggunakan --with_ui flag, Anda akan melihat UI developer ADK.
  2. Aktifkan Token Streaming di kanan atas.
    Sekarang Anda dapat berinteraksi dengan agen Kebun Binatang.
  3. Ketik hello, lalu tekan enter untuk memulai percakapan baru.
  4. Amati hasilnya. Agen harus merespons dengan cepat dengan sapaannya, yang akan terlihat seperti ini:
    "Hello! I'm your Zoo Tour Guide. I can help you learn about the amazing animals we have here. What would you like to know or explore today?"
    
  5. Ajukan pertanyaan kepada agen seperti:
    Where can I find the polar bears in the zoo and what is their diet?
    
    Screenshot agen ADK yang melakukan serangkaian tindakan: add_prompt_to_state, transfer_to_agent, wikipedia, dan get_animals_by_species. Respons pertama mengatakan, &#39;Saya tidak dapat memberi tahu Anda tempat beruang kutub di kebun binatang ini, tetapi saya dapat memberi tahu Anda tentang pola makannya.&#39; Respons kedua menyatakan, &#39;Beruang kutub berada di The Arctic Exhibit di Polar Path. Saya tidak dapat mengambil informasi tentang pola makan mereka dengan alat yang tersedia.&#39; Respons ketiga yang paling komprehensif mengatakan, &#39;Dengan senang hati kami akan menceritakan beruang kutub kami kepada Anda. Anda dapat menemukan beruang kutub kami di The Arctic Exhibit di Polar Path. Di sini ada tiga beruang kutub: Snowflake, yang berusia 7 tahun. Blizzard, yang berusia 5 tahun. Iceberg, yang berusia 9 tahun. Untuk makanan, beruang kutub sebagian besar adalah karnivora. Mereka berspesialisasi dalam memangsa laut, terutama laut bercincin. Mereka juga memakan walrus, paus beluga, dan beberapa hewan darat.&#39;

Penjelasan Alur Agen

Sistem Anda beroperasi sebagai tim multi-agen yang cerdas. Prosesnya dikelola dengan urutan yang jelas untuk memastikan alur yang lancar dan efisien mulai dari pertanyaan pengguna hingga jawaban akhir yang mendetail.

1. Penyambut Kebun Binatang (Meja Penerima Tamu)

Seluruh proses dimulai dengan agen penyambut.

  • Tugasnya: Memulai percakapan. Instruksinya adalah menyapa pengguna dan menanyakan hewan apa yang ingin mereka pelajari.
  • Alatnya: Saat pengguna membalas, Greeter menggunakan alat add_prompt_to_state untuk menangkap kata-kata persisnya (misalnya, "tell me about the lions") dan menyimpannya di memori sistem.
  • Pengalihan: Setelah menyimpan perintah, kontrol langsung dialihkan ke sub-agennya, tour_guide_workflow.

2. Peneliti Komprehensif (Peneliti Super)

Ini adalah langkah pertama dalam alur kerja utama dan "otak" dari operasi. Alih-alih tim besar, kini Anda memiliki satu agen yang sangat terampil dan dapat mengakses semua informasi yang tersedia.

  • Tugasnya: Menganalisis pertanyaan pengguna dan membentuk rencana yang cerdas. Agen menggunakan kemampuan penggunaan alat model bahasa untuk memutuskan apakah ia memerlukan:
    • Pengetahuan umum dari web (melalui Wikipedia API).
    • Atau keduanya jika menangani pertanyaan kompleks.

3. Pemformat Respons (Presenter)

Setelah Comprehensive Researcher mengumpulkan semua fakta, agen ini adalah agen terakhir yang dijalankan.

  • Tugasnya: Bertindak sebagai suara ramah Pemandu Tur Kebun Binatang. Data mentah (yang bisa berasal dari satu atau kedua sumber) akan diambil dan disempurnakan.
  • Tindakannya: Agen menyintesis semua informasi menjadi satu jawaban yang kohesif dan menarik. Sesuai dengan instruksinya, pertama-tama agen akan menyajikan informasi kebun binatang yang spesifik, lalu menambahkan fakta umum yang menarik.
  • Hasil Akhir: Teks yang dihasilkan oleh agen ini adalah jawaban lengkap dan mendetail yang dilihat pengguna di jendela chat.

Jika Anda tertarik untuk mempelajari lebih lanjut cara membuat Agen, lihat referensi berikut:

  1. Dokumentasi ADK
  2. Membangun Alat Kustom untuk Agen ADK

11. Membersihkan lingkungan

Agar tidak menimbulkan biaya pada akun Google Cloud Anda untuk resource yang digunakan dalam tutorial ini, hapus project yang berisi resource tersebut, atau simpan project dan hapus setiap resource.

Hapus layanan dan image Cloud Run

Jika ingin mempertahankan project Google Cloud, tetapi menghapus resource tertentu yang dibuat di lab ini, Anda harus menghapus layanan yang sedang berjalan dan image container yang disimpan di registry.

  • Jalankan perintah berikut di terminal:
    gcloud run services delete zoo-tour-guide --region=europe-west1 --quiet
    gcloud artifacts repositories delete cloud-run-source-deploy --location=europe-west1 --quiet
    

Menghapus project (Opsional)

Jika Anda membuat project baru khusus untuk lab ini dan tidak berencana menggunakannya lagi, cara termudah untuk membersihkannya adalah dengan menghapus seluruh project. Hal ini memastikan semua resource (termasuk Akun Layanan dan artefak build tersembunyi) dihapus sepenuhnya.

  • Di terminal, jalankan perintah berikut (ganti [YOUR_PROJECT_ID] dengan project ID Anda yang sebenarnya)
    gcloud projects delete $PROJECT_ID
    

12. Selamat

Anda telah berhasil membangun dan men-deploy aplikasi AI multi-agen ke Google Cloud.

Rekap

Dalam lab ini, Anda beralih dari direktori kosong ke layanan AI yang aktif dan dapat diakses publik. Berikut tampilan yang telah Anda buat:

  • Anda membuat tim khusus: Alih-alih menggunakan satu AI generik, Anda membuat "Peneliti" untuk menemukan fakta dan "Pemformat" untuk menyempurnakan jawaban.
  • Anda memberi mereka alat: Anda menghubungkan agen Anda ke dunia luar menggunakan Wikipedia API.
  • Anda telah mengirimkannya: Anda telah mengambil kode Python lokal dan men-deploy-nya sebagai container tanpa server di Cloud Run, serta mengamankannya dengan Akun Layanan khusus.

Yang telah kita bahas

  • Cara menyusun project Python untuk deployment dengan ADK.
  • Cara menerapkan alur kerja multi-agen menggunakan [SequentialAgent](https://google.github.io/adk-docs/agents/workflow-agents/sequential-agents/).
  • Cara mengintegrasikan alat eksternal seperti Wikipedia API.
  • Cara men-deploy agen ke Cloud Run menggunakan perintah adk deploy.

13. Survei

Output:

Bagaimana Anda akan menggunakan tutorial ini?

Hanya membacanya Membaca dan menyelesaikan latihannya