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 realizar el resumen del contenido subido a Google Cloud Storage con el modelo de lenguaje extenso de Vertex AI para la generación de texto ( text-bison) como una función de nube en Python. La lista de servicios utilizados es la siguiente:

  • API de PaLM de Vertex AI: Es una API de modelo grande de lenguaje (LLM) que proporciona acceso al modelo PaLM Text Bison de la IA de Google.
  • 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: Es un servicio completamente administrado que te permite almacenar, buscar, analizar, supervisar y generar alertas sobre los datos de registro.

Qué compilarás

Crearás una aplicación implementada como una función de Cloud Functions 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. Ejecuta el siguiente comando desde la terminal de Cloud Shell para asegurarte de que todas las APIs necesarias estén habilitadas:
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
  1. Ejecuta el siguiente comando desde la terminal de Cloud Shell para crear variables de entorno para REGION y PROJECT_ID:
export PROJECT_ID=<your project id>

export REGION=us-central1

4. Cloud Function para invocar la API de Vertex AI

Crearemos una Cloud Function de Python y, luego, invocaremos la API de Vertex AI en ella.

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 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

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. Ahora, crearemos la Cloud Function para ello.

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 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 acabas de clonar de GitHub a tu máquina de Cloud Shell.

Esta carpeta contiene 2 archivos:

  1. El archivo Python main.py define una Cloud Function de HTTP simple que usa 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 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 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 obligatorio para generar registros.

5. Implemente la función

  1. Crea dos buckets de Cloud Storage:
  • Primer bucket: Se usará el bucket $BUCKET_NAME 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: Se usará el bucket $BUCKET_NAME-summaries 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 podemos implementar la función. Pero 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" de la configuración y anótala.
  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 el rol "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 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 $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 de $BUCKET_NAME desde 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 de $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, selecciona 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 Functions. Para ello, navega 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 forma programática para realizar un resumen de texto en tus datos. Consulta la documentación del producto de LLM de Vertex AI para obtener más información sobre los modelos disponibles.