App de resumen de texto con Vertex AI y el kit Svelte

1. Introducción

En este codelab, enumeramos los pasos para compilar una app web que te permita resumir texto con la API del modelo grande de lenguaje de Vertex AI para generación de texto ( text-bison) en un framework de Svelte Kit. La lista de servicios y pila tecnológica que se usan es la siguiente:

  1. Svelte Kit: Un marco de trabajo de aplicaciones web basado en Svelte.
  2. API de PaLM 2 de Vertex AI: Una API de modelo de lenguaje grande (LLM) que brinda acceso al modelo PaLM 2 de la IA de Google.
  3. Cloud Functions: Una plataforma sin servidores para ejecutar funciones sin tener que administrar servidores.
  4. Cloud Run: Una plataforma sin servidores para ejecutar aplicaciones alojadas en contenedores.

Qué compilarás

Crearás

  • Se usa una Cloud Function de Python para la invocación a la API de makePalm
  • Una aplicación web Svelte para que la interfaz de usuario interactúe con la API de Vertex AI a través de Cloud Function
  • Un servicio de Cloud Run para implementar la app creada anteriormente sin servidores

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 consola de Google Cloud, en la página del selector de proyectos, 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 más información para verificar si la facturación está habilitada en un proyecto.
  3. Usarás Cloud Shell, un entorno de línea de comandos que se ejecuta en Google Cloud para interactuar con los servicios de Google Cloud. Consulta la documentación para ver los comandos de gcloud y su uso. 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 cloudbuild.googleapis.com \
run.googleapis.com \
cloudfunctions.googleapis.com \
aiplatform.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=asia-south1

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 otorgar a tu Cuenta de Google un rol que te permita usar los roles de la cuenta de servicio y conectarla a otros recursos, 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

PaLM 2 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.

Crea un directorio nuevo con Cloud Shell y navega hacia él. (usa el mismo terminal abierto en la sección anterior):

mkdir vertex-ai-functions

cd vertex-ai-functions

Crea un archivo main.py para escribir una Cloud Function de Python y un archivo requirements.txt para almacenar dependencias.

touch main.py requirements.txt

Este archivo de Python define una Cloud Function de HTTP sencilla 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 Cloud Function de HTTP acepta un objeto de solicitud y muestra el resumen del modelo como respuesta.

Abre Google Cloud Editor. Para abrirlo, abre una nueva pestaña de la consola de Google Cloud y haz clic en el botón ACTIVAR CLOUD SHELL. Cuando se cargue la terminal, haz clic rápidamente en el botón ABRIR EDITOR, como se muestra en la imagen a continuación:

8e501bd2c41d11b8.png

Una vez que se abra el editor, deberías poder ver el archivo main.py. Reemplaza su contenido con el código de este vínculo del repositorio. La explicación del código se incluye como comentarios del código. En resumen, este código proporciona una forma concisa de generar resúmenes cortos de entradas de texto con Vertex AI.

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: Se requiere para usar el modelo de generación de texto de Vertex AI.

Agrega lo siguiente al archivo requirements.txt:

functions-framework==3.*
google-cloud-aiplatform

Implementa en Cloud Functions

Ahora implementemos esta fuente en Cloud Functions. Ejecuta el siguiente comando desde la terminal de Cloud Shell:

gcloud functions deploy vertex-ai-function \
--gen2 \
--runtime=python311 \
--region=${REGION} \
--source=. \
--entry-point=hello_vertex \
--trigger-http \
--allow-unauthenticated \
--max-instances=30

Usa la barra de búsqueda y ve a la consola de Cloud Functions:

43a6b247098a9edb.png

De esta forma, se mostrará la Cloud Function vertex-ai-function que acabamos de crear con su URL pública en la página de la función. Lo usamos para conectar nuestro frontend y la API de Vertex AI. Almacena esta URL. Es posible que también debas permitir el servicio subyacente de Cloud Run para el acceso sin autenticación. Se recomienda usar el servicio autenticado por motivos de seguridad.

5. Crea e implementa el frontend

Esta app incluye una interfaz de frontend para interactuar con la API de Vertex AI mediante Google Cloud Functions. Vamos a crearlo ahora.

Clona el repositorio y configura el Dockerfile

Ve al directorio raíz y clona el repositorio de Git.

cd ~/

git clone https://github.com/bhaaratkrishnan/vertex-summarizer-svelte.git

cd  vertex-summarizer-svelte

Para ejecutar esta aplicación, debes agregar la variable de entorno PUBLIC_FUNCTION_URL en Dockerfile. Esta URL es la URL de la Cloud Function que se creó y almacenó en la sección anterior.

Abre Cloud Editor y edita el contenido del archivo Dockerfile. Reemplaza la variable PUBLIC_FUNCTION_URL por la URL de tu Cloud Function.

2958bb12343368a9.png

Implementa el frontend en Cloud Run

Usaremos Google Artifact Registry para compilar y almacenar las imágenes de Docker. Cloud Run se usa para implementar los contenedores en una arquitectura sin servidores.

Ejecuta el siguiente comando en la terminal de Cloud Shell para crear un repositorio de Artifact Registry:

gcloud artifacts repositories create vertex-repo --repository-format=docker --location=${REGION}

Crea una variable de entorno para la URL del repositorio de Artifact Registry.

export DOCKER_URL=${REGION}-docker.pkg.dev/${PROJECT_ID}/vertex-repo/vertex-summarizer-image

Compila el contenedor de Docker y etiquétalo con la ubicación del repositorio de Artifact Registry. Etiquetar la imagen de Docker con un nombre de repositorio configura el comando push de Docker para enviar la imagen a una ubicación específica.

docker build . -t ${DOCKER_URL}

Envía la imagen a Artifact Registry.

docker push ${DOCKER_URL}

Implementar el contenedor de Docker en Cloud Run

gcloud run deploy vertex-summarizer --allow-unauthenticated --platform=managed --region=${REGION} --image=${DOCKER_URL}

¡Sí! Vertex Resumer ya está en funcionamiento. La URL se mostrará en Cloud Shell, así que explora y disfruta Vertex AI⋮.

cd94442961bb5308.gif

6. 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 quieres conservar el proyecto y solo borrar el servicio de Cloud Run, sigue los pasos que se indican aquí.
  5. Si solo quieres borrar la Cloud Function o revocar el acceso, puedes hacerlo aquí

7. Felicitaciones

¡Felicitaciones! Usaste correctamente una API de PaLM 2 de Vertex AI para realizar de manera programática resúmenes de texto, compilar una app web de Svelte e implementarla en Cloud Functions. Consulta la documentación del producto Vertex AI LLM para obtener más información sobre los modelos disponibles.