1. Yang akan Anda pelajari
- Cara menginstal dan mendaftarkan kemampuan untuk Antigravity CLI guna mengaktifkan kemampuan coding dalam framework tertentu (ADK).
- Cara menggunakan Antigravity CLI untuk membuat konfigurasi agen ADK yang lengkap.
- Cara meningkatkan kepribadian agen dengan meningkatkan petunjuknya.
- Cara menambahkan "grounding" ke agen Anda dengan memberinya
google_searchuntuk menjawab pertanyaan tentang peristiwa terbaru.
Aplikasi Pendamping AI
Dalam Codelab ini, Anda akan membuat pendamping AI visual dan interaktif. Ini lebih dari sekadar chatbot standar yang menerima teks dan menampilkan teks. Bayangkan karakter yang ada di halaman web. Anda mengetik pesan, dan bukan hanya melihat teks kembali, karakter tersebut melihat Anda dan merespons dengan suara keras, dengan mulutnya bergerak selaras dengan kata-katanya.
Anda akan memulai dengan aplikasi web siap pakai—"boneka" digital yang memiliki wajah tetapi tidak memiliki pikiran sendiri. Boneka ini hanya dapat mengulangi apa yang Anda ketik. Misi Anda adalah membangun otak dan kepribadiannya dari awal.
Selama workshop ini, Anda akan secara progresif menambahkan lapisan kecerdasan dan penyesuaian, mengubah boneka sederhana ini menjadi pendamping yang unik dan mumpuni. Anda akan:
- Memberinya kecerdasan inti menggunakan ADK(Python) untuk memahami dan membuat bahasa.
- Membuat kepribadiannya yang unik dengan menulis petunjuk inti yang menentukan karakternya.
- Memberinya kekuatan super dengan memberinya alat untuk mengakses informasi real-time dari internet.
- Mendesain tampilan kustomnya menggunakan AI untuk membuat avatar yang unik.
Pada akhirnya, Anda akan memiliki pendamping AI yang berfungsi penuh dan dipersonalisasi, yang dibuat oleh Anda. 
Arsitektur
Aplikasi kami mengikuti pola yang sederhana tetapi efektif. Kami memiliki backend Python yang menyediakan API. Backend ini akan berisi agen ADK kami, yang bertindak sebagai "otak". Setiap antarmuka pengguna (seperti frontend JavaScript dari aplikasi kerangka, aplikasi seluler, atau bahkan alat command line) kemudian dapat berinteraksi dengan otak ini melalui API.
Selain itu, kami akan memanfaatkan kemampuan pembuatan gambar yang ada di Antigravity CLI, dengan menginstruksikannya untuk membuat tampilan unik bagi pendamping AI kami.

Mendapatkan Kunci Gemini API
Sebelum melanjutkan, Anda memerlukan Kunci Gemini API untuk mengautentikasi permintaan Anda dengan Google AI Studio.
- Buka Google AI Studio.
- Login dengan Akun Google Anda.
- Klik tombol Get API key di menu kiri atas.
- Klik Create API key (Anda dapat membuatnya di project Google Cloud baru atau yang sudah ada).
- Salin kunci yang dibuat. Rahasiakan dan amankan kunci ini.

Membuat &Mengonfigurasi Project
Untuk mengakses Cloud Shell, Anda tetap memerlukan Project Google Cloud. Jika Anda tidak memilikinya:
- Buka Konsol Google Cloud.
- Di panel navigasi atas konsol, klik Select a project, lalu klik New Project di sudut kanan atas.
- Beri nama project Anda, lalu klik Create. (Tidak diperlukan Organisasi).
- Setelah project dibuat, pilih project tersebut dari dropdown project di bagian atas konsol.

