Funzione Cloud Functions per il riepilogo dei contenuti utilizzando l'API PaLM Vertex AI e Google Cloud Storage

1. Introduzione

In questo codelab puoi trovare i passaggi per eseguire il riepilogo dei contenuti caricati in Google Cloud Storage utilizzando il modello linguistico di grandi dimensioni di Vertex AI per la generazione di testo ( text-bison) come funzione Cloud Functions in Python. L'elenco dei servizi utilizzati è il seguente:

  • API Vertex AI PaLM: un'API di modello linguistico di grandi dimensioni (LLM) che fornisce l'accesso al modello PaLM Text Bison di Google AI.
  • Cloud Functions: una piattaforma serverless per eseguire funzioni senza dover gestire i server.
  • Cloud Storage: un servizio gestito per l'archiviazione di dati non strutturati.
  • Cloud Logging: un servizio completamente gestito che ti consente di archiviare, cercare, analizzare, monitorare e creare avvisi sui dati di logging.

Che cosa creerai

Creerai un'applicazione di cui è stato eseguito il deployment come funzione Cloud Functions Python per riassumere il testo utilizzando l'API PaLM.

2. Requisiti

  • Un browser, ad esempio Chrome o Firefox
  • Un progetto cloud Google Cloud con la fatturazione abilitata

3. Prima di iniziare

  1. Nella console Google Cloud, nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud.
  2. Verifica che la fatturazione sia attivata per il tuo progetto Cloud. Scopri come verificare se la fatturazione è abilitata per un progetto.
  3. Assicurati che tutte le API necessarie (API Cloud Storage, API Vertex AI, API Cloud Functions e Cloud Logging) siano abilitate.
  4. Utilizzerai Cloud Shell, un ambiente a riga di comando in esecuzione in Google Cloud. Consulta la documentazione per i comandi e l'utilizzo di gcloud.
  5. Nella console Cloud, fai clic su Attiva Cloud Shell nell'angolo in alto a destra:

51622c00acec2fa.png

Se il progetto non è impostato, utilizza il comando seguente per impostarlo:

gcloud config set project <YOUR_PROJECT_ID>
  1. Assicurati che tutte le API necessarie siano abilitate eseguendo il comando seguente dal terminale Cloud Shell:
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
  1. Crea le variabili di ambiente per REGION e PROJECT_ID eseguendo il comando seguente dal terminale Cloud Shell:
export PROJECT_ID=<your project id>

export REGION=us-central1

4. Funzione Cloud Functions per richiamare l'API Vertex AI

Creeremo una funzione Cloud Functions Python e richiameremo l'API Vertex AI in questa funzione.

Creazione di un nuovo service account

Crea un nuovo service account eseguendo il comando seguente nel terminale Cloud Shell.

gcloud iam service-accounts create vertex-service-acc

Per fornire l'accesso al progetto e alle risorse, concedi un ruolo al service account.

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

Per concedere al tuo Account Google un ruolo che ti consenta di utilizzare i ruoli del service account e di collegare il service account ad altre risorse, esegui il comando riportato di seguito. Sostituisci USER_EMAIL con l'ID email del tuo Account 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

Creazione della funzione Python

L'API PaLM per il testo è ideale per le attività che possono essere completate con una risposta API, senza la necessità di una conversazione continua. Creiamo ora la funzione Cloud Functions.

Esegui i seguenti comandi in Cloud Shell per clonare il repository e passare al progetto (utilizza lo stesso terminale aperto nella sezione precedente):

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

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

La cartella che ci interessa in questo progetto è: summarization-gcs-cloudfunction.

Apri l'editor di Cloud Shell dal terminale e controlla i contenuti della cartella del progetto appena clonata da GitHub nella tua macchina Cloud Shell.

Questa cartella contiene due file:

  1. Il file Python main.py definisce una semplice funzione Cloud Functions HTTP che utilizza un modello di generazione di testo di Vertex AI per generare brevi riepiloghi degli input di testo. La funzione accetta un input di testo come parametro e restituisce un breve riepilogo dell'input. La funzione utilizza una serie di parametri per controllare il processo di generazione, come la creatività, la diversità e la fluidità del testo generato. La funzione Cloud Functions HTTP accetta un oggetto richiesta e restituisce il riepilogo del modello come risposta.
  2. Il file requirements.txt contiene le dipendenze dei pacchetti:
  • functions-framework==3.: Garantisce che la funzione utilizzi le funzionalità e le correzioni di bug più recenti del framework Functions.
  • google-cloud-aiplatform: obbligatorio per utilizzare il modello di generazione di testo di Vertex AI.
  • google-cloud-storage: obbligatorio per creare bucket di archiviazione in Google Cloud Storage.
  • google-cloud-logging: obbligatorio per generare i log.

