Xây dựng và triển khai lên Google Cloud bằng Antigravity

1. Giới thiệu

fca14bb9f4bb74f4.png

Trong lớp học lập trình này, bạn sẽ tìm hiểu cách sử dụng Google Antigravity để thiết kế, xây dựng và triển khai một ứng dụng không máy chủ lên Google Cloud. Chúng ta sẽ xây dựng một quy trình xử lý tài liệu không máy chủ và dựa trên sự kiện, quy trình này sẽ nhập tệp từ Google Cloud Storage (GCS), xử lý các tệp đó bằng Cloud Run và Gemini, đồng thời truyền siêu dữ liệu của các tệp đó vào BigQuery.

Kiến thức bạn sẽ học được

  • Cách sử dụng Antigravity để lập kế hoạch và thiết kế kiến trúc.
  • Tạo cơ sở hạ tầng dưới dạng mã (tập lệnh shell) bằng một tác nhân AI.
  • Xây dựng và triển khai một dịch vụ Cloud Run dựa trên Python.
  • Tích hợp Gemini trên Vertex AI để phân tích tài liệu đa phương thức.
  • Xác minh quy trình hai đầu bằng cấu phần phần mềm Hướng dẫn từng bước của Antigravity.

Bạn cần có

2. Tổng quan về ứng dụng

Trước khi bắt đầu thiết kế và triển khai ứng dụng bằng Antigravity, trước tiên, hãy phác thảo ứng dụng mà chúng ta muốn tự xây dựng.

Chúng ta muốn xây dựng một quy trình xử lý tài liệu không máy chủ và dựa trên sự kiện, quy trình này sẽ nhập tệp từ Google Cloud Storage (GCS), xử lý các tệp đó bằng Cloud Run và Gemini, đồng thời truyền siêu dữ liệu của các tệp đó vào BigQuery.

Sơ đồ kiến trúc cấp cao cho ứng dụng này có thể trông như sau:

3bd519cfab38258d.png

Không cần phải chính xác. Antigravity có thể giúp chúng ta tìm ra thông tin chi tiết về kiến trúc khi chúng ta thực hiện. Tuy nhiên, bạn nên có ý tưởng về những gì bạn muốn xây dựng. Bạn càng cung cấp nhiều thông tin chi tiết thì bạn càng nhận được kết quả tốt hơn từ Antigravity về kiến trúc và mã.

3. Lập kế hoạch kiến trúc

Chúng ta đã sẵn sàng bắt đầu lập kế hoạch chi tiết về kiến trúc bằng Antigravity!

Antigravity vượt trội trong việc lập kế hoạch cho các hệ thống phức tạp. Thay vì viết mã ngay lập tức, chúng ta có thể bắt đầu bằng cách xác định kiến trúc cấp cao.

Trước tiên, hãy đảm bảo rằng bạn đang ở trong Trình quản lý tác nhân. Nếu bạn vừa mở Antigravity, bạn có thể nhấp vào nút Open Agent Manager ở giữa hoặc bạn cũng sẽ thấy nút Open Agent Manager tương tự ở góc trên cùng bên phải.

Trước tiên, hãy tạo một thư mục cho ứng dụng, chẳng hạn như document-pipeline, rồi thêm thư mục đó làm không gian làm việc trong Trình quản lý tác nhân:

6df2bebcee5608b7.png

Trong Trình quản lý tác nhân, hãy bắt đầu cuộc trò chuyện trong không gian làm việc document-pipeline. Đảm bảo rằng bạn cũng đã bật chế độ Lập kế hoạch:

b7d18b5ec36004cf.png

Ở góc trên cùng bên phải, hãy nhấp vào biểu tượng cài đặt ⚙️ rồi đặt Review Policy trong phần Artifact thành Asks for ReviewTerminal Command Auto Execution trong phần Terminal thành Request Review. Điều này sẽ đảm bảo rằng ở mỗi bước, bạn sẽ xem xét và phê duyệt kế hoạch trước khi tác nhân thực thi.

Câu lệnh

Giờ đây, chúng ta đã sẵn sàng cung cấp câu lệnh đầu tiên cho Antigravity.

Trước tiên, hãy kiểm tra kỹ để đảm bảo rằng Antigravity đang ở chế độ Plan (Lập kế hoạch) và đối với mô hình, hãy chọn mô hình Gemini Pro (High) (nhưng bạn có thể thử nghiệm với các mô hình khác).

Nhập câu lệnh sau rồi nhấp vào nút gửi:

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. 

Danh sách việc cần làm và kế hoạch triển khai

