1. Introduction
Dans cet atelier de programmation, vous découvrirez comment 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 permet d'accéder au modèle PaLM Text Bison de Google AI.
- Cloud Functions: plate-forme sans serveur permettant d'exécuter des fonctions sans avoir à gérer de 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 d'envoyer des alertes les concernant.
Ce que vous allez faire
Vous allez créer une application déployée en tant que fonction Cloud Functions Python pour résumer du texte à l'aide de l'API Palm.
2. Conditions requises
3. Avant de commencer
- Dans la console Google Cloud, sur la page du sélecteur de projet, sélectionnez ou créez un projet Google Cloud.
- 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.
- Assurez-vous que toutes les API nécessaires (API Cloud Storage, API Vertex AI, API Cloud Functions et API Cloud Logging) sont activées.
- 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.
- Dans la console Cloud, cliquez sur "Activer Cloud Shell" en haut à droite :
Si votre projet n'est pas défini, utilisez la commande suivante pour le définir :
gcloud config set project <YOUR_PROJECT_ID>
- Assurez-vous que toutes les API nécessaires sont activées en exécutant la commande suivante dans le terminal Cloud Shell:
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
- Créez des variables d'environnement pour REGION et PROJECT_ID en exécutant la commande suivante dans 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'ID de messagerie 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
Le dossier qui nous intéresse dans ce projet est "summarization-gcs-cloudfunction".
Ouvrez l'éditeur Cloud Shell à partir du terminal et vérifiez le contenu du dossier de projet qui vient d'être cloné depuis GitHub sur votre machine Cloud Shell.
Ce dossier contient deux fichiers:
- 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 courts résumés des entrées textuelles. La fonction utilise une entrée textuelle 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.
- Le fichier requirements.txt contient des dépendances de packages:
- functions-framework==3.: Assure que la fonction utilise les dernières fonctionnalités et corrections de bugs du framework Functions.
- google-cloud-aiplatform: obligatoire 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: obligatoire pour générer des journaux.
5. Déployer la fonction
- Créez deux buckets Cloud Storage:
- Premier bucket: le bucket $BUCKET_NAME servira à 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 servira à 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 panel 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
- À 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 "Éditeur Pub/Sub".
- Accédez à Google Cloud Storage, puis dans le volet de gauche, cliquez sur "Paramètres".
- Copiez le compte de service dans les paramètres et notez-le.
- Ouvrez IAM et Administration dans le menu de navigation de la console Google Cloud.
- 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 "Éditeur Pub/Sub" comme rôle, puis cliquez sur ENREGISTRER.
- Déployez cette source dans Cloud Functions. Exécutez la commande suivante à partir du terminal Cloud Shell:
- Assurez-vous d'être dans le dossier summarization-gcs-cloudfunction de ce projet.
- 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
- 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.
- Dans la console Google Cloud, accédez à Cloud Storage.
- Ouvrez votre bucket
$BUCKET_NAME
dans la liste des buckets. - 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.
- Dans le volet de navigation de gauche, cliquez sur "Buckets" (Buckets).
- 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:
- Dans la console Google Cloud, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez celui que vous souhaitez supprimer, puis cliquez sur "Supprimer".
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur "Arrêter" pour supprimer le projet.
- Si vous souhaitez conserver le projet et ne supprimer que certaines ressources, accédez à la console Cloud Storage, cliquez sur "Buckets" (Buckets), cochez les buckets que vous souhaitez supprimer dans la liste, puis cliquez sur "DELETE" (SUPPRIMER).
- Vous pouvez également supprimer la fonction Cloud en accédant à Cloud Functions, puis en cochant la fonction que vous souhaitez 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 le texte de vos données. Consultez la documentation du produit LLM Vertex AI pour en savoir plus sur les modèles disponibles.