1. Pengantar

Dalam codelab ini, Anda akan mempelajari cara menggunakan Google Antigravity untuk mendesain, membangun, dan men-deploy aplikasi tanpa server ke Google Cloud. Kita akan membangun pipeline dokumen tanpa server dan berbasis peristiwa yang menyerap file dari Google Cloud Storage (GCS), memprosesnya menggunakan Cloud Run dan Gemini, serta melakukan streaming metadatanya ke BigQuery.
Yang akan Anda pelajari
- Cara menggunakan Antigravity untuk perencanaan dan desain arsitektur.
- Membuat infrastruktur sebagai kode (skrip shell) dengan agen AI.
- Membangun dan men-deploy layanan Cloud Run berbasis Python.
- Mengintegrasikan Gemini di Vertex AI untuk analisis dokumen multimodal.
- Memverifikasi pipeline end-to-end menggunakan artefak Panduan Antigravity.
Yang akan Anda butuhkan
- Google Antigravity terinstal.
- Project Google Cloud yang mengaktifkan penagihan.
- gcloud CLI terinstal dan terautentikasi.
2. Ringkasan aplikasi
Sebelum kita membahas arsitektur dan mengimplementasikan aplikasi menggunakan Antigravity, mari kita uraikan terlebih dahulu aplikasi yang ingin kita buat.
Kita ingin membangun pipeline dokumen tanpa server dan berbasis peristiwa yang menyerap file dari Google Cloud Storage (GCS), memprosesnya menggunakan Cloud Run dan Gemini, serta melakukan streaming metadatanya ke BigQuery.
Diagram arsitektur tingkat tinggi untuk aplikasi ini dapat terlihat seperti berikut:

Hal ini tidak harus akurat. Antigravity dapat membantu kita mengetahui detail arsitektur saat kita melanjutkan. Namun, akan lebih baik jika Anda memiliki gambaran tentang apa yang ingin Anda buat. Semakin banyak detail yang dapat Anda berikan, semakin baik hasil yang akan Anda dapatkan dari Antigravity dalam hal arsitektur dan kode.
3. Merencanakan arsitektur
Kita siap untuk mulai merencanakan detail arsitektur dengan Antigravity.
Antigravity unggul dalam merencanakan sistem yang kompleks. Daripada langsung menulis kode, kita dapat mulai dengan menentukan arsitektur tingkat tinggi dan menggunakan salah satu fitur untuk membantu Antigravity mengevaluasi permintaan kita, mengajukan pertanyaan lanjutan, lalu melanjutkan perencanaan dan implementasinya.
Dengan asumsi bahwa Anda telah meluncurkan Antigravity, kita akan membuat Project baru untuk codelab ini.
Klik ikon project baru di samping lab Projects , lalu New Project seperti yang ditunjukkan di bawah:

Tindakan ini akan menampilkan opsi Add Folder seperti yang ditunjukkan di bawah:

Klik tombol Add Folder untuk menambahkan folder ke project Anda. Di komputer saya, saya membuat folder google-cloud-serverless-app dan menambahkannya ke project ini.
Tindakan ini akan membuka percakapan di project google-cloud-serverless-app.
Klik ikon setelan utama ⚙️ di kiri bawah layar dan buka setelan khusus Project. Jika Anda tidak melihat project google-cloud-serverless-app tercantum, cukup lakukan satu percakapan, lalu kembali ke Setelan Project.
Tetapkan Agent Settings / Security Preset ke Default dan Agent Behaviour / Artifact Review Policy ke Always Ask, seperti yang ditunjukkan di bawah:

