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

1. Introducción

En este codelab, puedes encontrar los pasos para realizar el resumen del contenido subido a Google Cloud Storage con el modelo grande de lenguaje 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 Vertex AI PaLM: Una API de modelo grande de lenguaje (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: 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 generar alertas sobre ellos.

Qué compilarás

Crearás una aplicación implementada como una función de Cloud 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 Functions 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 y el uso de gcloud.
  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 ejecutando 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. Función de Cloud para invocar la API de Vertex AI

Crearemos una función de Cloud de Python y, luego, invocaremos la API de Vertex AI en esta función.

Cómo crear 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 otorgar a tu Cuenta de Google un rol que te permita usar los roles de la cuenta de servicio y conectar la cuenta de servicio 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

Cómo crear la función de Python

La API de PaLM para texto es ideal para tareas que se pueden completar con una sola respuesta de la API, sin la necesidad de mantener una conversación continua. Creemos la función de Cloud ahora.

Ejecuta los siguientes comandos en Cloud Shell para clonar el repositorio y navegar al proyecto (usa la misma terminal que se abrió 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 verifica el contenido de la carpeta del proyecto que se acaba de clonar desde GitHub en tu máquina de Cloud Shell.

Esta carpeta contiene 2 archivos:

  1. El archivo de Python main.py define una función de Cloud HTTP simple que usa un modelo de generación de texto de Vertex AI para generar resúmenes breves de las entradas de texto. La función toma una entrada de texto como parámetro y muestra un resumen breve 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 función de Cloud HTTP acepta un objeto de solicitud y muestra el resumen del modelo como respuesta.
  2. El archivo requirements.txt tiene dependencias de paquetes:
  • functions-framework==3.: Garantiza que la función use las funciones y correcciones de errores más recientes de Functions Framework.
  • google-cloud-aiplatform: Es necesario para usar el modelo de generación de texto de Vertex AI.
  • google-cloud-storage: Es necesario para crear buckets de almacenamiento en Google Cloud Storage.
  • google-cloud-logging: Es necesario para generar registros.

5. Implemente la función

  1. Crear dos depósitos 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 llevar a cabo numerosas 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, estamos listos para implementar la función. Sin embargo, antes de eso, asegúrate de que la cuenta de servicio del bucket de Cloud Storage tenga el rol 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" de la configuración y anótala.
  2. Abre IAM y administración desde el menú de navegación de la consola de Google Cloud.

c5a7103e90689684.png

  1. En la pestaña Permisos, haz clic en OTORGAR ACCESO, ingresa el ID de la cuenta de servicio que anotaste en la sección Principales nuevas, selecciona el 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::

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

6. Invoca la función

Cuando se sube un archivo al bucket $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 tu 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 quieres 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 deseas 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 deseas borrar y haz clic en BORRAR.
  5. También puedes borrar la función de Cloud. Para ello, navega a Cloud Functions y, en la lista de funciones, marca la que deseas borrar y haz clic en BORRAR.

8. Felicitaciones

¡Felicitaciones! Usaste con éxito un LLM de generación de texto de Vertex AI de forma programática para realizar el resumen de texto en tus datos. Revisa la documentación del producto de LLM de Vertex AI para obtener más información sobre los modelos disponibles.