Fonction Cloud pour la synthèse de contenus à l'aide de l'API PaLM Vertex AI et de Google Cloud Storage

1. Introduction

Dans cet atelier de programmation, vous trouverez les étapes à suivre pour résumer le contenu importé dans Google Cloud Storage à l'aide du grand modèle de langage Vertex AI pour la génération de texte ( text-bison) en tant que fonction cloud en Python. Voici la liste des services utilisés :

  • API Vertex AI PaLM : API de grand modèle de langage (LLM) qui donne accès au modèle Bison de Google AI PaLM Text.
  • Cloud Functions : plate-forme sans serveur permettant d'exécuter des fonctions sans avoir à gérer des serveurs.
  • Cloud Storage : service géré permettant de stocker des données non structurées.
  • Cloud Logging : service entièrement géré qui vous permet de stocker, de rechercher, d'analyser et de surveiller les données de journalisation, et de configurer des alertes associées.

Ce que vous allez faire

Vous allez créer une application déployée en tant que fonction Cloud Python pour résumer du texte à l'aide de l'API PaLM.

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. Assurez-vous que toutes les API nécessaires (API Cloud Storage, API Vertex AI, API Cloud Functions et Cloud Logging) sont activées.
  4. Vous allez utiliser Cloud Shell, un environnement de ligne de commande exécuté dans Google Cloud. Consultez la documentation pour connaître les commandes gcloud ainsi que leur utilisation.
  5. 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 cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.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=us-central1

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

Pour attribuer à 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, exécutez la commande ci-dessous. 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

L'API PaLM pour le texte est idéale 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.

Exécutez les commandes suivantes dans Cloud Shell pour cloner le dépôt et accéder au projet (utilisez le même terminal que celui ouvert dans la section précédente) :

git clone https://github.com/rominirani/genai-apptemplates-googlecloud

cd genai-apptemplates-googlecloud/summarization-gcs-cloudfunction

Dans ce projet, le dossier qui nous intéresse est "summarization-gcs-cloudfunction".

Ouvrez l'éditeur Cloud Shell à partir du terminal et vérifiez le contenu du dossier du projet qui vient d'être cloné depuis GitHub sur votre machine Cloud Shell.

Ce dossier contient deux fichiers :

  1. Le fichier Python main.py 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 des 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.
  2. Le fichier requirements.txt contient des dépendances de package :
  • functions-framework==3. : Garantit que la fonction utilise les dernières fonctionnalités et corrections de bugs du framework Functions.
  • google-cloud-aiplatform : requis pour utiliser le modèle de génération de texte Vertex AI.
  • google-cloud-storage: : requis pour créer des buckets de stockage dans Google Cloud Storage.
  • google-cloud-logging : requis pour générer des journaux.

5. Déployer la fonction

  1. Créez deux buckets Cloud Storage :
  • Premier bucket : le bucket $BUCKET_NAME sera utilisé pour importer les fichiers à résumer. Créez la variable d'environnement pour stocker le nom de votre bucket comme suit :
export BUCKET_NAME='Your Bucket Name'
  • Deuxième bucket : le bucket $BUCKET_NAME-summaries sera utilisé pour stocker le fichier récapitulatif.
  • Nous allons utiliser la commande gsutil pour créer les buckets :
  • gsutil est une application Python qui vous permet d'accéder à Cloud Storage à partir de la ligne de commande. Vous pouvez utiliser gsutil pour un large éventail de tâches de gestion des buckets et des objets.
  • mb signifie "Make Bucket" (Créer un bucket).
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. À ce stade, nous sommes prêts à déployer la fonction. Mais avant cela, assurez-vous que le compte de service du bucket Cloud Storage dispose du rôle "Diffuseur Pub/Sub".
  2. Accédez à Google Cloud Storage, puis cliquez sur "Paramètres" dans le panneau de gauche.

8ce34eb05153abf2.png

  1. Copiez le "compte de service" à partir des paramètres et notez-le.
  2. Ouvrez "IAM et administration" dans le menu de navigation de la console Google Cloud.

c5a7103e90689684.png

  1. Dans l'onglet "Autorisations", cliquez sur "ACCORDER L'ACCÈS", saisissez l'ID du compte de service que vous avez noté dans la section "Nouveaux comptes principaux", sélectionnez le rôle "Éditeur Pub/Sub", puis cliquez sur "ENREGISTRER".

11c2df774fa740a9.png

  1. Déployez cette source sur Cloud Functions. Exécutez la commande suivante à partir du terminal Cloud Shell :
  2. Assurez-vous de vous trouver dans le dossier summarization-gcs-cloudfunction de ce projet.
  3. Exécutez la commande suivante :
gcloud functions deploy summarizeArticles \
--gen2 \
--runtime=python311 \
--source=. \
--region=$REGION \
--project=$PROJECT_ID \
--entry-point=summarize_gcs_object \
--trigger-bucket=$BUCKET_NAME \
--set-env-vars=GCP_PROJECT=$PROJECT_ID,GCP_REGION=$REGION \
--max-instances=1 \
--quiet
  1. Dans la console Google Cloud, accédez à Cloud Functions :

La fonction Cloud vertex-ai-function que nous venons de créer s'affiche avec son URL publique. Nous allons utiliser cette fonction pour créer un déclencheur GCS.

6. Appeler la fonction

Lorsqu'un fichier est importé dans le bucket $BUCKET_NAME*,* le déclencheur GCS appelle la fonction. Le bucket $BUCKET_NAME"-summaries inclut le fichier récapitulatif portant le même nom.

Avant de commencer, enregistrez l'exemple de fichier story.md du dossier summarization-gcs-cloudfunction sur votre ordinateur local.

  1. Dans la console Google Cloud, accédez à Cloud Storage.
  2. Ouvrez votre bucket $BUCKET_NAME dans la liste des buckets.
  3. Cliquez sur "Importer des fichiers", puis sélectionnez le fichier story.md.

La fonction summarizeArticles est déclenchée et commence à résumer le contenu du fichier.

  1. Dans le volet de navigation de gauche, cliquez sur "Buckets".
  2. Ouvrez votre bucket $BUCKET_NAME"-summaries.

Le fichier story.md inclut un résumé du contenu du fichier.

7. 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 ne supprimer que certaines ressources, accédez à la console Cloud Storage, cliquez sur "Buckets" (Buckets), puis cochez les buckets que vous souhaitez supprimer dans la liste et cliquez sur "DELETE" (SUPPRIMER).
  5. Vous pouvez également supprimer la fonction Cloud en accédant à Cloud Functions, puis en cochant la fonction à supprimer dans la liste et en cliquant sur SUPPRIMER.

8. Félicitations

Félicitations ! Vous avez réussi à utiliser un LLM de génération de texte Vertex AI de manière programmatique pour résumer du texte dans vos données. Consultez la documentation du produit LLM Vertex AI pour en savoir plus sur les modèles disponibles.