1. Yang akan Anda pelajari
Full Stack Agen AI Vibe
Selamat datang! Anda akan mempelajari keterampilan penting berikutnya dalam pengembangan software: cara memandu Kecerdasan Buatan secara efektif untuk membuat, menguji, dan men-deploy software tingkat produksi. AI generatif bukanlah "autopilot"; AI ini adalah kopilot canggih yang membutuhkan sutradara yang terampil.
Workshop ini memberikan metodologi terstruktur dan berulang untuk berpartner dengan AI di setiap tahap Siklus Proses Pengembangan Software (SDLC) profesional. Anda akan beralih dari penulis kode baris demi baris menjadi direktur teknis—arsitek dengan visi dan kontraktor umum yang menggunakan AI untuk mengeksekusi visi tersebut dengan presisi. 🚀
Setelah menyelesaikan tutorial ini, Anda akan:
- Menerjemahkan ide tingkat tinggi menjadi arsitektur cloud menggunakan AI.
- Membuat backend Python lengkap dengan perintah yang ditargetkan dan spesifik.
- Menggunakan AI sebagai pendamping programmer untuk mendebug dan memperbaiki kode.
- Mendelegasikan pembuatan pengujian unit, termasuk tiruan, ke AI.
Menghasilkan Infrastructure as Code (IaC) yang siap produksi dengan Terraform.
Membuat pipeline CI/CD lengkap di GitHub Actions dengan satu perintah.
Memantau dan mengelola aplikasi aktif Anda menggunakan alat operasional yang didukung teknologi AI.
Anda tidak hanya akan memiliki aplikasi yang berfungsi, tetapi juga cetak biru untuk pengembangan yang ditingkatkan AI. Mari kita mulai!
2. Prasyarat dan Penyiapan
Sebelum memulai, siapkan lingkungan Anda. Ini adalah langkah penting untuk memastikan pengalaman workshop yang lancar.
Buat akun GCP baru dan tautkan penagihan Anda
Untuk mendukung agen AI kami, kita memerlukan dua hal: Project Google Cloud untuk menyediakan fondasi dan Kunci API Gemini untuk mengakses model canggih Google.
Langkah 1: Aktifkan Akun Penagihan
- Untuk mengklaim akun penagihan dengan kredit 5 dolar, Anda akan memerlukannya untuk deployment. Pastikan Anda login ke akun Gmail Anda.
Langkah 2: Buat Project GCP Baru
- Buka Konsol Google Cloud dan buat project baru.
- Buka Konsol Google Cloud dan buat project baru.
- Buka panel kiri, klik
Billing
, periksa apakah akun penagihan ditautkan ke akun GCP ini.
Jika Anda melihat halaman ini, periksa manage billing account
, pilih Google Cloud Trial One, dan tautkan ke halaman tersebut.
Langkah 3: Buat Kunci Gemini API Anda
Sebelum dapat mengamankan kunci, Anda harus memilikinya.
- Buka Google AI Studio : https://aistudio.google.com/
- Login dengan akun Gmail Anda.
- Klik tombol "Dapatkan kunci API", yang biasanya ada di panel navigasi sebelah kiri atau di sudut kanan atas.
- Pada dialog "Kunci API", klik "Buat kunci API di project baru".
- Pilih project baru yang Anda buat dan telah menyiapkan akun penagihan.
- Kunci API baru akan dibuat untuk Anda. Segera salin kunci ini dan simpan di tempat yang aman untuk sementara (seperti pengelola sandi atau catatan aman). Nilai ini akan Anda gunakan pada langkah berikutnya.
Autentikasi GitHub
Buka Cloud Shell dengan membuka Konsol Google Cloud, di tombol kanan atas "Activate Cloud Shell".
Langkah 1: Buka Cloud Shell
👉Klik Activate Cloud Shell di bagian atas konsol Google Cloud (Ikon berbentuk terminal di bagian atas panel Cloud Shell),
👉Klik tombol "Open Editor" (terlihat seperti folder terbuka dengan pensil). Tindakan ini akan membuka Editor Kode Cloud Shell di jendela. Anda akan melihat file explorer di sisi kiri.
👉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
👉Buka terminal di IDE cloud,
👉💻 Di terminal, verifikasi bahwa Anda sudah diautentikasi dan project ditetapkan ke project ID Anda menggunakan perintah berikut:
gcloud auth list
Langkah 2: Lakukan Autentikasi dengan GitHub & Fork
Melakukan autentikasi dengan GitHub:
👉💻
gh auth login
menyalin kode ke halaman verifikasi login
Buat Fork dan Clone repo: 👉💻
gh repo fork cuppibla/storygen-learning --clone=true
3. Arsitektur: Dari Ide hingga Blueprint dengan Cloud Assist
Setiap project yang hebat dimulai dengan visi yang jelas. Kita akan menggunakan kopilot AI, Cloud Assist, untuk mendesain arsitektur aplikasi.
Tindakan
- Buka Konsol Google Cloud: https://console.cloud.google.com
- Di pojok kanan atas, klik "buka Chat Cloud Assist"
Aktifkan Cloud Assist
- Klik
Get Gemini Assist
, laluEnable Cloud Assist at no cost
. - Lalu Mulai Chat!
Berikan perintah mendetail berikut ke Cloud Assist:
Masukkan Ide Anda
Generate a Python web application that uses AI to generate children's stories and illustrations. It has Python backend and React frontend host separately on Cloudrun. They communicate through Websocket. It needs to use a generative model for text and another for images. The generated images must be used by Imagen from Vertex AI and stored in a Google Cloud Storage bucket so that frontend can fetch from the bucket to render images. I do not want any load balancer or a database for the story text. We need a solution to store the API key.
Mendapatkan Cetak Biru Aplikasi Anda
- Klik: "Edit desain aplikasi", Anda akan melihat diagram. Klik panel kanan atas "<> Get Code" untuk mendownload kode Terraform.
- Cloud Assist akan membuat diagram arsitektur. Ini adalah cetak biru visual kita.
Momen Pembelajaran Utama: AI unggul dalam desain sistem tingkat tinggi. AI generatif dapat langsung menerjemahkan persyaratan bahasa sederhana menjadi arsitektur visual yang profesional.
4. Pengembangan: Membangun ADK dengan Gemini CLI
Penyiapan Awal
Pastikan kita menggunakan Gemini CLI untuk membuat cabang repositori dan menyiapkan ruang kerja:
Konfigurasi Lingkungan
Buka Cloud Shell Anda, klik tombol "Open Terminal".
- Salin template lingkungan:
cd ~/storygen-learning cp ~/storygen-learning/env.template ~/storygen-learning/.env
Melihat File Tersembunyi di Editor Jika Anda Tidak Menemukan .env
- Klik Lihat di menu atas.
- Pilih Toggle Hidden Files.
Mengedit file .env 2. Ganti nilai berikut di .env
:
GOOGLE_API_KEY=[REPLACE YOUR API KEY HERE]
GOOGLE_CLOUD_PROJECT_ID=[REPLACE YOUR PROJECT ID]
GITHUB_USERNAME=[REPLACE YOUR USERNAME]
GENMEDIA_BUCKET=[REPLACE YOUR PROJECT ID]-bucket
Misalnya, jika project ID Anda adalah: testproject
, Anda harus memasukkan GOOGLE_CLOUD_PROJECT_ID=testproject
dan GENMEDIA_BUCKET=testproject-bucket
Skrip Penyiapan
Buka 00_Starting_Here Buka terminal baru (bukan di Gemini CLI)
cd ~/storygen-learning/00_Starting_Here
Jalankan penyiapan lengkap:
./setup-complete.sh
Anda akan melihat hasil penyiapan di terminal
Membuat Agen Pertama Anda
Buka 01a_First_Agent_Ready Mari kita gunakan Gemini CLI untuk membuat agen ADK:**
cd ~/storygen-learning/01a_First_Agent_Ready
Membuka Gemini CLI
gemini
Di dalam Jendela Gamini CLI, coba perintah:
I need you to help me create a Google ADK (Agent Development Kit) agent for story generation. I'm working on a children's storybook app that generates creative stories with visual scenes.
Please create a complete `agent.py` file that implements an LlmAgent using Google's ADK framework. The agent should:
**Requirements:**
1. Use the `google.adk.agents.LlmAgent` class
2. Use the "gemini-2.5-flash" model (supports streaming)
3. Be named "story_agent"
4. Generate structured stories with exactly 4 scenes each
5. Output valid JSON with story text, main characters, and scene data
6. No tools needed (images are handled separately)
**Agent Specifications:**
- **Model:** gemini-2.5-flash
- **Name:** story_agent
- **Description:** "Generates creative short stories and accompanying visual keyframes based on user-provided keywords and themes."
**Story Structure Required:**
- Exactly 4 scenes: Setup → Inciting Incident → Climax → Resolution
- 100-200 words total
- Simple, charming language for all audiences
- Natural keyword integration
**JSON Output Format:**
{
"story": "Complete story text...",
"main_characters": [
{
"name": "Character Name",
"description": "VERY detailed visual description with specific colors, features, size, etc."
}
],
"scenes": [
{
"index": 1,
"title": "The Setup",
"description": "Scene action and setting WITHOUT character descriptions",
"text": "Story text for this scene"
}
// ... 3 more scenes
]
}
**Key Instructions for the Agent:**
- Extract 1-2 main characters maximum
- Character descriptions should be extremely detailed and visual
- Scene descriptions focus on ACTION and SETTING only
- Do NOT repeat character appearance in scene descriptions
- Always respond with valid JSON
Please include a complete example in the instructions showing the exact format using keywords like "tiny robot", "lost kitten", "rainy city".
The file should start with necessary imports, define an empty tools list, include a print statement for initialization, and then create the LlmAgent with all the detailed instructions.
Can you create this agent in backend/story_agent/agent.py
Setelah selesai, nonaktifkan terminal Gemini CLI dengan Control+C
—————————————— Opsional, Anda dapat langsung membuka bagian Solusi——————————————–
Sekarang Verifikasi Perubahan Anda di ADK Web
cd ~/storygen-learning/01a_First_Agent_Ready/backend
source ../../.venv/bin/activate
adk web --port 8080
Menyiapkan Situs
cd ~/storygen-learning/01a_First_Agent_Ready
./start.sh
Jika perubahan Anda tidak berfungsi, Anda akan melihat error di ADK Web UI dan Situs.
——————————————– Solusi Dimulai di Sini ——————————————–
Solusi
Akhiri proses sebelumnya dengan Control+C
atau Anda dapat membuka terminal lain:
cd ~/storygen-learning/01b_First_Agent_Done
Menyiapkan Situs:
./start.sh
Anda akan melihat situs:
Coba UI ADK: Buka terminal lain:
cd ~/storygen-learning/01b_First_Agent_Done/backend
source ../../.venv/bin/activate
adk web --port 8080
Anda akan melihat UI ADK tempat Anda dapat mengajukan pertanyaan kepada agen
Sebelum berpindah ke bagian berikutnya, tekan Ctrl+C untuk mengakhiri proses.
5. Pengembangan: Membangun Agen Kustom Anda dengan Imagen
Buat Alat Imagen (Agen Kedua)
cd ~/storygen-learning/02a_Image_Agent_Ready
Gunakan Gemini CLI untuk membuat agen pembuatan gambar:
gemini generate "I need you to help me create a custom Google ADK (Agent Development Kit) agent for image generation. This is different from the story agent - this one handles image generation directly using the BaseAgent pattern for full control over tool execution.
Please create a complete `agent.py` file that implements a custom image generation agent. The agent should:
**Requirements:**
1. Use the `google.adk.agents.BaseAgent` class (NOT LlmAgent)
2. Be named "custom_image_agent"
3. Directly execute the ImagenTool without LLM intermediation
4. Handle JSON input with scene descriptions and character descriptions
5. Store results in session state for retrieval by main.py
6. Use async generators and yield Events
**Key Specifications:**
- **Class Name:** CustomImageAgent (inherits from BaseAgent)
- **Agent Name:** "custom_image_agent"
- **Tool:** Uses ImagenTool for direct image generation
- **Purpose:** Bypass LLM agent limitations and directly call ImagenTool
**Input Format:**
The agent should handle JSON input like:
{
"scene_description": "Scene action and setting",
"character_descriptions": {
"CharacterName": "detailed visual description"
}
}
**Core Method:** `async def _run_async_impl(self, ctx: InvocationContext) -> AsyncGenerator[Event, None]:`
- Extract user message from `ctx.user_content.parts`
- Parse JSON input or fallback to plain text
- Extract scene_description and character_descriptions
- Build image prompt with style prefix: "Children's book cartoon illustration with bright vibrant colors, simple shapes, friendly characters."
- Include character descriptions for consistency
- Call `await self.imagen_tool.run()` directly
- Store results in `ctx.session.state["image_result"]`
- Yield Event with results
**Session State:**
- Store JSON results in `ctx.session.state["image_result"]`
- Include success/error status
- Store actual image URLs or error messages
Expected Output Structure:
- Successful results stored as JSON with image URLs
- Error results stored as JSON with error messages
- Results accessible via session state in main.py
Can you create this agent in backend/story_image_agent/agent.py
"
—————————————— Opsional, Anda dapat langsung membuka bagian Solusi——————————————–
Sekarang Verifikasi Perubahan Anda di ADK Web
cd ~/storygen-learning/02a_Image_Agent_Ready/backend
source ../../.venv/bin/activate
adk web --port 8080
Menyiapkan Situs
cd ~/storygen-learning/02a_Second_Agent_Ready
./start.sh
Jika perubahan Anda tidak berfungsi, Anda akan melihat error di ADK Web UI dan Situs.
—————————————- Solusi Dimulai di Sini ——————————————–
Solusi
Akhiri proses sebelumnya dengan Control+C
atau Anda dapat membuka terminal lain:
# Open new terminal
cd ~/storygen-learning/02b_Image_Agent_Done
Menyiapkan Situs:
./start.sh
Anda akan melihat situs:
Coba UI ADK: Buka terminal lain:
# Open new terminal
cd ~/storygen-learning/02b_Image_Agent_Done/backend
source ../../.venv/bin/activate
adk web --port 8080
Anda akan melihat UI ADK tempat Anda dapat mengajukan pertanyaan kepada agen:
Sebelum berpindah ke bagian berikutnya, tekan Ctrl+C untuk mengakhiri proses.
6. Pengujian: Evaluasi Agen
Aplikasi kita berfungsi, tetapi kita memerlukan jaring pengaman pengujian otomatis. Ini adalah tugas yang tepat untuk didelegasikan kepada kopilot AI kami.
Tindakan
cd ~/storygen-learning/03a_Agent_Evaluation_Ready/backend
Menggunakan Gemini CLI untuk menulis pengujian komprehensif:
Membuka Gemini CLI
gemini
Di dalam Jendela Gamini CLI, coba perintah:
I need you to create comprehensive test files for my backend/story_agent in Google ADK. I need three specific JSON files that match the testing structure used in ADK evaluation.
**Context:**
- The story agent generates structured JSON stories with exactly 4 scenes
- It uses LlmAgent with no tools, just direct LLM responses
- Input: Keywords
- Output: JSON with story, main_characters, and scenes arrays
**Files to Create:**
### 1. `story_agent_eval.evalset.json` (Comprehensive Integration Tests)
Create a comprehensive evaluation set with:
- **eval_set_id**: "story_agent_comprehensive_evalset"
- **name**: "Story Agent Comprehensive Evaluation Set"
- **description**: "Comprehensive evaluation scenarios for story_agent covering various keyword combinations, edge cases, and story quality metrics"
Each eval_case should include:
- Full conversation arrays with invocation_id, user_content, final_response
- Complete expected JSON responses with detailed stories, characters, and 4 scenes
- session_input with app_name "story_agent"
- All fields: story (narrative text), main_characters (with detailed visual descriptions), scenes (with index, title, description, text)
### 2. `story_generation.test.json` (Unit Tests)
Create basic generation tests with:
- **eval_set_id**: "story_agent_basic_generation_tests"
- **name**: "Story Agent Basic Generation Tests"
- **description**: "Unit tests for story_agent focusing on JSON structure compliance, scene generation, and keyword integration"
### 3. `test_config.json` (Evaluation Configuration)
Create test configuration with:
- **criteria**: response_match_score: 0.7, tool_trajectory_avg_score: 1.0
- **custom_evaluators**:
- json_structure_validator (validates required fields, scene count, character fields)
- story_quality_metrics (word count 80-250, keyword integration threshold 0.8)
- **evaluation_notes**: Story agent specifics and trajectory expectations
**Important Requirements:**
1. All responses must be valid, parseable JSON
2. Stories must have exactly 4 scenes with indices 1-4
3. Each scene must have: index, title, description, text
4. Main characters must have detailed visual descriptions
5. No tool_uses expected (empty arrays) since story agent uses direct LLM
6. Word count should be 100-200 words total
7. Keywords must be naturally integrated into the narrative
Please generate all three files with realistic example stories and comprehensive test coverage matching the ADK evaluation format.
—————————————— Opsional, Anda dapat langsung membuka bagian Solusi——————————————–
Untuk Melihat Evaluasi:
./run_adk_web_persistent.sh
Buka tab eval
di UI ADK.
Anda akan melihat UI Web ADK dengan kemampuan pengujian persisten
Momen Pembelajaran Utama: AI adalah partner yang efektif dalam mengotomatiskan jaminan kualitas. Alat ini dapat menangani boilerplate penulisan pengujian, sehingga Anda dapat berfokus pada pembuatan fitur.
——————————————– Solusi Dimulai di Sini ——————————————–
Solusi
- Buka folder solusi:
cd ~/storygen-learning/03b_Agent_Evaluation_Done/backend
- Membuka UI Web ADK
./run_adk_web_persistent.sh
Anda dapat melihat kasus pengujian dari Tab Eval
:
Sesuaikan metrik di sini:
Lihat hasil evaluasi di sini:
7. Infrastructure as Code (IaC): Membangun Rumah di Cloud
Kode kita sudah diuji, tetapi memerlukan tempat yang siap produksi. Kita akan menggunakan "Infrastructure as Code" untuk menentukan lingkungan.
Tindakan
cd ~/storygen-learning/04a_Manual_Deployment_Ready
Gunakan Gemini CLI untuk membuat Dockerfile bagi backend: Buka Gemini CLI
Gemini
Di dalam Gemini CLI, coba perintah:
Create a manual deployment plan for my StoryGen app with Google Cloud Platform. I have a Next.js frontend, Python backend, and Terraform infrastructure.
Generate these deployment files:
1. **01-setup.sh** - Environment setup and authentication
2. **02-build-images.sh** - Build and push Docker images to Google Container Registry
3. **03-deploy-infrastructure.sh** - Deploy with Terraform and configure services
4. **load-env.sh** - Load environment variables for deployment
**Requirements:**
- Use Google Cloud Run for both frontend and backend
- Configure Imagen API and storage buckets
- Set up proper IAM permissions
- Use environment variables from .env file
- Include error handling and status checks
Keep scripts simple, well-commented, and production-ready for manual execution.
Solusi:
cd ~/storygen-learning/04b_Manual_Deployment_Done
Jalankan:
source ../.venv/bin/activate
./01-setup.sh
./02-build-images.sh
./03-deploy-infrastructure.sh
Anda akan melihat hasil deployment dan pembuatan infrastruktur
8. Otomatisasi (CI/CD): Jalur Perakitan Digital
Men-deploy aplikasi secara manual itu lambat dan berisiko. Minta AI kita untuk menulis pipeline CI/CD lengkap menggunakan GitHub Actions.
Tindakan
cd ~/storygen-learning/05a_CICD_Pipeline_Ready
Gunakan Gemini CLI untuk membangun pipeline CI/CD dengan GitHub:
Membuka Gemini CLI
Gemini
Di dalam Gemini CLI, coba perintah:
Create a CI/CD pipeline for my StoryGen app using Google Cloud Build and GitHub integration.
Generate these automation files:
1. **cloudbuild.yaml** (for backend) - Automated build, test, and deploy pipeline
2. **GitHub Actions workflow** - Trigger builds on push/PR
3. **Deployment automation scripts** - Streamlined deployment process
**Requirements:**
- Auto-trigger on GitHub push to main branch
- Build and push Docker images
- Run automated tests if available
- Deploy to Google Cloud Run
- Environment-specific deployments (staging/prod)
- Notification on success/failure
Focus on fully automated deployment with minimal manual intervention. Include proper secret management and rollback capabilities.
——————————————– Solusi Dimulai di Sini ——————————————–
Solusi:
cd ~/storygen-learning/06_Final_Solution/
# Copy the GitHub workflow to parent folder
cp -r 06_Final_Solution/.github ../../../.github
Kembali ke folder 06_Final_Solution dan jalankan skrip:
cd ~/storygen-learning/06_Final_Solution/
./setup-cicd-complete.sh
Anda akan melihat penyelesaian penyiapan pipeline CI/CD
Memicu Alur Kerja: Lakukan commit dan kirim kode Anda ke main. Perhatikan bahwa Anda harus menyiapkan email dan nama GitHub untuk memberikan izin.
git add .
git commit -m "feat: Add backend, IaC, and CI/CD workflow"
git push origin main
Buka tab "Actions" di repositori GitHub Anda untuk melihat deployment otomatis Anda berjalan.
Momen Pembelajaran Utama: Seluruh pipeline CI/CD—bagian DevOps yang kompleks dan penting—dapat dibuat oleh AI.
9. Operasi: Menara Kontrol AI
Kami sudah live! Namun, perjalanan belum berakhir. Ini adalah "Hari ke-2"—operasi. Mari kembali ke Cloud Assist untuk mengelola aplikasi yang sedang berjalan.
Tindakan
- Buka layanan Cloud Run Anda di konsol Google Cloud. Berinteraksi dengan aplikasi live Anda untuk menghasilkan beberapa traffic dan log.
- Buka panel Cloud Assist dan gunakan sebagai kopilot operasional dengan perintah seperti berikut:
Analisis Log:
Summarize the errors in my Cloud Run logs for the service 'genai-backend' from the last 15 minutes.
Penyesuaian Performa:
My Cloud Run service 'genai-backend' has high startup latency. What are common causes for a Python app and how can I investigate with Cloud Trace?
Pengoptimalan Biaya:
Analyze the costs for my 'genai-backend' service and its GCS bucket. Are there any opportunities to save money?
Momen Pembelajaran Utama: SDLC AI adalah loop berkelanjutan. Partner AI yang sama yang membantu membangun aplikasi adalah partner yang sangat diperlukan untuk memantau, memecahkan masalah, dan mengoptimalkannya dalam produksi.