Compiler et déployer sur Google Cloud avec Antigravity

1. Introduction

fca14bb9f4bb74f4.png

Dans cet atelier de programmation, vous allez apprendre à utiliser Google Antigravity (appelé Antigravity dans le reste du document) pour concevoir, créer et déployer une application sans serveur sur Google Cloud. Nous allons créer un pipeline de documents sans serveur et basé sur les événements qui ingère des fichiers depuis Google Cloud Storage (GCS), les traite à l'aide de Cloud Run et de Gemini, et diffuse leurs métadonnées dans BigQuery.

Points abordés

  • Utiliser Antigravity pour la planification et la conception architecturales.
  • Générez une infrastructure en tant que code (scripts shell) avec un agent d'IA.
  • Créez et déployez un service Cloud Run basé sur Python.
  • Intégrez Gemini sur Vertex AI pour l'analyse multimodale de documents.
  • Vérifiez le pipeline de bout en bout à l'aide de l'artefact "Walkthrough" d'Antigravity.

Prérequis

2. Présentation de l'application

Avant de nous lancer dans l'architecture et l'implémentation de l'application à l'aide d'Antigravity, commençons par définir l'application que nous souhaitons créer pour nous-mêmes.

Nous souhaitons créer un pipeline de documents sans serveur et axé sur les événements qui ingère des fichiers depuis Google Cloud Storage (GCS), les traite à l'aide de Cloud Run et de Gemini, et diffuse leurs métadonnées dans BigQuery.

Voici un exemple de diagramme d'architecture de haut niveau pour cette application :

3bd519cfab38258d.png

Il n'a pas besoin d'être précis. Antigravity peut nous aider à déterminer les détails de l'architecture au fur et à mesure. Toutefois, il est utile d'avoir une idée de ce que vous voulez créer. Plus vous fournirez de détails, meilleurs seront les résultats d'Antigravity en termes d'architecture et de code.

3. Planifier l'architecture

Nous sommes prêts à commencer à planifier les détails de l'architecture avec Antigravity.

Antigravity excelle dans la planification de systèmes complexes. Au lieu d'écrire du code immédiatement, nous pouvons commencer par définir l'architecture de haut niveau.

Tout d'abord, assurez-vous d'être dans le Gestionnaire d'agents. Si vous venez d'ouvrir Antigravity, vous pouvez cliquer sur le bouton Open Agent Manager au centre ou sur le même bouton Open Agent Manager en haut à droite.

Dans l'Agent Manager, vous pouvez ouvrir un espace de travail ou simplement utiliser le Playground, un espace de travail indépendant pour les prototypes rapides et les tests. Commençons par le bac à sable.

Cliquez sur le bouton + pour démarrer une nouvelle conversation dans l'atelier :

4e33c028a604a375.png

Une interface s'affiche, dans laquelle vous pouvez saisir la requête, comme illustré ci-dessous :

fbf023e84f0eb3b2.png

En haut à droite, cliquez sur l'icône Paramètres ⚙️, puis définissez Review Policy sous Artifact et Terminal Command Auto Execution sous Terminal sur Request Review. Vous pourrez ainsi examiner et approuver le plan à chaque étape avant que l'agent ne l'exécute.

Prompt

Nous sommes maintenant prêts à fournir notre première invite à Antigravity.

Tout d'abord, assurez-vous que l'Antigravity est en mode Planning. Pour le modèle, choisissons le modèle Gemini Pro (High) (mais n'hésitez pas à en tester d'autres).

Saisissez la requête suivante et cliquez sur le bouton "Envoyer" :

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. 

Liste de tâches et plan de mise en œuvre

Antigravity analysera votre demande et générera une liste de tâches et un plan d'implémentation.

Ce plan décrit :

  • Infrastructure : bucket GCS, thème Pub/Sub, ensemble de données BigQuery.
  • Processeur : application Python/Flask, Dockerfile, exigences.
  • Intégration : notifications GCS → Pub/Sub → Cloud Run.

Le résultat qui s'affiche doit ressembler à ceci :

ada19341c490a570.png

Cliquez sur le bouton Open à côté de la ligne Task. Vous devriez voir un ensemble de tâches créées par Antigravity. L'agent les examinera un par un :

19675c55a71b373.png

L'étape suivante consiste à examiner le plan d'implémentation et à autoriser l'agent à poursuivre.

Cliquez sur le plan d'implémentation pour afficher ses détails. Lisez-le attentivement. C'est l'occasion de nous faire part de vos commentaires sur l'implémentation. Vous pouvez cliquer sur n'importe quelle partie du plan d'implémentation et ajouter des commentaires. Une fois que vous avez ajouté des commentaires, veillez à envoyer pour examen toutes les modifications que vous souhaitez voir apportées, en particulier concernant le nom, l'ID du projet Google Cloud, la région, etc.

