Sebastian Gomez
Ahora puedes invocar a Gemini directamente desde Google Cloud Pub/Sub... ¿pero deberías?
A lo largo de nuestras carreras, a los desarrolladores y arquitectos de software siempre se nos ha enseñado a ser cautelosos sobre dónde colocamos la lógica de negocio. ¿Deberíamos esconderla en componentes del frontend? ¿En triggers de bases de datos? ¿En el middleware? La recomendación clásica siempre es mantener estas reglas en servicios centralizados para no perderles el rastro.
Sin embargo, Google Cloud acaba de lanzar una funcionalidad que desafía esta noción y nos obliga a replantearnos nuestras arquitecturas: ahora es increíblemente sencillo invocar un LLM directamente desde un tema (topic) o suscripción en Google Cloud Pub/Sub.
¿Cuándo tiene sentido hacer esto? ¿Cómo se ve en la práctica? Hoy vamos a desglosarlo, crear una implementación paso a paso y debatir si realmente deberías hacerlo.
El poder de los SMTs (Single Message Transforms) en Pub/Sub
Si alguna vez has lidiado con pipelines de procesamiento de datos o eventos en la nube, sabes que muchas veces necesitamos alterar un mensaje en tránsito. Para esto, Pub/Sub cuenta con los Single Message Transforms (SMTs), que nos permiten manipular un flujo de datos (por ejemplo, para limpiar datos sensibles o cambiar formatos) antes de que lleguen al consumidor final.
La gran novedad en el ecosistema es el AI Inference SMT. Usando esta herramienta, podemos invocar modelos gestionados de Vertex AI (como nuestro querido Gemini), así como modelos de terceros, directamente en la capa de mensajería. Esto puede aplicarse a nivel de Topic (donde todas las suscripciones reciben el mensaje transformado por IA) o de manera más controlada a nivel de una Suscripción específica.
Un escenario del mundo real: el evento del "Nuevo Empleado"
Imagina que estás construyendo una arquitectura orientada a eventos para un sistema de Recursos Humanos. Cada vez que se contrata a alguien, se emite un evento de "nuevo empleado" hacia Pub/Sub.
Uno de los microservicios suscritos a este evento se encarga de enviar un correo de bienvenida. En lugar de que ese microservicio tenga que armar el texto y conectarse a la API de IA, podemos configurar nuestra suscripción en Pub/Sub para que invoque directamente a un LLM. Así, el mensaje que llega al microservicio destino ya viene enriquecido con un correo de bienvenida cálido, personalizado y pre generado.
Manos a la obra: invocando a Gemini desde Pub/Sub
Veamos cómo configurar esto directamente desde la consola de Google Cloud.
1. Crear el Topic y la Suscripción
Primero, creamos un Topic estándar en Pub/Sub. Aunque podríamos aplicar la transformación de IA aquí mismo para que aplique a todo, prefiero ser quirúrgico y aplicarla solo en la suscripción. Por lo tanto, creamos una suscripción basada en pull atada a este topic.
2. Encadenar transformaciones con JavaScript
Como desarrollador web, esta es mi parte favorita. El AI Inference SMT espera que le enviemos un formato muy específico, pero nuestro evento original viene crudo. Afortunadamente, Pub/Sub nos permite "encadenar" transformaciones.
Primero, añadimos un SMT utilizando una Función Definida por el Usuario (UDF) en JavaScript. Esta función tomará los datos del empleado, los parseará y construirá el prompt exacto que Gemini necesita.
Antes de copiar el código, una aclaración que evita un error silencioso: la UDF recibe el cuerpo del mensaje en message.data como una cadena de texto ya decodificada en UTF-8, no en base64. Por eso podemos pasarla directamente a JSON.parse sin un paso previo de decodificación. Si tu evento original no fuera JSON válido, ese JSON.parse fallaría, así que asegúrate de que el productor publique un cuerpo JSON.
Aquí está el código en JavaScript:
function transform(message, metadata) {
// message.data llega como una cadena UTF-8 ya decodificada (no base64),
// por eso podemos pasarla directamente a JSON.parse.
var incomingData = JSON.parse(message.data);
var promptText = "Genera un correo electronico de bienvenida personalizado teniendo en cuenta el nombre de la persona, su ubicacion y su rol. " + JSON.stringify(incomingData);
var aiInferenceObject = {
model: "google/gemini-2.5-flash",
messages: [
{ role: "user", content: promptText }
]
};
return {
data: JSON.stringify(aiInferenceObject),
attributes: message.attributes || {}
};
}Tip de GDE: Google Cloud tiene un botón muy útil llamado "Test Transforms" que nos permite probar este bloque de código JavaScript en línea, directamente en la consola, antes de guardar. Facilita muchísimo la experiencia de desarrollo.
3. Añadir el AI Inference SMT
Ahora añadimos nuestro segundo SMT a la cadena: el AI Inference SMT. Aquí configuramos que queremos usar el modelo gestionado google/gemini-2.5-flash a través de Vertex AI. Seleccionamos la cuenta de servicio adecuada con los permisos correctos y configuramos parámetros básicos de la IA como el límite de tokens (max tokens) y la temperatura (temperature).
Nota sobre versiones del modelo (verify): Las versiones puntuales de Gemini rotan con frecuencia. Usa siempre el identificador de modelo que Vertex AI exponga en tu proyecto al momento de configurar el SMT; google/gemini-2.5-flash es el valor vigente en esta guía, pero conviene confirmarlo en la consola antes de desplegar.
Cuando volvemos a la ventana de Test Transforms, podemos probar ambos SMTs juntos.
Es pura magia. El resultado de nuestra función en JavaScript alimenta automáticamente la llamada a Gemini, y la salida final es nuestro evento original transformado en un texto de bienvenida listo para ser despachado por el servicio de correos.
La gran pregunta: ¿deberías hacerlo?
Integrar capacidades de LLMs en tu arquitectura de nube nunca había sido tan fácil, rápido y con tan poco código. Tener tu Pub/Sub "potenciado por IA" te ahorra la necesidad de construir, desplegar y mantener SDKs en tus microservicios solo para generar texto simple.
Pero como arquitecto de software, mi consejo es: úsalo con sabiduría.
Es tentador poner IA en todas partes, pero recuerda nuestro principio inicial sobre la visibilidad de la lógica de negocio. Es excelente para enriquecer mensajes, sanitizar datos complejos o pre computar texto auxiliar (como en el caso del correo). Sin embargo, si esa transformación de IA se vuelve el núcleo crítico de tu negocio, ocultarla en las configuraciones de una suscripción de Pub/Sub puede convertir el proceso de debugging en un dolor de cabeza para tu equipo en el futuro.
Documenta bien tu arquitectura, mantén la observabilidad alta y aprovecha el ecosistema de Google Cloud para moverte más rápido sin sacrificar el orden.
Ejercicios propuestos
- Crea un topic de Pub/Sub y una suscripción de tipo pull, y publica un mensaje JSON de "nuevo empleado" de prueba para verificar que llega tal cual al consumidor.
- Escribe tu propia UDF en JavaScript que reciba ese evento, valide que
message.dataes JSON válido y construya un prompt distinto (por ejemplo, un mensaje de bienvenida en otro idioma). - Añade el AI Inference SMT a la cadena con
google/gemini-2.5-flashy experimenta con distintos valores detemperatureymax tokensusando el botón "Test Transforms". - Compara dos diseños: la lógica de IA en el SMT frente a la misma lógica en el código de tu microservicio. Anota qué te cuesta más depurar y observar en cada caso.
Resumen en 3 puntos
- Los Single Message Transforms de Pub/Sub, y en concreto el AI Inference SMT, te permiten invocar modelos de Vertex AI como Gemini directamente en la capa de mensajería, a nivel de topic o de suscripción.
- Encadenando una UDF de JavaScript con el AI Inference SMT puedes transformar un evento crudo en un prompt y obtener una respuesta del LLM sin escribir ni desplegar un solo SDK en tus microservicios.
- Es una herramienta excelente para enriquecer mensajes, pero úsala con criterio: si la lógica de IA es crítica, esconderla en la configuración de una suscripción puede dificultar la observabilidad y el debugging.
¿Qué opinas tú? ¿Ves valor en enriquecer tus eventos en tiempo real con LLMs directamente en el middleware, o prefieres mantener esa lógica explícita en el código de tu servidor?
Déjame tus comentarios, y si te ha parecido útil este análisis, no olvides explorar más artículos sobre el cruce entre Tecnologías Web e Inteligencia Artificial aquí en sebastian gomez.com. ¡Hasta la próxima!
Sebastian Gomez
Creador de contenido principalmente acerca de tecnología.