Application Text Summarizer avec Vertex AI et Svelte Kit

1. Introduction

Dans cet atelier de programmation, je vous ai indiqué les étapes à suivre pour créer une application Web qui vous permet de résumer du texte à l'aide de l'API Vertex AI Large Language Model pour la génération de texte ( text-bison) dans un framework SvelteKit. Voici la liste des services et de la pile technologique utilisés :

  1. SvelteKit : framework d'application Web basé sur Svelte.
  2. API Vertex AI PaLM 2 : API de grand modèle de langage (LLM) qui permet d'accéder au modèle PaLM 2 de Google AI.
  3. Cloud Functions : plate-forme sans serveur permettant d'exécuter des fonctions sans avoir à gérer des serveurs.
  4. Cloud Run : plate-forme sans serveur permettant d'exécuter des applications conteneurisées.

Ce que vous allez faire

Vous allez créer

  • Une fonction Cloud Functions Python est utilisée pour effectuer l'appel de l'API PaLM.
  • Application Web Svelte pour l'interface utilisateur permettant d'interagir avec l'API Vertex AI via la fonction Cloud
  • Un service Cloud Run pour déployer l'application créée ci-dessus sans serveur

2. Conditions requises

  • Un navigateur tel que Chrome ou Firefox
  • Un projet Google Cloud avec facturation activée

3. Avant de commencer

  1. Dans la console Google Cloud, sur la page du sélecteur de projet, sélectionnez ou créez un projet Google Cloud.
  2. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
  3. Vous allez utiliser Cloud Shell, un environnement de ligne de commande exécuté dans Google Cloud, pour interagir avec les services Google Cloud. Consultez la documentation pour connaître les commandes gcloud ainsi que leur utilisation. Dans la console Cloud, cliquez sur "Activer Cloud Shell" en haut à droite :

51622c00acec2fa.png

Si votre projet n'est pas défini, utilisez la commande suivante pour le définir :

gcloud config set project <YOUR_PROJECT_ID>
  1. Assurez-vous que toutes les API nécessaires sont activées en exécutant la commande suivante depuis le terminal Cloud Shell :
gcloud services enable cloudbuild.googleapis.com \
run.googleapis.com \
cloudfunctions.googleapis.com \
aiplatform.googleapis.com
  1. Créez des variables d'environnement pour REGION et PROJECT_ID en exécutant la commande suivante depuis le terminal Cloud Shell :
export PROJECT_ID=<your project id>

export REGION=asia-south1

4. Fonction Cloud pour appeler l'API Vertex AI

Nous allons créer une fonction Cloud Python et appeler l'API Vertex AI dans cette fonction.

Créer un compte de service

Créez un compte de service en exécutant la commande suivante dans le terminal Cloud Shell.

gcloud iam service-accounts create vertex-service-acc

Pour accorder l'accès à votre projet et à vos ressources, attribuez un rôle au compte de service.

gcloud projects add-iam-policy-binding ${PROJECT_ID} --member="serviceAccount:vertex-service-acc@${PROJECT_ID}.iam.gserviceaccount.com" --role=roles/ml.developer

Attribuez à votre compte Google un rôle vous permettant d'utiliser les rôles du compte de service et d'associer le compte de service à d'autres ressources. Remplacez USER_EMAIL par l'adresse e-mail de votre compte Google.

gcloud iam service-accounts add-iam-policy-binding vertex-service-acc@${PROJECT_ID}.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

Créer la fonction Python

Le modèle PaLM 2 pour le texte est idéal pour les tâches pouvant être effectuées avec une seule réponse d'API, sans nécessiter de conversation continue. Créons maintenant la fonction Cloud.

Créez un répertoire à l'aide de Cloud Shell et accédez-y. (utilisez le même terminal que celui ouvert dans la section précédente) :

mkdir vertex-ai-functions

cd vertex-ai-functions

Créez un fichier main.py pour écrire la fonction Cloud Python et un fichier requirements.txt pour stocker les dépendances.

touch main.py requirements.txt

Ce fichier Python définit une fonction Cloud HTTP simple qui utilise un modèle de génération de texte Vertex AI pour générer de brefs résumés d'entrées de texte. La fonction prend une entrée de texte comme paramètre et renvoie un bref résumé de l'entrée. La fonction utilise différents paramètres pour contrôler le processus de génération, tels que la créativité, la diversité et la fluidité du texte généré. La fonction Cloud HTTP accepte un objet de requête et renvoie le résumé du modèle en tant que réponse.

Ouvrez l'éditeur Google Cloud. Pour l'ouvrir, ouvrez un nouvel onglet de la console Google Cloud, puis cliquez sur le bouton ACTIVER CLOUD SHELL. Lorsque le terminal se charge, cliquez rapidement sur le bouton OUVRIR L'ÉDITEUR, comme indiqué dans l'image ci-dessous :

