Application Text Summarizer avec Vertex AI et Svelte Kit

1. Introduction

Dans cet atelier de programmation, j'ai listé les étapes à suivre pour créer une application Web vous permettant d'effectuer la synthèse de texte à l'aide de l'API Vertex AI Large Language Model pour la génération de texte ( text-bison) dans un framework Svelte Kit. Voici la liste des services et de la pile technologique utilisés:

  1. Svelte Kit: framework d'application Web qui s'appuie sur Svelte
  2. API Vertex AI PaLM 2: une API de grand modèle de langage (LLM, Large Language Model) 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 de 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 Python est utilisée pour appeler l'API makePalm
  • Application Web Svelte permettant à l'interface utilisateur d'interagir avec l'API Vertex AI via la fonction Cloud
  • Un service Cloud Run pour déployer l'application créée ci-dessus en mode 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 de sélection du 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 utiliserez Cloud Shell, un environnement de ligne de commande exécuté dans Google Cloud, pour interagir avec les services Google Cloud. Consultez la documentation pour en savoir plus sur les commandes gcloud et 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 à partir du 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. une 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 donner accès à votre projet et à vos ressources, accordez 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

Pour attribuer à votre compte Google un rôle qui vous permet d'utiliser les rôles du compte de service et de l'associer à d'autres ressources. Remplacez USER_EMAIL par l'ID d'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

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

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

mkdir vertex-ai-functions

cd vertex-ai-functions

Créez un fichier main.py pour écrire une 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 courts résumés des entrées de texte. La fonction utilise 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 Google Cloud Editor. Pour ce faire, ouvrez un nouvel onglet de la console Google Cloud, puis cliquez sur le bouton ACTIVER CLOUD SHELL. Une fois le terminal chargé, cliquez rapidement sur le bouton OUVRIR L'ÉDITEUR, comme illustré 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 lien de dépôt. L'explication du code est incluse sous forme de commentaires sur le code. En résumé, ce code offre un moyen concis de générer de courts résumés d'entrées textuelles à l'aide de Vertex AI.

Le fichier requirements.txt contient des dépendances de package: functions-framework==3.*: Elle s'assure que la fonction utilise les dernières fonctionnalités et corrections de bugs du framework des fonctions. google-cloud-aiplatform: nécessaire pour utiliser le modèle de génération de texte de Vertex AI.

Ajoutez ceci au fichier requirements.txt:

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

Déployer une application 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

Cela permet de lister la fonction Cloud Vertex-ai-function que nous venons de créer, ainsi que l'URL publique qui sera indiquée sur la page de la fonction. Nous l'utilisons pour connecter notre interface et l'API Vertex AI. Enregistrez cette URL. Vous devrez peut-être également autoriser le service Cloud Run sous-jacent pour les accès non authentifiés. L'utilisation d'un service authentifié est recommandée pour des raisons de sécurité.

5. Créer et déployer l'interface

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

Cloner un dépôt et configurer le 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 le 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 l'interface dans Cloud Run

Nous allons utiliser Google Artifact Registry pour créer et stocker nos images Docker. Cloud Run permet de déployer les conteneurs dans une 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 ajoutez-lui un tag indiquant l'emplacement du dépôt Artifact Registry. L'ajout d'un tag avec un nom de dépôt à l'image Docker permet de configurer la commande docker push pour transférer l'image vers un emplacement spécifique.

docker build . -t ${DOCKER_URL}

Transférez l'image vers Artifact Registry.

docker push ${DOCKER_URL}

Déployer un conteneur Docker dans Cloud Run

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

Super ! Vertex Summarizer est opérationnel. L'URL s'affichera dans Cloud Shell, alors explorez et profitez de Vertex AI Tensor relative.

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 simplement supprimer 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 ici.

7. Félicitations

Félicitations ! Vous avez utilisé l'API PaLM2 de Vertex AI pour programmer la synthèse de texte, créer une application Web Svelte et la déployer dans Cloud Functions. Pour en savoir plus sur les modèles disponibles, consultez la documentation sur les LLM de Vertex AI.