5. Esegui il deployment della funzione

  1. Crea due bucket Cloud Storage:
  • Primo bucket: il bucket $BUCKET_NAME verrà utilizzato per caricare i file da riassumere. Crea la variabile di ambiente per archiviare il nome del bucket come segue:
export BUCKET_NAME='Your Bucket Name'
  • Secondo bucket: il bucket $BUCKET_NAME-summaries verrà utilizzato per archiviare il file riassunto.
  • Utilizzeremo il comando gsutil per creare i bucket:
  • gsutil è un'applicazione Python che consente di accedere a Cloud Storage dalla riga di comando. Puoi utilizzare gsutil per eseguire un'ampia gamma di attività di gestione di bucket e oggetti.
  • mb sta per "Make Bucket"
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. A questo punto, siamo pronti per eseguire il deployment della funzione. Prima di farlo, assicurati che il service account del bucket Cloud Storage abbia il ruolo Publisher Pub/Sub.
  2. Vai a Google Cloud Storage e, nel riquadro a sinistra, fai clic su "Impostazioni".

8ce34eb05153abf2.png

  1. Copia il "Service account" dalle impostazioni e annotalo.
  2. Apri IAM e amministrazione dal menu di navigazione della console Google Cloud.

c5a7103e90689684.png

  1. Nella scheda Autorizzazioni, fai clic su CONCEDI ACCESSO e inserisci l'ID del service account che hai annotato nella sezione Nuove entità, seleziona il ruolo "Publisher Pub/Sub" e fai clic su SALVA.

11c2df774fa740a9.png

  1. Esegui il deployment di questa origine in Cloud Functions. Esegui il comando seguente dal terminale Cloud Shell:
  2. Assicurati di trovarti nella cartella summarization-gcs-cloudfunction di questo progetto.
  3. Esegui il comando seguente:
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. Nella console Google Cloud, vai a Cloud Functions::

Verrà visualizzata la funzione Cloud Functions vertex-ai-function appena creata con il relativo URL pubblico. Utilizzeremo questa funzione per creare un trigger GCS.

6. Richiamare la funzione

Quando un file viene caricato nel bucket $BUCKET_NAME*,* il trigger GCS richiama la funzione. Il bucket $BUCKET_NAME"-summaries include il file riassunto con lo stesso nome.

Prima di iniziare, salva il file di esempio story.md dalla cartella summarization-gcs-cloudfunction nella tua macchina locale.

  1. Nella console Google Cloud, vai a Cloud Storage.
  2. Apri il bucket $BUCKET_NAME dall'elenco dei bucket.
  3. Fai clic su Carica file e seleziona il file story.md.

La funzione summarizeArticles viene attivata e inizia a riassumere i contenuti del file.

  1. Nel riquadro di navigazione a sinistra, fai clic su Bucket.
  2. Apri il bucket $BUCKET_NAME"-summaries.

Il file story.md include un riepilogo dei contenuti del file.

7. Libera spazio

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo post, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.
  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID progetto, quindi fai clic su Chiudi per eliminare il progetto.
  4. Se vuoi conservare il progetto ed eliminare solo alcune risorse, vai alla console Cloud Storage, fai clic su Bucket e, dall'elenco, seleziona i bucket che vuoi eliminare e fai clic su ELIMINA.
  5. Puoi anche eliminare la funzione Cloud Functions andando a Cloud Functions e, dall'elenco delle funzioni, seleziona quella che vuoi eliminare e fai clic su ELIMINA.

8. Complimenti

Complimenti! Hai utilizzato correttamente un LLM di generazione di testo di Vertex AI a livello di programmazione per eseguire il riepilogo del testo sui tuoi dati. Consulta la documentazione del prodotto LLM di Vertex AI per saperne di più sui modelli disponibili.