8e501bd2c41d11b8.png

Une fois l'éditeur ouvert, vous devriez voir le fichier main.py. Remplacez son contenu par le code de ce dépôt link. L'explication du code est incluse sous forme de commentaires. En résumé, ce code permet de générer des résumés courts de saisies de texte à l'aide de Vertex AI.

Le fichier requirements.txt contient des dépendances de package : functions-framework==3.*: Garantit que la fonction utilise les dernières fonctionnalités et les derniers correctifs du framework Functions. google-cloud-aiplatform : requis pour utiliser le modèle de génération de texte Vertex AI.

Ajoutez ceci au fichier requirements.txt :

functions-framework==3.*
google-cloud-aiplatform

Déployer sur Cloud Functions

Déployons maintenant cette source dans Cloud Functions. Exécutez la commande suivante à partir du terminal Cloud Shell :

gcloud functions deploy vertex-ai-function \
--gen2 \
--runtime=python311 \
--region=${REGION} \
--source=. \
--entry-point=hello_vertex \
--trigger-http \
--allow-unauthenticated \
--max-instances=30

Utilisez la barre de recherche et accédez à la console Cloud Functions :

43a6b247098a9edb.png

La fonction Cloud vertex-ai-function que nous venons de créer s'affiche avec son URL publique sur la page de la fonction. Nous l'utilisons pour connecter notre frontend et l'API Vertex AI. Enregistrez cette URL. Vous devrez peut-être également autoriser l'accès non authentifié au service Cloud Run sous-jacent. Il est recommandé d'utiliser un service authentifié pour des raisons de sécurité.

5. Créer et déployer le frontend

Cette application est fournie avec une interface utilisateur permettant d'interagir avec notre API Vertex AI via Google Cloud Functions. Créons-le maintenant.

Cloner le dépôt et configurer le fichier Dockerfile

Accédez au répertoire racine et clonez le dépôt Git.

cd ~/

git clone https://github.com/bhaaratkrishnan/vertex-summarizer-svelte.git

cd  vertex-summarizer-svelte

Pour exécuter cette application, vous devez ajouter la variable d'environnement PUBLIC_FUNCTION_URL dans Dockerfile. Il s'agit de l'URL de la fonction Cloud créée et stockée dans la section précédente.

Ouvrez l'éditeur Cloud et modifiez le contenu du fichier Dockerfile. Remplacez la variable PUBLIC_FUNCTION_URL par l'URL de votre fonction Cloud.

2958bb12343368a9.png

Déployer le frontend sur Cloud Run

Nous utiliserons Google Artifact Registry pour créer et stocker nos images Docker. Cloud Run permet de déployer les conteneurs dans l'architecture sans serveur.

Créez un dépôt Artifact Registry en exécutant la commande ci-dessous dans le terminal Cloud Shell :

gcloud artifacts repositories create vertex-repo --repository-format=docker --location=${REGION}

Créez une variable d'environnement pour l'URL du dépôt Artifact Registry.

export DOCKER_URL=${REGION}-docker.pkg.dev/${PROJECT_ID}/vertex-repo/vertex-summarizer-image

Créez le conteneur Docker et taguez-le avec l'emplacement du dépôt Artifact Registry. Cette action permet de configurer la commande docker push grâce à laquelle vous pouvez stocker l'image dans un emplacement précis.

docker build . -t ${DOCKER_URL}

Transférez l'image vers Artifact Registry.

docker push ${DOCKER_URL}

Déployez le conteneur Docker sur Cloud Run.

gcloud run deploy vertex-summarizer --allow-unauthenticated --platform=managed --region=${REGION} --image=${DOCKER_URL}

Yaay !! Vertex Summarizer est opérationnel. L'URL s'affichera dans Cloud Shell. Vous pouvez donc explorer et profiter de Vertex AI 🤖.

cd94442961bb5308.gif

6. Effectuer un nettoyage

Pour éviter que les ressources utilisées dans cet article soient facturées sur votre compte Google Cloud, procédez comme suit :

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.
  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur "Supprimer".
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur "Arrêter" pour supprimer le projet.
  4. Si vous souhaitez conserver le projet et supprimer uniquement le service Cloud Run, suivez cette étape.
  5. Si vous souhaitez simplement supprimer la fonction Cloud ou révoquer l'accès, vous pouvez le faire sur cette page.

7. Félicitations

Félicitations ! Vous avez réussi à utiliser une API Vertex AI PaLM2 pour résumer du texte de manière programmatique, à créer une application Web Svelte et à la déployer dans Cloud Functions. Consultez la documentation du produit LLM Vertex AI pour en savoir plus sur les modèles disponibles.