Antigravity sẽ phân tích yêu cầu của bạn và tạo danh sách Việc cần làmKế hoạch triển khai.

Kế hoạch này phác thảo:

  • Cơ sở hạ tầng: Bộ chứa GCS, Chủ đề Pub/Sub, Tập dữ liệu BigQuery.
  • Bộ xử lý: Ứng dụng Python/Flask, Dockerfile, Yêu cầu.
  • Tích hợp: Thông báo GCS → Pub/Sub → Cloud Run.

Bạn sẽ thấy nội dung tương tự như sau:

ada19341c490a570.png

Nhấp vào nút Open (Mở) bên cạnh hàng Task (Việc cần làm). Thao tác này sẽ cho bạn thấy một tập hợp các việc cần làm do Antigravity tạo. Tác nhân sẽ lần lượt thực hiện từng việc:

19675c55a71b373.png

Bước tiếp theo là xem xét kế hoạch triển khai và cấp quyền cho tác nhân tiếp tục.

Nhấp vào kế hoạch triển khai để xem thông tin chi tiết. Đọc kỹ. Đây là cơ hội để bạn đưa ra ý kiến phản hồi về việc triển khai. Bạn có thể nhấp vào bất kỳ phần nào của kế hoạch triển khai và thêm nhận xét. Sau khi thêm một số nhận xét, hãy nhớ gửi mọi thay đổi mà bạn muốn xem xét, đặc biệt là về việc đặt tên, mã dự án Google Cloud, khu vực, v.v.

Sau khi mọi thứ đều ổn, hãy cấp quyền cho tác nhân tiếp tục với kế hoạch triển khai bằng cách nhấp vào nút Proceed (Tiến hành).

4. Tạo ứng dụng

Sau khi kế hoạch được phê duyệt, Antigravity sẽ bắt đầu tạo các tệp cần thiết cho ứng dụng, từ tập lệnh cung cấp đến mã xử lý ứng dụng.

Antigravity sẽ tạo một thư mục và bắt đầu tạo các tệp cần thiết cho dự án. Trong lần chạy mẫu, chúng ta thấy như sau:

4d98413e3bd17148.png

Một tệp setup.sh hoặc tệp tập lệnh shell có tên tương tự sẽ được tạo, tự động hoá quá trình tạo tài nguyên. Tệp này xử lý:

  1. Bật API (run, pubsub, bigquery, storage).
  2. Tạo bộ chứa Google Cloud Storage (doc-ingestion-{project-id}).
  3. Tạo tập dữ liệu và bảng BigQuery (pipeline_data.processed_docs).
  4. Định cấu hình chủ đề và thông báo Pub/Sub.

Tác nhân sẽ tạo một ứng dụng Python (main.py) để nghe các thông báo đẩy Pub/Sub. Ứng dụng này sử dụng logic OCR mô phỏng, tạo số lượng từ và thẻ ngẫu nhiên, đồng thời lưu trữ dữ liệu đó vào BigQuery.

Sau khi tập lệnh thiết lập này được tạo, Antigravity sẽ nhắc bạn thực thi tập lệnh thay cho bạn. Dưới đây là màn hình mẫu:

44395ab66413a64f.png

Hãy nhấp vào Accept (Chấp nhận) khi cần.

Tập lệnh cung cấp sẽ tạo các tài nguyên và xác thực rằng các tài nguyên đó đã được tạo. Sau khi kiểm tra thành công, tập lệnh này sẽ chuyển sang xây dựng vùng chứa và triển khai vùng chứa đó dưới dạng dịch vụ (trong main.py) trong Cloud Run. Dưới đây là kết quả mẫu:

e0e625e218e7fe46.png

Trong quá trình triển khai dịch vụ, tập lệnh này cũng sẽ thiết lập gói thuê bao Pub/Sub và các thành phần khác cần thiết để quy trình này hoạt động. Tất cả quá trình này sẽ mất vài phút.

Trong thời gian chờ đợi, bạn có thể chuyển sang Inbox (Hộp thư đến) (ở góc trên cùng bên trái), kiểm tra các việc cần làm Pending (Đang chờ xử lý) đang chờ bạn nhập dữ liệu:

ddd2f49d02fad987.png

Đây là một cách hay để đảm bảo rằng bạn đang phê duyệt các việc cần làm khi tác nhân yêu cầu ý kiến phản hồi của bạn.

5. Xác minh ứng dụng

Sau khi triển khai quy trình, Antigravity sẽ tiến hành xác minh rằng ứng dụng thực sự hoạt động. Antigravity tự động hoá quá trình này bằng các bước xác minh trong danh sách việc cần làm. Dưới đây là màn hình mẫu:

b8758b77880cc4d9.png

Ứng dụng này tạo một cấu phần phần mềm kiểm thử (test.txt) và muốn tải cấu phần phần mềm đó lên bộ chứa Google Cloud Storage. Nhấp vào Accept (Chấp nhận) để tiếp tục.

Nếu muốn tự chạy thêm các bài kiểm thử, bạn có thể thử tải một tệp mẫu lên bộ chứa Cloud Storage:

gcloud storage cp <some-test-doc>.txt gs://doc-ingestion-{project-id}/

Kiểm tra kết quả trong BigQuery

Trong quá trình xác minh, ứng dụng này cũng sẽ kiểm tra để đảm bảo rằng dữ liệu đã được lưu trữ trong BigQuery.

c0f08fedf671e9bd.png

Hãy lưu ý câu truy vấn SQL mà ứng dụng này đã dùng để kiểm tra tài liệu.

Sau khi xác minh xong, bạn sẽ thấy danh sách việc cần làm đã hoàn tất:

b55ad48a87f95eca.png

Không bắt buộc: Xác minh thủ công

Mặc dù Antigravity đã xác minh ứng dụng, nhưng bạn cũng có thể kiểm tra theo cách thủ công trong bảng điều khiển Google Cloud để đảm bảo rằng tất cả tài nguyên đã được tạo, nếu muốn, bằng cách làm theo các bước sau.

Cloud Storage

Mục tiêu: Xác minh rằng bộ chứa tồn tại và kiểm tra các tệp đã tải lên.

  1. Chuyển đến Cloud Storage > Buckets (Cloud Storage > Bộ chứa).
  2. Tìm bộ chứa có tên [PROJECT_ID]-doc-uploads.
  3. Nhấp vào tên bộ chứa để duyệt các tệp.
  4. Xác minh: Bạn sẽ thấy các tệp đã tải lên (ví dụ: test.txt).

Pub/Sub

Mục tiêu: Xác nhận rằng chủ đề tồn tại và có gói thuê bao đẩy.

  1. Chuyển đến Pub/Sub > Topics (Pub/Sub > Chủ đề).
  2. Tìm doc-processing-topic.
  3. Nhấp vào topic ID (mã chủ đề).
  4. Di chuyển xuống thẻ Subscriptions (Gói thuê bao).
  5. Xác minh: Đảm bảo doc-processing-sub được liệt kê với loại phân phối "Push".

Cloud Run