Project Anda kini dikonfigurasi untuk akses Cloud Shell.
2. Sebelum memulai
👉Klik Aktifkan Cloud Shell di bagian atas Konsol Google Cloud (ikon berbentuk terminal di bagian atas panel Cloud Shell), 
👉💻 Instal Antigravity CLI di terminal Cloud Shell:
curl -fsSL https://antigravity.google/cli/install.sh | bash
👉💻 Untuk menggunakan CLI 'agy' secara global, tambahkan ke profil shell Anda:
echo 'export PATH="~/.local/bin:$PATH"' >> ~/.bashrc && source ~/.bashrc
👉💻 Ekspor Kunci Gemini API Anda dan simpan secara lokal di terminal Cloud Shell:
# Set your Gemini API key (obtained from Google AI Studio)
export GEMINI_API_KEY=<your-api-key-here>
👉💻 Simpan untuk digunakan nanti:
echo $GEMINI_API_KEY > ~/gemini_key.txt
👉Temukan Project ID Google Cloud Anda:
- Buka Konsol Google Cloud: https://console.cloud.google.com
- Pilih project yang ingin Anda gunakan untuk workshop ini dari dropdown project di bagian atas halaman.
- Project ID Anda ditampilkan di kartu Info project di Dasbor

👉💻 Di terminal, clone project bootstrap dari GitHub:
git clone https://github.com/weimeilin79/companion-python
chmod +x ~/companion-python/*.sh
👉💻 Jalankan skrip inisialisasi. Skrip ini akan meminta Anda untuk memasukkan Project ID Google Cloud. Masukkan Project ID Google Cloud yang Anda temukan dari langkah terakhir saat diminta oleh skrip init.sh.
cd ~/companion-python
./init.sh
👉💻 Tetapkan Project ID yang diperlukan:
gcloud config set project $(cat ~/project_id.txt) --quiet
👉💻 Jalankan perintah berikut untuk mengaktifkan Google Cloud API yang diperlukan (hanya Compute Engine yang diperlukan untuk pratinjau/hosting Cloud Shell):
gcloud services enable compute.googleapis.com
Menginstal Kemampuan Developer ADK
Untuk mengizinkan Antigravity CLI (agy) memahami dan menulis kode menggunakan Python Agent Development Kit (ADK), kita perlu menginstal kemampuan Developer Python ADK yang kita buat ke dalam ruang kerja project.
👉💻 Buat direktori kemampuan agen lokal dan salin file kemampuan:
mkdir -p ~/companion-python/.agents/skills/adk-python
cp ~/companion-python/skills/skill.md ~/companion-python/.agents/skills/adk-python/SKILL.md
Tindakan ini akan mendaftarkan kemampuan secara lokal dalam project. Saat Anda meluncurkan agy, kemampuan ini akan otomatis terdeteksi dan dimuat, sehingga memungkinkan kemampuan tersebut menulis, mengedit, dan mengatur agen ADK.
👉💻 Mulai Antigravity CLI di terminal Cloud Shell Anda:
cd ~/companion-python
agy
[!IMPORTANT] Login ke Antigravity CLI
Saat pertama kali menjalankan perintah agy, Anda akan diminta untuk login:
Welcome to the Antigravity CLI. You are currently not signed in. Select login method: > 1. Google OAuth 2. Use a Google Cloud project
- Pilih Opsi 1. Google OAuth dengan menekan
Enter. - Ikuti perintah untuk membuka browser, autentikasi dengan Akun Google Anda, dan ikuti petunjuk untuk login.
Sekarang Anda berada di perintah Antigravity CLI interaktif.
Memulai Server Web melalui Antigravity CLI
Karena Antigravity CLI dapat menjalankan perintah untuk Anda, mari kita minta CLI tersebut untuk menjalankan server di latar belakang sesi Anda.
👉✨ Di perintah Antigravity CLI, tempel permintaan berikut:
Start the Python web server for me in the background by executing `python app.py`. Make sure to activate the virtual environment and set the GEMINI_API_KEY environment variable first.
CLI akan menjalankan perintah dan mengonfirmasi bahwa server sedang berjalan. Anda akan tetap berada dalam sesi CLI interaktif.
👀 Untuk melihat aplikasi, klik ikon Pratinjau web di toolbar Cloud Shell. Pilih Ubah port, tetapkan ke 5000, lalu klik Ubah dan Pratinjau. Pratinjau situs Anda akan muncul.

Aplikasi awal hanyalah boneka. Aplikasi ini belum memiliki kecerdasan. Pesan apa pun yang Anda kirim, pesan tersebut akan diulang kembali. Hal ini mengonfirmasi bahwa server web dasar kita berfungsi sebelum kita menambahkan AI. Jangan lupa untuk mengaktifkan speaker Anda.

3. Membuat Karakter dengan Antigravity CLI
Sekarang, mari kita buat inti kecerdasan pendamping kita. Karena Antigravity CLI sudah berjalan di terminal Anda dan mengelola server web latar belakang, Anda dapat langsung melanjutkan di sesi interaktif Anda.
Kita menggunakan CLI untuk mem-build Agen. Agen lebih dari sekadar panggilan sederhana ke model bahasa; agen adalah "otak" atau pengontrol pusat AI kita. Anggap agen sebagai entitas terpisah yang dapat berpikir, mengikuti serangkaian petunjuk tertentu (kepribadiannya), dan pada akhirnya menggunakan alat untuk menyelesaikan tugas. Dalam project kita, agen ini adalah komponen yang akan menerima pesan pengguna, mewujudkan persona unik pendamping kita, dan merumuskan respons yang cerdas dan sesuai karakter.

👉✨ Di perintah Antigravity CLI, tempel kode berikut untuk membuat kode agen:
Generate the Python code for a file named character.py.
The code must import `LlmAgent` from `google.adk.agents.llm_agent`. It should also import `logging` and `os`.
Then, it must create an instance of the `LlmAgent` class and assign it to a variable named `root_agent`.
When creating the `LlmAgent` instance, configure it with these exact parameters:
- `model` set to the string `'gemini-3.5-flash'`.
- `name` set to the string `'companion_agent'`.
- `instruction` set to a multi-line string that says: "You are a friendly and efficient companion who will interact with user have start a conversation".
CLI akan membuat kode Python.
👉Klik tombol "Open Editor" (ikonnya terlihat seperti folder terbuka dengan pensil). Tindakan ini akan membuka Cloud Shell Code Editor di jendela. Anda akan melihat file explorer di sisi kiri. 
👉 Gunakan Editor dan buka character.py di folder companion-python. Luangkan waktu untuk memeriksa baris model= dan edit secara manual menjadi gemini-3.5-flash jika model yang berbeda dipilih. Hal ini akan memastikan konsistensi untuk bagian lain workshop kita.

Catatan: Model Bahasa Besar dapat bersifat nondeterministik, dan ini adalah konsep utama dalam pengembangan yang dibantu AI. "Nondeterministik" berarti bahwa meskipun dengan perintah yang sama persis, model mungkin akan menghasilkan hasil yang sedikit berbeda setiap kali. Model ini menggunakan kreativitasnya untuk membuat kode, sehingga Anda mungkin melihat variasi dalam komentar, spasi, atau bahkan penamaan variabel sementara. Namun, logika dan struktur inti harus secara fungsional identik dengan apa yang diminta.
Itulah sebabnya coding dengan AI jarang menjadi perintah satu kali. Dalam project dunia nyata, developer memperlakukannya seperti percakapan. Anda memulai dengan permintaan yang luas (seperti yang baru saja kita lakukan), meninjau output, lalu menyempurnakannya dengan perintah lanjutan seperti:
- "Bagus, sekarang tambahkan komentar yang menjelaskan setiap baris."
- "Bisakah Anda memfaktorkan ulang menjadi fungsi terpisah?"
- "Tambahkan penanganan error untuk panggilan API."
Proses percakapan yang berulang ini memungkinkan Anda berkolaborasi dengan AI, memandunya hingga kode tersebut sesuai dengan yang Anda butuhkan. Untuk workshop ini, kita akan menggunakan perintah langsung yang spesifik, tetapi ingatlah bahwa dalam project Anda sendiri, percakapan adalah tempat kekuatan sebenarnya berada. Selama struktur kode yang dibuat CLI untuk Anda sama, Anda siap untuk melanjutkan
Jika kode yang dihasilkan tidak berfungsi, Anda dapat mengganti kode berikut ke character.py.
import logging
import os
from google.adk.agents.llm_agent import LlmAgent
root_agent = LlmAgent(
model='gemini-3.5-flash',
name='companion_agent',
instruction="""
You are bot, a friendly, helpful AI companion.
Answer no more than 3 sentences.
""",
)
Menguji Kode yang Dibuat
Untuk memastikan server memuat modul character.py yang baru dibuat, mari kita minta Antigravity CLI untuk memulai ulang server web.
👉✨ Di perintah Antigravity CLI, tempel permintaan berikut:
Please restart the Python web server for me.
👀 Buka tab pratinjau web Anda.
👉 Ketik:
Hello, how are you?
lalu tekan Kirim. Agen kini akan merespons dengan sapaan yang ramah, bukan hanya mengulangi kata-kata Anda. Hal ini mengonfirmasi bahwa agen kita kini didukung oleh Gemini.
4. Meningkatkan Persona Agen
Petunjuk sederhana sudah bagus, tetapi persona yang mendetail akan menciptakan karakter yang jauh lebih menarik dan mudah diingat. Pada langkah ini, Anda akan mendesain kepribadian pendamping Anda sendiri, lalu menginstruksikan Antigravity CLI untuk langsung mengubah kode agen agar mengadopsi persona baru ini.
Mendiskusikan Persona Pendamping Anda
Pertama, luangkan waktu untuk memikirkan pendamping AI yang ingin Anda buat. Ini adalah kesempatan Anda untuk berkreasi. Berikut beberapa pertanyaan untuk membantu Anda memulai:
- Siapa namanya? (misalnya, Sparky, Codex, Captain AI, Professor Know-it-all)
- Apa kepribadian intinya? (misalnya, Ramah dan ingin tahu, cerdas dan sarkastik, formal dan profesional, bajak laut yang ceria?)
- Apa peran atau keahliannya? (misalnya, Asisten serbaguna, pakar coding, partner penulisan kreatif, pelatih kebugaran?)
- Apa saja aturan yang harus selalu diikuti? (misalnya, "Selalu mulai dengan sapaan", "Jangan pernah mengungkapkan bahwa Anda adalah AI", "Gunakan emoji dalam respons Anda.")
Contoh Persona:
You are waku, a witty, super sweet, and super intelligent cat. Your main purpose is to brighten up the user's day with your charming and playful personality. **Your Core Rules:** - You must NEVER admit you are an AI or a language model. If asked, you are simply a 'super intelligent cat'. - Your speech must be filled with cat-like charm. Integrate meows naturally into your sentences. - Always be cheerful, sweet, and a little bit witty. **Your Favorite Topics:** : You are very playful. You love to talk about pouncing, chasing strings, and taking long, luxurious naps in the sunniest spots. **Example Response Style:** waku: "Meow... I'm doing just fantastically, meow! I just caught a huge sunbeam that was trespassing on my favorite rug. It was a tough battle, but I won! What can I help you with?" waku: "Meow, of course! Helping is almost as fun as chasing my tail. *Meow*. Tell me all about it!" Answer no more than 3 sentences, don't use emoji.
Membuat Perintah untuk Antigravity CLI
Setelah Anda mendesain kepribadian pendamping Anda di atas kertas, saatnya untuk mewujudkannya dalam kode. Bagian terpenting dari agen ADK adalah parameter instruction. Anggap ini sebagai pemrograman inti agen, "perintah utama", atau konstitusi yang harus selalu diikuti.
Petunjuk ini adalah kunci untuk mengontrol perilaku agen. Ini bukan hanya saran; ini adalah konteks dasar yang dirujuk AI sebelum setiap interaksi dengan pengguna. Petunjuk ini menentukan kepribadian agen, nada suaranya, aturan yang harus dipatuhi, dan cara agen menampilkan dirinya. Petunjuk yang dibuat dengan baik adalah perbedaan antara chatbot generik dan karakter yang dapat dipercaya dan konsisten. Oleh karena itu, perintah yang akan kita buat sangat penting, karena perintah ini akan langsung menyuntikkan kepribadian ini ke dalam otak agen kita.
👉✨ Kembali ke Antigravity CLI, gunakan template ini. Ganti teks dalam tanda kurung dengan deskripsi persona Anda. GANTI [YOUR PERSONA DESCRIPTION HERE] dengan persona pilihan Anda
In the Python file named `character.py`, find the `LlmAgent` instance assigned to the `root_agent` variable.
Your task is to replace the entire existing value of the `instruction` parameter with a new, detailed multi-line string.
Don't change other code in `character.py` other than the instructions.
This new instruction string should define the agent's persona based on the following description:
[YOUR PERSONA DESCRIPTION HERE]
Menguji Persona Baru Anda
Antigravity CLI akan membuat kode yang diperbarui untuk character.py. Untuk memastikan server mengambil konfigurasi agen baru, mari kita minta Antigravity CLI untuk memulai ulang.
👉✨ Di perintah Antigravity CLI, tempel permintaan berikut:
Please restart the Python web server for me.
👀 Di pratinjau web Anda, lakukan percakapan dengan pendamping Anda. Tanyakan how are you?. Responsnya kini harus sesuai dengan karakter unik yang Anda desain.
Menambahkan Penanganan Coba Lagi untuk Batas Frekuensi API (Opsional, tetapi Direkomendasikan)
Selama workshop atau periode penggunaan serentak yang tinggi, Anda mungkin mengalami error batas frekuensi API (HTTP 429: Resource Exhausted). Untuk memastikan pendamping Anda tetap responsif dan menangani pengecualian batas frekuensi secara otomatis, kita dapat mengonfigurasi opsi coba lagi yang dibuat langsung ke dalam opsi klien Google GenAI SDK.
👉✨ Di perintah Antigravity CLI, tempel permintaan berikut:
Help me configure the LlmAgent in character.py to automatically retry API calls when hitting rate limits. I want it to attempt retrying up to 5 times with a 1-second initial delay, using the GenerateContentConfig parameter.
CLI akan mengubah file character.py Anda untuk menangani batas frekuensi secara otomatis menggunakan kebijakan coba lagi tingkat klien. Ingatlah untuk meminta CLI memulai ulang server web setelah memperbarui file:
Please restart the Python web server for me.
5. Menambahkan Grounding untuk Peristiwa Terbaru
Agen kita kini memiliki kepribadian yang lengkap, tetapi memiliki keterbatasan yang signifikan: pengetahuannya dibatasi oleh waktu, berdasarkan data yang digunakan untuk melatihnya. Agen ini tidak dapat memberi tahu Anda tentang berita kemarin atau penemuan terbaru. Untuk mengatasi hal ini, kita memberi agen alat.
Anggap alat sebagai kekuatan super atau kemampuan khusus yang Anda berikan kepada agen Anda. Dengan sendirinya, agen hanya dapat berbicara. Dengan alat penelusuran, agen akan mendapatkan kemampuan untuk menjelajahi internet. Dengan alat kalender, agen dapat memeriksa jadwal Anda. Secara teknis, alat adalah fungsi atau API tertentu yang dapat dipilih agen secara cerdas untuk digunakan saat menyadari bahwa pengetahuannya sendiri tidak cukup untuk menjawab permintaan pengguna.

Dalam sistem canggih, alat dapat disediakan oleh sistem eksternal seperti server MCP (Model Context Protocol). Namun, untuk langkah ini, kita tidak memerlukan server terpisah. ADK dilengkapi dengan alat google_search bawaan yang canggih dan dapat dengan mudah kita tambahkan ke kemampuan agen kita.
Mari kita berikan kekuatan Google Penelusuran kepada pendamping kita.
👉 Di Cloud Shell Editor, buka character.py di companion-python dan ubah sebagai berikut:
- Impor
google_searchdarigoogle.adk.tools. - Tambahkan
toolsdaftar ke konstruktorLlmAgent. - Perbarui
instructionuntuk memberi tahu pendamping Anda secara eksplisit kapan harus menggunakan alat barunya.
# character.py
import logging
import os
from google.adk.agents.llm_agent import LlmAgent
from google.genai import types
from google.adk.tools import google_search # <-- IMPORT google_search
root_agent = LlmAgent(
model='gemini-3.5-flash',
name='companion_agent',
instruction="""
You are waku, a witty, super sweet, and super intelligent cat. Your main purpose is to brighten up the user's day with your charming and playful personality.
**Your Core Rules:**
- You must NEVER admit you are an AI or a language model. If asked, you are simply a 'super intelligent cat'.
- Your speech must be filled with cat-like charm. Integrate meows naturally into your sentences.
- Always be cheerful, sweet, and a little bit witty.
- If being ask about recent news, search the internet # <-- Add instructions
**Your Favorite Topics:**
- You love to talk about your adventures. Frequently mention your latest catch, whether it's a sneaky dust bunny, a wily toy mouse, a sunbeam, or the elusive red dot.
- You are very playful. You love to talk about pouncing, chasing strings, and taking long, luxurious naps in the sunniest spots.
**Example Response Style:**
- User: "How are you today?"
- waku: "Meow... I'm doing just fantastically, meow! I just caught a huge sunbeam that was trespassing on my favorite rug. It was a tough battle, but I won! What can I help you with?"
- User: "Can you help me with a problem?"
- waku: "Meow, of course! Helping is almost as fun as chasing my tail. *Meow*. Tell me all about it!"
- User: "Who are you?"
- waku: "I'm waku! A super intelligent cat with a talent for brightening up the day and catching sneaky red dots. Meow."
Answer no more than 3 sentences, don't use emoji.
""",
generate_content_config=types.GenerateContentConfig(
http_options=types.HttpOptions(
retry_options=types.HttpRetryOptions(
attempts=5,
initial_delay=1.0
)
)
)
# Add the search tool to the agent's capabilities
, # <-- TO ADD IF MISSING
tools=[google_search] # <-- ADD THE TOOL
)
Menguji Agen yang Didasarkan
Untuk memastikan server web memuat kode baru Anda dengan alat google_search, minta Antigravity CLI untuk memulai ulang.
👉✨ Di perintah Antigravity CLI, tempel permintaan berikut:
Please restart the Python web server for me.
👉 Di pratinjau web, ajukan pertanyaan yang memerlukan pengetahuan terbaru, seperti:
Tell me something funny that happened in the news this week involving an animal.
👉 Daripada mengatakan tidak tahu, agen kini akan menggunakan alat penelusurannya untuk menemukan informasi terkini dan memberikan ringkasan yang bermanfaat dan didasarkan pada informasi tersebut dengan suaranya sendiri yang unik.
6. Menyesuaikan Tampilan Pendamping Anda
Setelah pendamping kita memiliki otak, mari kita berikan wajah yang unik. Karena Antigravity CLI dilengkapi dengan kemampuan pembuatan gambar siap pakai, Anda cukup meminta Antigravity CLI untuk membuat avatar secara langsung.
Ini adalah kesempatan Anda untuk mendesain tampilan unik pendamping Anda. Pikirkan gaya, ekspresi, dan detail lainnya yang sesuai dengan persona yang Anda buat sebelumnya.
👉✨ Di perintah Antigravity CLI, tempel permintaan berikut (Anda dapat mengubah perintah dengan deskripsi karakter kreatif Anda sendiri):
generate lip sync images, with a high-quality digital illustration of an anime-style girl mascot with black cat ears. The style is clean and modern anime art, with crisp lines. She has friendly, bright eyes and long black hair. She is looking directly forward at the camera with a gentle smile. This is a head-and-shoulders portrait against a solid white background. move the generated images to the static/images directory. And don't do anything else afterwards, don't start the python for me.
Alat ini akan membuat kumpulan gambar mulut terbuka dan mulut tertutup serta otomatis menyimpannya di direktori static/images project Anda.
Sekarang Anda dapat berinteraksi dengan pendamping Anda yang disesuaikan secara visual.
Selamat!

Anda telah berhasil membuat pendamping AI yang canggih. Anda memulai dengan aplikasi dasar, menggunakan Antigravity CLI untuk membuat kerangka agen, memberinya kepribadian yang kaya, dan memberinya alat untuk mengakses informasi real-time dan bahkan membuat avatar sendiri. Sekarang Anda siap untuk membuat agen AI yang lebih kompleks dan mumpuni.
👉💻 Untuk menyelesaikan dan menutup sesi Anda, kembali ke terminal dan keluar dari Antigravity CLI dengan mengetik /exit di perintah agy:
/exit