Cloud Function para resumir contenido con la API de PaLM Vertex AI y Google Cloud Storage

1. Introducción

En este codelab, encontrarás los pasos para resumir el contenido subido a Google Cloud Storage con el modelo de lenguaje grande de Vertex AI para la generación de texto ( text-bison) como una función de Cloud en Python. La lista de servicios usados es la siguiente:

  • API de PaLM de Vertex AI: Una API de modelo de lenguaje grande (LLM) que proporciona acceso al modelo PaLM Text Bison de Google AI.
  • Cloud Functions: Una plataforma sin servidores para ejecutar funciones sin tener que administrar servidores.
  • Cloud Storage: Es un servicio administrado para almacenar datos no estructurados.
  • Cloud Logging: Un servicio completamente administrado que te permite almacenar, buscar, analizar y supervisar los datos de registro, así como emitir alertas sobre ellos.

Qué compilarás

Crearás una aplicación implementada como una Cloud Function de Python para resumir texto con la API de Palm.

2. Requisitos

  • Un navegador, como Chrome o Firefox.
  • Un proyecto de Google Cloud con la facturación habilitada.

3. Antes de comenzar

  1. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
  2. Asegúrate de que la facturación esté habilitada para tu proyecto de Cloud. Obtén información sobre cómo verificar si la facturación está habilitada en un proyecto.
  3. Asegúrate de que todas las APIs necesarias (API de Cloud Storage, API de Vertex AI, API de Cloud Function y Cloud Logging) estén habilitadas
  4. Usarás Cloud Shell, un entorno de línea de comandos que se ejecuta en Google Cloud. Consulta la documentación para ver los comandos de gcloud y su uso.
  5. En la consola de Cloud, haz clic en Activar Cloud Shell en la esquina superior derecha:

51622c00acec2fa.png

Si tu proyecto no está configurado, usa el siguiente comando para hacerlo:

gcloud config set project <YOUR_PROJECT_ID>
  1. Asegúrate de que todas las APIs necesarias estén habilitadas. Para ello, ejecuta el siguiente comando desde la terminal de Cloud Shell:
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
  1. Crea variables de entorno para REGION y PROJECT_ID ejecutando el siguiente comando desde la terminal de Cloud Shell:
export PROJECT_ID=<your project id>

export REGION=us-central1

4. Cloud Function para invocar la API de Vertex AI

En esta función, crearemos una Cloud Function de Python y, luego, invocaremos la API de Vertex AI.

Crea una cuenta de servicio nueva

Ejecuta el siguiente comando en la terminal de Cloud Shell para crear una cuenta de servicio nueva.

gcloud iam service-accounts create vertex-service-acc

Para proporcionar acceso a tu proyecto y tus recursos, otorga un rol a la cuenta de servicio.

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

Para otorgarle a tu Cuenta de Google un rol que te permita usar los roles de la cuenta de servicio y conectarla a otros recursos, ejecuta el siguiente comando. Reemplaza USER_EMAIL por el ID de correo electrónico de tu Cuenta de 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

Crea la función de Python

La API de PaLM para texto es ideal para tareas que se pueden completar con una respuesta de la API, sin la necesidad de una conversación continua. Ahora, crearemos la Cloud Function para eso.

Ejecuta los siguientes comandos en Cloud Shell para clonar el repositorio y navegar al proyecto (usa la misma terminal que abriste en la sección anterior):

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

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

La carpeta que nos interesa aquí en este proyecto es: summarization-gcs-cloudfunction.

Abre el editor de Cloud Shell desde la terminal y revisa el contenido de la carpeta del proyecto que se clonó de GitHub a tu máquina de Cloud Shell.

Esta carpeta contiene 2 archivos:

  1. El archivo main.py de Python define una Cloud Function de HTTP simple que utiliza un modelo de generación de texto de Vertex AI para generar resúmenes breves de entradas de texto. La función toma una entrada de texto como parámetro y muestra un breve resumen de la entrada. La función usa una variedad de parámetros para controlar el proceso de generación, como la creatividad, la diversidad y la fluidez del texto generado. La Cloud Function de HTTP acepta un objeto de solicitud y muestra el resumen del modelo como respuesta.
  2. El archivo requirements.txt tiene dependencias de paquete:
  • functions-framework==3. Garantiza que la función use las funciones y correcciones de errores más recientes de Functions Framework.
  • google-cloud-aiplatform: Obligatorio para usar el modelo de generación de texto de Vertex AI.
  • google-cloud-storage: Es obligatorio para crear buckets de almacenamiento en Google Cloud Storage.
  • google-cloud-logging: Es necesario para generar registros.