Hal ini akan memastikan bahwa di setiap langkah, Anda akan dapat meninjau dan menyetujui rencana sebelum agen menjalankan.
Perintah
Sekarang, kita siap memberikan perintah pertama kita ke Antigravity. Kita akan menggunakan perintah garis miring /grill-me untuk mengevaluasi permintaan kita.
Ketik /grill-me, lalu masukkan perintah berikut dan klik tombol kirim:
/grill-me
I want to build a serverless event-driven document processing pipeline on Google Cloud.
Architecture:
- Ingestion: Users upload files to a Cloud Storage bucket.
- Trigger: File uploads trigger a Pub/Sub message.
- Processor: A Python-based Cloud Run service receives the message, processes the file (simulated OCR), and extracts metadata.
- Storage: Stream the metadata (filename, date, tags, word_count) into a BigQuery dataset.
Perintah /grill-me mengajukan sejumlah pertanyaan lanjutan yang dapat Anda coba jawab sesuai pengetahuan Anda. Perintah ini juga menyarankan Recommended Answers dan Anda dapat menggunakannya jika mau.
Contoh menjalankan perintah /grill-me saya ditunjukkan di bawah:
How would you like the Cloud Run service to receive events from Cloud Storage and Pub/Sub?
(Recommended) Cloud Storage Pub/Sub Notification with a Pub/Sub Push Subscription (HTTP POST to Cloud Run)
How should access to the Cloud Run service endpoint be secured for Pub/Sub push requests?
Publicly accessible Cloud Run service without authentication (for prototyping/quick testing only)
How should the Python processor handle file inspection and the simulated OCR logic?
(Recommended) Download file from GCS: if plain text/utf-8, extract actual words and tags; if binary/image/PDF, simulate OCR processing (mock latency, generate synthetic text & tags, count words)
How should the processor write metadata to BigQuery and handle table/schema provisioning?
(Recommended) Use BigQuery Streaming Inserts (`insert_rows_json`) with auto-creation of the dataset and table if they do not exist
How should the Cloud Run service handle processing failures and retries from Pub/Sub?
(Recommended) Return HTTP 500 on transient errors for Pub/Sub automatic retry; return HTTP 200/204 on non-retryable errors (e.g., file not found, bad event format) to avoid poison pill loops
Which web framework would you prefer for the Python Cloud Run service?
Flask with Gunicorn: minimal, classic lightweight standard for GCP microservices
How would you like the cloud infrastructure (Bucket, Pub/Sub, Cloud Run, BigQuery) to be provisioned and deployed?
(Recommended) Provide both: automated `gcloud` CLI setup/deploy scripts for quick manual rollout AND Terraform manifests for reproducible IaC
How would you like to handle local testing and development before deploying to Google Cloud?
(Recommended) Include a local mock test suite and script (`test_local.py`) that can simulate Pub/Sub push envelopes and test processing with both mocked GCP clients and actual files
Perhatikan bahwa saya meminta Antigravity untuk menggunakan:
- Skrip gcloud CLI sederhana untuk menyediakan resource
- Notifikasi Pub/Sub Cloud Storage Native + Langganan Push Pub/Sub ke Cloud Run
- Menggunakan Flask (dengan Gunicorn) untuk framework
- Hanya menggunakan simulasi lokal dengan file teks untuk data, bukan data OCR langsung
- Menggunakan BigQuery table.insert_rows() untuk menyisipkan baris ke BigQuery
- Deployment Cloud Run yang tidak diautentikasi
dan opsi yang direkomendasikan lainnya.
Rencana Implementasi dan Daftar Tugas
Antigravity kini akan mulai bekerja dan membuat Rencana Implementasi. Antigravity akan meminta Anda meninjaunya dengan memberikan pesan yang mirip dengan pesan di bawah:

Anda dapat mengklik tombol Auxiliary Pane di jendela kanan atas dan melihat Artefak yang dihasilkan, yang saat ini hanya Rencana Implementasi.

Rencana ini menguraikan:
- Infrastruktur: Bucket GCS, Topik Pub/Sub, Set Data BigQuery.
- Prosesor: Aplikasi Python/Flask, Dockerfile, Persyaratan.
- Integrasi: Notifikasi GCS → Pub/Sub → Cloud Run.
Anda akan melihat sesuatu yang mirip dengan berikut ini. Daftar sebagian rencana implementasi di komputer kita ditunjukkan di bawah:

Baca dengan cermat. Ini adalah kesempatan Anda untuk memberikan masukan tentang implementasi. Anda dapat mengklik bagian mana pun dari rencana implementasi dan menambahkan komentar. Setelah menambahkan beberapa komentar, pastikan untuk mengirimkan perubahan yang ingin Anda lihat untuk ditinjau, terutama terkait penamaan, ID project Google Cloud, region, dll.
Setelah semuanya terlihat baik, berikan izin kepada agen untuk melanjutkan rencana implementasi dengan mengklik tombol Proceed.
4. Membuat aplikasi
Setelah rencana disetujui, Antigravity akan mulai membuat file yang diperlukan untuk aplikasi, mulai dari skrip penyediaan hingga kode aplikasi.
Antigravity akan membuat folder dan mulai membuat file yang diperlukan untuk project. Jika Anda memeriksa Artefak, Anda akan melihat beberapa file (kode sumber, file skrip, dll.) yang dibuat.

Setelah menyelesaikan pekerjaannya, Antigravity akan menyebutkannya dan membuat dokumen Panduan yang dapat Anda lihat. Contoh output ditunjukkan di bawah:

Dokumen Panduan menyebutkan apa yang telah diimplementasikan, skrip yang dihasilkan, dan yang paling penting, verifikasi dan validasi yang telah dilakukan. Output sebagian dokumen Panduan yang mencakup verifikasi dan validasi ditunjukkan di bawah:
3. Verification & Validation
Test Suite Execution
We ran the automated test suite using pytest:
bash
.venv/bin/pytest tests/ -v
tests/test_local.py::test_health_check PASSED [ 9%]
tests/test_local.py::test_invalid_pubsub_envelope PASSED [ 18%]
tests/test_local.py::test_ignore_delete_events PASSED [ 27%]
tests/test_local.py::test_gcs_file_not_found PASSED [ 36%]
tests/test_local.py::test_successful_contract_processing PASSED [ 45%]
tests/test_local.py::test_successful_pdf_ocr_processing PASSED [ 54%]
tests/test_local.py::test_transient_bq_error_triggers_500_retry PASSED [ 63%]
tests/test_processor.py::test_tag_extraction_filters_stopwords PASSED [ 72%]
tests/test_processor.py::test_process_plain_text_document PASSED [ 81%]
tests/test_processor.py::test_process_binary_pdf_simulated_ocr PASSED [ 90%]
tests/test_processor.py::test_process_empty_text_document PASSED [100%]
============================== 11 passed in 2.37s ==============================
Standalone End-to-End Simulation
We executed the standalone simulation script:
bash
.venv/bin/python tests/test_local.py
Sample Output:
=================================================================
Running Serverless Document Processing Local Simulation
=================================================================
[1] Health Check: Status=200, Payload={'service': 'document-processor', 'status': 'healthy'}
[2] Simulating GCS Event: Object Finalized 'sample_contract.txt' in 'finance-bucket'
Response: Status=200, Body={'file_name': 'sample_contract.txt', 'ocr_status': 'EXTRACTED_TEXT', 'status': 'success', 'tags': ['provider', 'cloud', 'client', 'agreement', 'shall'], 'word_count': 181}
[3] Simulating GCS Event: Object Finalized 'sample_invoice.pdf' in 'invoices-bucket'
Response: Status=200, Body={'file_name': 'sample_invoice.pdf', 'ocr_status': 'SIMULATED_OCR', 'status': 'success', 'tags': ['invoice', 'finance', 'billing', 'acme', 'pdf'], 'word_count': 62}
=================================================================
BigQuery Streamed Table Inspection (Mock Table)
=================================================================
Row #1:
File: sample_contract.txt (gs://finance-bucket)
Status: EXTRACTED_TEXT
Words: 181
Tags: ['provider', 'cloud', 'client', 'agreement', 'shall']
Processed: 2026-09-08T02:50:37.436225+00:00
Row #2:
File: sample_invoice.pdf (gs://invoices-bucket)
Status: SIMULATED_OCR
Words: 62
Tags: ['invoice', 'finance', 'billing', 'acme', 'pdf']
Processed: 2026-09-08T02:50:37.641931+00:00
Dapatkah kita bertanya kepada Antigravity cara men-deploy aplikasi ini ke Google Cloud? Antigravity akan memberikan detail lengkap yang sama seperti yang tercantum di bawah. Singkatnya, Antigravity meminta kita untuk memastikan bahwa Google Cloud SDK telah diinstal bersama dengan penyiapan project cloud Google. Setelah selesai,
Langkah 1: Aktifkan GCP API yang diperlukan
Jalankan setup_gcp.sh untuk mengaktifkan Cloud Run, Pub/Sub, Cloud Storage, BigQuery, dan Cloud Build API: ./scripts/setup_gcp.sh
Langkah 2: Deploy seluruh pipeline
Jalankan deploy.sh:
export GCP_PROJECT="<YOUR_PROJECT_ID>"
export GCP_REGION="us-central1" # or your region
./scripts/deploy.sh
Yang dilakukan skrip ini di balik layar:
- Membangun image container menggunakan Google Cloud Build dan mengirimkannya ke Container/Artifact Registry.
- Men-deploy layanan ke Cloud Run dengan variabel lingkungan yang sesuai (
GCP_PROJECT,BQ_DATASET_ID,BQ_TABLE_ID). - Membuat bucket penyerapan Cloud Storage (
gs://<PROJECT_ID>-document-ingest). - Membuat topik Pub/Sub (
document-upload-events) dan memberikan izin GCS untuk memublikasikannya. - Mengonfigurasi notifikasi GCS (
OBJECT_FINALIZE) di bucket. - Membuat Langganan Push Pub/Sub yang menargetkan URL layanan Cloud Run dengan backoff coba lagi otomatis.
Antigravity juga menyarankan cara menguji pipeline.
Jalankan test_pipeline.sh: ./scripts/test_pipeline.sh
Tindakan ini akan mengupload samples/sample_contract.txt dan samples/sample_invoice.pdf ke bucket Anda, menunggu pemrosesan, dan menjalankan kueri SQL BigQuery yang menampilkan metadata, jumlah kata, dan tag yang diekstrak.
5. Men-deploy aplikasi
Mari kita deploy aplikasi seperti yang disebutkan. Kita dapat meminta Antigravity untuk menjalankannya, tetapi sebelum melakukannya, pastikan gcloud CLI ada dan dikonfigurasi untuk Project Google Cloud.
Kita dapat memberikan perintah ke Antigravity "Deploy the application for me". Tindakan ini akan meminta berbagai izin kepada Anda, lalu melanjutkan dengan menjalankan file skrip.
Proses ini dimulai sebagai tugas latar belakang, seperti yang dijelaskan oleh pesan di bawah:
I have initiated the deployment of the document processing pipeline to Google Cloud project PROJECT_ID in REGION.The deployment process is currently executing in the background:
Building and publishing the container image via Cloud Build.
Configuring service account IAM permissions and deploying the Cloud Run service.
Provisioning the Cloud Storage bucket (gs://PROJECT_ID-document-ingest).
Setting up the Pub/Sub topic, GCS notification, and push subscription.
I will notify you as soon as the deployment finishes!
6. Memverifikasi aplikasi
Setelah pipeline di-deploy, Antigravity akan memverifikasi bahwa aplikasi benar-benar berfungsi. Antigravity akan bertanya apakah dapat menjalankan file test_pipeline.sh. Kita dapat memberikan izin.
Antigravity akan memberi tahu kita hal berikut:
🚀 Deployment Successful & Verified on Google Cloud!
The application has been deployed to Google Cloud project PROJECT_ID in REGION and end-to-end event-driven processing has been verified.
Antigravity juga telah memperbarui artefak Panduan untuk melihat hasilnya (daftar sebagian diberikan di bawah):
Ringkasan Deployment
- Project GCP: PROJECT_ID
- Region: REGION
- Layanan Cloud Run: document-processor
- Endpoint Cloud Run: SERVICE_URL
- Bucket Cloud Storage: gs://PROJECT_ID-document-ingest
- Topik Pub/Sub: document-upload-events
- Langganan Push Pub/Sub: document-upload-events-push-sub
- Target BigQuery: PROJECT_ID.document_processing.document_metadata
Verifikasi Pipeline Langsung
Kita menjalankan scripts/test_pipeline.sh terhadap lingkungan Google Cloud langsung:
- Mengupload sample_contract.txt dan sample_invoice.pdf ke bucket Cloud Storage.
- GCS membuat peristiwa OBJECT_FINALIZE ke Pub/Sub.
- Pub/Sub mengirim amplop ke microservice Cloud Run.
- Cloud Run mengekstrak metadata, memproses OCR yang disimulasikan, dan melakukan streaming data ke BigQuery.
Output Kueri BigQuery Langsung
+------------------------------+------------+----------------+---------------------------------------------------+---------------------+
| file_name | word_count | ocr_status | tags | processed_at |
+------------------------------+------------+----------------+---------------------------------------------------+---------------------+
| test_invoice_1788840194.pdf | 62 | SIMULATED_OCR | ["invoice","finance","billing","acme","pdf"] | 2026-09-08 04:03:27 |
| test_contract_1788840194.txt | 181 | EXTRACTED_TEXT | ["provider","cloud","client","agreement","shall"] | 2026-09-08 04:03:22 |
+------------------------------+------------+----------------+---------------------------------------------------+---------------------+
Semua komponen pipeline aktif, berfungsi dengan baik, dan diverifikasi dalam produksi.
Opsional: Verifikasi manual
Meskipun Antigravity telah memverifikasi aplikasi, Anda juga dapat memeriksa secara manual di konsol Google Cloud bahwa semua resource telah dibuat, jika Anda mau, dengan mengikuti langkah-langkah berikut.
Cloud Storage
Tujuan: Memverifikasi keberadaan bucket dan memeriksa file yang diupload.
- Buka Cloud Storage > Buckets.
- Temukan bucket bernama
PROJECT_ID-document-processing. - Klik nama bucket untuk menjelajahi file.
- Verifikasi: Anda akan melihat file yang diupload (misalnya,
sample_contract.txt).
Pub/Sub
Tujuan: Mengonfirmasi keberadaan topik dan memiliki langganan push.
- Buka Pub/Sub > Topics.
- Temukan document-uploads-events.
- Klik topic ID.
- Scroll ke bawah ke tab Subscriptions.
- Verifikasi: Pastikan doc-uploads-events-push-sub tercantum.
Cloud Run
Tujuan: Memeriksa status dan log layanan.
- Buka Cloud Run.
- Klik layanan document-processor.
- Verifikasi:
- Kesehatan: Tanda centang hijau yang menunjukkan layanan aktif.
- Log: Klik tab Logs. Cari entri seperti "Processing document: gs://..." dan "Successfully streamed metadata...".
BigQuery
Tujuan: Memvalidasi bahwa data benar-benar disimpan.
- Buka BigQuery > SQL Workspace.
- Di panel Explorer, luaskan set data project > document_processing.
- Klik tabel document_metadata.
- Klik tab Query dan ambil semua baris dari tabel melalui pernyataan SELECT *.
- Verifikasi: Anda akan melihat baris yang berisi file_name, process_at, tags, dan word_count.
7. Menjelajahi aplikasi
Pada tahap ini, Anda telah menyediakan dan menjalankan aplikasi dasar. Sebelum membahas cara memperluas aplikasi ini lebih lanjut, luangkan waktu untuk menjelajahi kode. Anda dapat melihat Artefak dan artefak tersebut akan menampilkan file kode yang dihasilkan.
Berikut ringkasan singkat beberapa file yang mungkin Anda lihat:
deploy.sh: Skrip utama yang menyediakan semua resource Google Cloud dan mengaktifkan API yang diperlukan.main.py: Titik entri utama pipeline. Aplikasi Python ini membuat server web yang menerima pesan push Pub/Sub, mendownload file dari GCS, "memprosesnya" (mensimulasikan OCR), dan melakukan streaming metadata ke BigQuery.Dockerfile: Menentukan cara mengemas aplikasi ke dalam image container.requirements.txt: Mencantumkan dependensi Python.
Anda mungkin juga melihat skrip dan file teks lain yang diperlukan untuk pengujian dan verifikasi.
8. Memperluas aplikasi
Setelah memiliki aplikasi dasar yang berfungsi, Anda dapat terus melakukan iterasi dan memperluas aplikasi. Berikut beberapa ide.
Menambahkan frontend
Buat antarmuka web sederhana untuk melihat dokumen yang diproses.
Coba perintah berikut: Create a simple Streamlit or Flask web application that connects to BigQuery. It should display a table of the processed documents (filename, upload_date, tags, word_count) and allow me to filter the results by tag
Berintegrasi dengan AI/ML yang sebenarnya
Daripada pemrosesan OCR yang disimulasikan, gunakan model Gemini untuk mengekstrak, mengklasifikasikan, dan menerjemahkan.
- Ganti logika OCR dummy. Kirim gambar/PDF ke Gemini untuk mengekstrak teks dan data sebenarnya. Analisis teks yang diekstrak untuk mengklasifikasikan jenis dokumen (invoice, kontrak, resume) atau mengekstrak entity (tanggal, nama, lokasi).
- Otomatis mendeteksi bahasa dokumen dan menerjemahkannya ke bahasa Inggris sebelum menyimpannya. Anda juga dapat menggunakan bahasa lain.
Meningkatkan penyimpanan &analisis
Anda dapat mengonfigurasi aturan siklus proses di bucket untuk memindahkan file lama ke penyimpanan "Coldline" atau "Archive" guna menghemat biaya.
Ketahanan &Keamanan
Anda dapat membuat aplikasi lebih tangguh dan aman, seperti:
- Dead Letter Queues (DLQ): Perbarui langganan Pub/Sub untuk menangani kegagalan. Jika layanan Cloud Run gagal memproses file 5 kali, kirim pesan ke topik/bucket "Dead Letter" terpisah untuk pemeriksaan manusia.
- Secret Manager: Jika aplikasi Anda memerlukan kunci API atau konfigurasi sensitif, simpan di Secret Manager dan akses secara aman dari Cloud Run, bukan string hardcode.
- Eventarc: Upgrade dari Pub/Sub langsung ke Eventarc untuk perutean peristiwa yang lebih fleksibel, sehingga Anda dapat memicu berdasarkan log audit yang kompleks atau peristiwa layanan GCP lainnya.
Tentu saja, Anda dapat membuat ide sendiri dan menggunakan Antigravity untuk membantu Anda mengimplementasikannya.
9. Kesimpulan
Anda telah berhasil membangun pipeline dokumen yang skalabel, tanpa server, dan didukung AI dalam hitungan menit menggunakan Google Antigravity. Anda telah mempelajari cara:
- Merencanakan arsitektur dengan AI.
- Memberi petunjuk dan mengelola Antigravity saat Antigravity bekerja melalui pembuatan aplikasi, mulai dari pembuatan kode hingga deployment dan validasi.
- Memverifikasi deployment dan validasi dengan Panduan.
Dokumen referensi
- Situs Resmi : https://antigravity.google/
- Dokumentasi: https://antigravity.google/docs
- Kasus penggunaan : https://antigravity.google/use-cases
- Download : https://antigravity.google/download