Une fois que tout semble correct, autorisez l'agent à poursuivre le plan d'implémentation en cliquant sur le bouton Proceed.

4. Générer l'application

Une fois le plan approuvé, Antigravity commence à générer les fichiers requis pour l'application, des scripts de provisionnement au code de l'application.

Antigravity crée un dossier et commence à créer les fichiers nécessaires au projet. Dans notre exemple d'exécution, nous avons obtenu les résultats suivants :

4d98413e3bd17148.png

Un fichier de script shell setup.sh ou portant un nom similaire est généré pour automatiser la création de ressources. Ce qu'elle gère :

  1. Activation des API (run, pubsub, bigquery, storage).
  2. Créez le bucket Google Cloud Storage (doc-ingestion-{project-id}).
  3. Créer l'ensemble de données et la table BigQuery (pipeline_data.processed_docs).
  4. Configurer les sujets et les notifications Pub/Sub

L'agent doit générer une application Python (main.py) qui écoute les messages push Pub/Sub. Il utilise une logique OCR simulée, générant des nombres de mots et des tags aléatoires, et les conservant dans BigQuery.

Une fois ce script de configuration généré, Antigravity devrait vous inviter à l'exécuter en votre nom. Voici un exemple d'écran :

44395ab66413a64f.png

Cliquez sur Accept si nécessaire.

Le script de provisionnement créera les ressources et validera leur création. Si la vérification réussit, le conteneur est créé et déployé en tant que service (dans main.py) dans Cloud Run. Voici un exemple de résultat :

e0e625e218e7fe46.png

Lors du déploiement du service, des abonnements Pub/Sub et d'autres éléments de liaison nécessaires au fonctionnement de ce pipeline seront également configurés. Cela ne devrait prendre que quelques minutes.

En attendant, vous pouvez passer à Inbox (en haut à gauche) et consulter les tâches Pending qui attendent votre saisie :

ddd2f49d02fad987.png

C'est un bon moyen de vous assurer que vous approuvez les tâches lorsque l'agent vous demande votre avis.

5. Valider l'application

Une fois le pipeline déployé, Antigravity vérifie que l'application fonctionne correctement. Antigravity automatise ce processus grâce à des étapes de validation dans la liste des tâches. Voici un exemple d'écran :

b8758b77880cc4d9.png

Il crée un artefact de test (test.txt) et souhaite l'importer dans un bucket Google Cloud Storage. Cliquez sur Accept pour continuer.

Si vous souhaitez effectuer d'autres tests vous-même, vous pouvez vous inspirer de l'étape de validation d'Antigravity, qui utilise l'utilitaire gsutil pour importer un exemple de fichier dans le bucket Cloud Storage. Voici un exemple de commande :

gsutil cp <some-test-doc>.txt gs://<bucket-name>/

Vérifier les résultats dans BigQuery

Au cours du processus de validation, il vérifiera également que les données ont été conservées dans BigQuery.

c0f08fedf671e9bd.png

Notez la requête SQL utilisée pour rechercher les documents.

Une fois la validation effectuée, la liste des tâches doit être marquée comme terminée :

b55ad48a87f95eca.png

(Facultatif) Validation manuelle

Même si Antigravity a déjà vérifié l'application, vous pouvez également vérifier manuellement dans la console Google Cloud que toutes les ressources ont été créées, si vous le souhaitez, en suivant ces étapes.

Cloud Storage

Objectif : Vérifier que le bucket existe et rechercher les fichiers importés.

  1. Accédez à Cloud Storage > Buckets.
  2. Recherchez le bucket nommé [PROJECT_ID]-doc-uploads.
  3. Cliquez sur le nom du bucket pour parcourir les fichiers.
  4. Vérifiez que les fichiers que vous avez importés s'affichent (par exemple, test.txt).

Pub/Sub

Objectif : Vérifiez que le sujet existe et qu'il dispose d'un abonnement push.

  1. Accédez à Pub/Sub > Sujets.
  2. Recherchez doc-processing-topic.
  3. Cliquez sur l'ID du sujet.
  4. Faites défiler la page jusqu'à l'onglet Abonnements.
  5. Vérifiez que doc-processing-sub est listé avec le type de distribution Push.

Cloud Run

Objectif : Vérifiez l'état et les journaux du service.

  1. Accédez à Cloud Run.
  2. Cliquez sur le service doc-processor.
  3. Valider :
  4. État : coche verte indiquant que le service est actif.
  5. Journaux : cliquez sur l'onglet "Journaux". Recherchez des entrées telles que Processing file: gs://... (Traitement du fichier : gs://...) et Successfully processed... (Traitement réussi...).