5. Implemente la función

  1. Crea dos buckets de Cloud Storage:
  • Primer bucket: El bucket $BUCKET_NAME se usará para subir los archivos que se resumirán. Crea la variable de entorno para almacenar el nombre de tu bucket de la siguiente manera:
export BUCKET_NAME='Your Bucket Name'
  • Segundo bucket: El bucket $BUCKET_NAME-summaries se usará para almacenar el archivo resumido.
  • Usaremos el comando gsutil para crear los buckets:
  • gsutil es una aplicación de Python que te permite acceder a Cloud Storage desde la línea de comandos. Puedes usar gsutil para realizar una amplia variedad de tareas de administración de objetos y buckets.
  • mb significa “Make Bucket”
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. En este punto, ya estamos listos para implementar la función. Antes de eso, asegúrate de que la cuenta de servicio del bucket de Cloud Storage tenga el rol de publicador de Pub/Sub.
  2. Ve a Google Cloud Storage y, en el panel izquierdo, haz clic en “Configuración”.

8ce34eb05153abf2.png

  1. Copia la "Cuenta de servicio" en Configuración y anótalo.
  2. Abre IAM y administración en el menú de navegación de la consola de Google Cloud.

c5a7103e90689684.png

  1. En la pestaña Permisos, haz clic en OTORGAR ACCESO y, luego, ingresa el ID de la cuenta de servicio que anotaste. En la sección Principales nuevas, selecciona Rol como “Publicador de Pub/Sub”. y haz clic en GUARDAR.

11c2df774fa740a9.png

  1. Implementa esta fuente en Cloud Functions. Ejecuta el siguiente comando desde la terminal de Cloud Shell:
  2. Asegúrate de estar en la carpeta summarization-gcs-cloudfunction de este proyecto.
  3. Ejecuta el siguiente comando:
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. En la consola de Google Cloud, ve a Cloud Functions:

De esta forma, se mostrará la Cloud Function vertex-ai-function que acabamos de crear con su URL pública. Usaremos esta función para crear un activador de GCS.

6. Invocar la función

Cuando se sube un archivo al bucket* de $BUCKET_NAME,* el activador de GCS invoca la función. El bucket $BUCKET_NAME"-summaries incluye el archivo resumido con el mismo nombre.

Antes de comenzar, guarda el archivo de muestra story.md de la carpeta summarization-gcs-cloudfunction en tu máquina local.

  1. En la consola de Google Cloud, ve a Cloud Storage.
  2. Abre tu bucket $BUCKET_NAME de la lista de buckets.
  3. Haz clic en Subir archivos y selecciona el archivo story.md.

Se activa la función summarizeArticles y comienza a resumir el contenido del archivo.

  1. En el panel de navegación izquierdo, haz clic en Buckets.
  2. Abre el bucket $BUCKET_NAME"-summaries.

El archivo story.md incluye un resumen del contenido del archivo.

7. Limpia

Sigue estos pasos para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos que usaste en esta publicación:

  1. En la consola de Google Cloud, ve a la página Administrar recursos.
  2. En la lista de proyectos, elige el proyecto que deseas borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrarlo.
  4. Si quieres conservar el proyecto y solo borrar algunos recursos, ve a la consola de Cloud Storage, haz clic en Buckets y, en la lista, marca los buckets que quieres borrar y haz clic en BORRAR.
  5. También puedes borrar la Cloud Function si navegas a Cloud Functions y, en la lista de funciones, marca la que quieres borrar y haz clic en BORRAR.

8. Felicitaciones

¡Felicitaciones! Usaste correctamente un LLM de generación de texto de Vertex AI de manera programática para realizar resúmenes de texto con tus datos. Consulta la documentación del producto Vertex AI LLM para obtener más información sobre los modelos disponibles.