Mục tiêu: Kiểm tra trạng thái và nhật ký dịch vụ.

  1. Chuyển đến Cloud Run.
  2. Nhấp vào dịch vụ doc-processor.
  3. Xác minh:
  4. Tình trạng: Dấu kiểm màu xanh lục cho biết dịch vụ đang hoạt động.
  5. Nhật ký: Nhấp vào thẻ Nhật ký. Tìm các mục như "Processing file: gs://..." (Đang xử lý tệp: gs://...) và "Successfully processed..." (Đã xử lý thành công...)

BigQuery

Mục tiêu: Xác thực rằng dữ liệu thực sự được lưu trữ.

  1. Chuyển đến BigQuery > SQL Workspace (BigQuery > Không gian làm việc SQL).
  2. Trong ngăn Trình khám phá, hãy mở rộng project > pipeline_data dataset (dự án > tập dữ liệu pipeline_data).
  3. Nhấp vào bảng processed_docs.
  4. Nhấp vào thẻ Preview (Xem trước).
  5. Xác minh: Bạn sẽ thấy các hàng chứa filename (tên tệp), upload_date (ngày tải lên), tags (thẻ) và word_count (số lượng từ).

Hướng dẫn từng bước

Trong bước cuối cùng, Antigravity sẽ tạo một cấu phần phần mềm hướng dẫn từng bước. Cấu phần phần mềm này tóm tắt:

  • Các thay đổi đã thực hiện.
  • Các lệnh xác minh đã chạy.
  • Kết quả thực tế (kết quả truy vấn cho thấy siêu dữ liệu do Gemini trích xuất).

Bạn có thể nhấp vào Open (Mở) để xem. Dưới đây là kết quả mẫu:

47ecf561d0252924.png

6. Khám phá ứng dụng

Lúc này, bạn đã cung cấp và chạy ứng dụng cơ bản. Trước khi đi sâu vào việc mở rộng thêm ứng dụng này, hãy dành chút thời gian để khám phá mã. Bạn có thể chuyển sang trình chỉnh sửa bằng nút Open Editor (Mở trình chỉnh sửa) ở góc trên cùng bên phải.

Sau đây là thông tin tóm tắt nhanh về các tệp mà bạn có thể thấy:

  1. setup.sh: Tập lệnh chính cung cấp tất cả tài nguyên Google Cloud và bật các API cần thiết.
  2. main.py: Điểm truy cập chính của quy trình. Ứng dụng Python này tạo một máy chủ web nhận các thông báo đẩy Pub/Sub, tải tệp xuống từ GCS, "xử lý" (mô phỏng Nhận dạng ký tự quang học (OCR)) tệp đó và truyền siêu dữ liệu vào BigQuery.
  3. Dockerfile: Xác định cách đóng gói ứng dụng thành hình ảnh vùng chứa.
  4. requirements.txt: Liệt kê các phần phụ thuộc của Python.

Bạn cũng có thể thấy các tập lệnh và tệp văn bản khác cần thiết cho việc kiểm thử và xác minh.

7. Mở rộng ứng dụng

Giờ đây, bạn đã có một ứng dụng cơ bản hoạt động, bạn có thể tiếp tục lặp lại và mở rộng ứng dụng. Dưới đây là một số ý tưởng.

Thêm giao diện người dùng

Xây dựng một giao diện web đơn giản để xem các tài liệu đã xử lý.

Hãy thử câu lệnh sau: 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 (Tạo một ứng dụng web Streamlit hoặc Flask đơn giản kết nối với BigQuery. Ứng dụng này sẽ hiển thị một bảng các tài liệu đã xử lý (tên tệp, ngày tải lên, thẻ, số lượng từ) và cho phép tôi lọc kết quả theo thẻ)

Tích hợp với AI/ML thực

Thay vì xử lý OCR mô phỏng, hãy sử dụng các mô hình Gemini để trích xuất, phân loại và dịch.

  1. Thay thế logic OCR giả. Gửi hình ảnh/tệp PDF đến Gemini để trích xuất văn bản và dữ liệu thực. Phân tích văn bản đã trích xuất để phân loại loại tài liệu (hoá đơn, hợp đồng, sơ yếu lý lịch) hoặc trích xuất thực thể (ngày, tên, vị trí).
  2. Tự động phát hiện ngôn ngữ của tài liệu và dịch sang tiếng Anh trước khi lưu trữ. Bạn cũng có thể sử dụng bất kỳ ngôn ngữ nào khác.

Nâng cao khả năng lưu trữ và phân tích

Bạn có thể định cấu hình các quy tắc về vòng đời trên bộ chứa để chuyển các tệp cũ sang bộ nhớ "Coldline" hoặc "Archive" (Lưu trữ) nhằm tiết kiệm chi phí.

Độ ổn định và bảo mật

Bạn có thể làm cho ứng dụng ổn định và bảo mật hơn, chẳng hạn như:

  1. Hàng đợi thư không gửi được (DLQ): Cập nhật gói thuê bao Pub/Sub để xử lý lỗi. Nếu dịch vụ Cloud Run không xử lý được tệp 5 lần, hãy gửi thông báo đến một chủ đề/bộ chứa "Thư không gửi được" riêng để con người kiểm tra.
  2. Secret Manager: Nếu ứng dụng của bạn cần khoá API hoặc cấu hình nhạy cảm, hãy lưu trữ các khoá API hoặc cấu hình đó trong Secret Manager và truy cập một cách an toàn từ Cloud Run thay vì mã hoá cứng các chuỗi.
  3. Eventarc: Nâng cấp từ Pub/Sub trực tiếp lên Eventarc để có khả năng định tuyến sự kiện linh hoạt hơn, cho phép bạn kích hoạt dựa trên nhật ký kiểm tra phức tạp hoặc các sự kiện dịch vụ GCP khác.

Tất nhiên, bạn có thể đưa ra ý tưởng của riêng mình và sử dụng Antigravity để giúp bạn triển khai các ý tưởng đó!

8. Kết luận

Bạn đã xây dựng thành công một quy trình xử lý tài liệu có thể mở rộng, không máy chủ và dựa trên AI trong vài phút bằng Google Antigravity. Bạn đã tìm hiểu cách:

  • Lập kế hoạch kiến trúc bằng AI.
  • Hướng dẫn và quản lý Antigravity khi ứng dụng này tạo ứng dụng từ quá trình tạo mã đến triển khai và xác thực.
  • Xác minh quá trình triển khai và xác thực bằng Hướng dẫn từng bước.

Tài liệu tham khảo