BigQuery

Objectif : valider que les données sont réellement stockées.

  1. Accédez à BigQuery > Espace de travail SQL.
  2. Dans le volet "Explorateur", développez projet > ensemble de données pipeline_data.
  3. Cliquez sur la table processed_docs.
  4. Cliquez sur l'onglet Aperçu.
  5. Vérification : vous devriez voir des lignes contenant filename, upload_date, tags et word_count.

Tutoriel

Enfin, Antigravity génère un artefact de procédure pas à pas. Cet artefact résume :

  • Modifications apportées.
  • Les commandes de validation sont exécutées.
  • Résultats réels (résultat de la requête affichant les métadonnées extraites par Gemini).

Pour l'afficher, cliquez sur Open. Voici un exemple de résultat :

47ecf561d0252924.png

6. Explorer l'application

À ce stade, l'application de base est provisionnée et en cours d'exécution. Avant de vous lancer dans l'extension de cette application, prenez le temps d'explorer le code. Vous pouvez passer à l'éditeur en cliquant sur le bouton Open Editor en haut à droite.

Voici un bref récapitulatif des fichiers que vous pouvez voir :

  1. setup.sh : script principal qui provisionne toutes les ressources Google Cloud et active les API requises.
  2. main.py : point d'entrée principal du pipeline. Cette application Python crée un serveur Web qui reçoit les messages push Pub/Sub, télécharge le fichier depuis GCS, le "traite" (simule l'OCR) et transmet les métadonnées à BigQuery.
  3. Dockerfile : définit la manière d'empaqueter l'application dans une image de conteneur.
  4. requirements.txt : liste les dépendances Python.

Vous pouvez également voir d'autres scripts et fichiers texte nécessaires aux tests et à la validation.

À ce stade, vous pouvez également passer de la simulation à un espace de travail ou un dossier dédié. Pour ce faire, cliquez sur le bouton correspondant en haut à droite :

278de21c89e5c726.png

Une fois que vous avez choisi un dossier, tout le code y est déplacé et un nouvel espace de travail est créé avec le dossier et l'historique des conversations.

7. Étendre l'application

Maintenant que vous disposez d'une application de base fonctionnelle, vous pouvez continuer à l'itérer et à l'étendre. Voici quelques idées :

Ajouter une interface

Créez une interface Web simple pour afficher les documents traités.

Essayez le prompt suivant : 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

Intégration à l'IA/au ML réels

Au lieu d'un traitement OCR simulé, utilisez les modèles Gemini pour extraire, classer et traduire.

  1. Remplacez la logique OCR factice. Envoyez l'image ou le PDF à Gemini pour extraire le texte et les données réels. Analysez le texte extrait pour classer le type de document (facture, contrat, CV) ou extraire des entités (dates, noms, lieux).
  2. Détecter automatiquement la langue du document et le traduire en anglais avant de le stocker. Vous pouvez également utiliser n'importe quelle autre langue.

Améliorer le stockage et les analyses

Vous pouvez configurer des règles de cycle de vie sur le bucket pour déplacer les anciens fichiers vers le stockage "Coldline" ou "Archive" afin de réduire les coûts.

Robustesse et sécurité

Vous pouvez rendre l'application plus robuste et sécurisée, par exemple :

  1. Files d'attente de lettres mortes (DLQ) : mettez à jour l'abonnement Pub/Sub pour gérer les échecs. Si le service Cloud Run ne parvient pas à traiter un fichier cinq fois, envoyez le message vers un sujet/bucket "Dead Letter" distinct pour une inspection manuelle.
  2. Secret Manager : si votre application a besoin de clés API ou d'une configuration sensible, stockez-les dans Secret Manager et accédez-y de manière sécurisée depuis Cloud Run au lieu de coder en dur des chaînes.
  3. Eventarc : passez d'un envoi direct Pub/Sub à Eventarc pour un routage d'événements plus flexible. Vous pourrez ainsi déclencher des actions en fonction de journaux d'audit complexes ou d'autres événements de services GCP.

Bien sûr, vous pouvez trouver vos propres idées et utiliser Antigravity pour vous aider à les mettre en œuvre !

8. Conclusion

Vous avez créé un pipeline de documents évolutif, sans serveur et optimisé par l'IA en quelques minutes à l'aide de Google Antigravity. Vous avez appris à :

  • Planifiez des architectures avec l'IA.
  • Donnez des instructions à Antigravity et gérez-le pendant qu'il génère l'application, de la génération de code au déploiement et à la validation.
  • Vérifiez les déploiements et la validation à l'aide de tutoriels.

Documents de référence