5 pasos para hacer el deploy de una aplicación basada en el LLM Gemini Pro con LangChain CLI usando el servicio de Cloud Run de Google

Albert Gil López
4 min readJun 5, 2024

--

AUTOR: Albert Gil López — Esquema Deploy LangChain app con LLM Gemini Pro y Cloud Run

En este artículo, compartiré cómo siguiendo esta guía de Google he creado una aplicación de IA generativa usando LangChain y Google Cloud Run, un servicio que simplifica el despliegue de aplicaciones en contenedores, una de las mejores opciones para hacerlo hasta la fecha.

Introducción

No es necesario hablar demasiado de cómo funciona aplicaciones como ChatGPT. Por lo general, cuando preguntas a un LLM utilizando un prompt este de devolverá una respuesta. Al ser modelos probabilísticos todo se puede resumir a que son un “autocompletado avanzado”, aunque es una forma muy simplificada de pensarlo ya que pueden hacer muchas otras cosas, sobretodo cuando empiezas a integrarte con tus propios datos y APIs.

Background

LangChain es uno de los frameworks más populares que facilita construir aplicaciones basadas en LLMs. En 2023, LangChain introdujo LangServe, una manera de construir cualquier proyecto LangChain como API REST.

LangChain ofrece todas las abstracciones que necesitas para empezar a construir una aplicación basada en LLMs. Está formado por muchos componentes entre los que se incluyen los LLM, los Document Loaders, Text Embeddings, Vector Stores, Agents, etc. Y existen muchos productos de Google ya integrados.

Ahora, pasar del prototipado a producción no es trivial. En este proyecto se va a desplegar una aplicación basada en LangChain que utiliza el modelo Gemini de Google para hacer preguntas acerca de la documentación de Cloud Run. Vamos a ello.

AUTOR: Google

Hands-on: Construcción y Despliegue

1. Configuración inicial y dependencias. El primer paso es crear un entorno adecuado mediante herramientas como Poetry para la gestión de dependencias en Python.

2. Creación de la base de datos de vectores. Para manejar las búsquedas semánticas de manera eficiente, se utiliza una base de datos vectorial usando PostgreSQL. Esta base de datos almacena vectores de texto que permiten búsquedas rápidas y eficientes por similitud.

3. Desarrollo de indexer.py y server.py

El script indexer.py se encarga de procesar la documentación y convertirla en vectores utilizando el modelo de embeddings de texto de Google, facilitando así su almacenamiento en la base de datos vectorial. Por otro lado, server.py utiliza FastAPI para exponer una API REST que interactúa con nuestro modelo LLM para responder preguntas basadas en los datos indexados.

AUTOR: Google

4. Problemas y soluciones durante el proceso. En el notebook te explico como solucionar algunos errores que me han ido surgiendo durante el proceso, sobre todo en el deploy final cuando tienes que manejar las dependencias de las librerías, aunque siempre puedes consultar los logs.

5. Despliegue de la aplicación web utilizando el servicio Cloud Run. Mediante el siguiente comando se sube el código fuente a Cloud Build y se construye la imagen del container resultante en Artifact Registry desde el cual se creará el servicio de Cloud Run.

DB_INSTANCE_NAME=$(gcloud sql instances describe sql-instance --format="value(connectionName)")

gcloud run deploy run-rag \
--source . \
--set-env-vars=DB_INSTANCE_NAME=$DB_INSTANCE_NAME \
--set-env-vars=DB_USER=<your-db-name>\
--set-env-vars=DB_NAME=release-notes \
--set-env-vars=DB_PASS=<your-password>\
--region=$REGION \
--allow-unauthenticated

Ya tenemos la aplicación desplegada y accesible públicamente. Te dejo el enlace para que puedas trastear un poco: https://run-rag-7qtdu65ywq-no.a.run.app/playground/ Aquí también tienes el notebook con el paso a paso completo y el repositorio de GitHub el código del proyecto.

Conclusión

El proyecto es un ejemplo más de cómo las herramientas adecuadas pueden simplificar significativamente el desarrollo de aplicaciones basadas en LLMs, permitiendo a los desarrolladores concentrarse más en la parte creativa y funcional de las aplicaciones.

What’s Next, próximos pasos:

Comparte tu experiencia:

Estoy abierto a colaborar y discutir sobre las posibilidades que ofrece la inteligencia artificial y cómo trabajar juntos para explorar y construir soluciones en diferentes sectores. Si tienes ideas, preguntas o simplemente quieres hablar de ello, escríbeme:

--

--

Albert Gil López

Explorando data science e IA para mejorar la vida diaria y optimizar negocios. Apasionado por el aprendizaje continuo y la aplicación práctica del conocimiento.