Creando un modelo generativo propio con Genkit y arquitectura orquestada sobre Firebase
Enolisa integra un modelo de IA propio basado en Genkit y Google Gemini para generar recomendaciones y maridajes de vino personalizados, con arquitectura orquestada en Firebase y control total del proceso.
Enolisa AI: creando un modelo generativo propio con Genkit y arquitectura orquestada sobre Firebase
Un nuevo modelo de IA aplicado al vino
Enolisa nació como una aplicación para que amantes y entusiastas del vino pudieran tener un lugar seguro y privado donde registrar todos sus vinos y catas. Con el tiempo he querido aportar un valor diferencial y esto me llevó a su evolución reciente donde voy mucho más allá de la gestión de botellas: he construido un modelo de IA propio, capaz de aprender de tus gustos y transformar tus catas en recomendaciones y maridajes únicos, con explicaciones coherentes y personalizadas.
Este modelo no se limita a usar un LLM —está construido sobre una arquitectura completa de generación, validación, enriquecimiento y activación, combinando Genkit, Google Gemini, Firebase Functions v2, PostgreSQL, y prompt engineering avanzado.
El resultado: un flujo de IA gobernado, escalable y auditable, con la precisión de un sommelier profesional y la adaptabilidad de un sistema vivo.
La arquitectura: IA, orquestación y control total
Capas funcionales
Piezas y componentes que he utilizado:
| Capa | Componente | Rol |
|---|---|---|
| Generación | Genkit + Gemini 2.5 Pro | Genera recomendaciones y maridajes estructurados |
| Orquestación | Cloud Functions + Firestore | Control de estados, triggers y observabilidad |
| Enriquecimiento | Cloud SQL (PostgreSQL) | Normalización e integración con el catálogo global |
| Activación | FCM Push + gestión de notificaciones | Mensajes precisos y multilingües |
| Seguridad | Secrets y variables de entorno | Sin hardcode, sin fuga de claves |
| Observabilidad | Logging etiquetado (ALERTA_FUNCIONAL / ALERTA_GEMINI) | Diagnóstico y trazabilidad granular |
Ciclo completo
- El módulo de perfil sensorial recibe el contexto sensorial del usuario (idioma, aromas, sabores, gasto medio, histórico).
- Construye un prompt dinámico en tiempo real con placeholders inteligentes y políticas de precios condicionales.
- Genkit + Gemini generan una salida estructurada (JSON limpio, validado).
- El módulo de normalización de recomendaciones enriquece los vinos con datos del catálogo SQL y persiste el lote.
- Una vez verificados los datos, gestionNotificaciones activa el push y cierra el proceso con estado
COMPLETADO.
Cada paso es auditable, reversible y optimizado para latencia y coste.
IA modular: cómo diseñar un modelo propio sin entrenar desde cero
El modelo de Enolisa no se “entrena” en sentido clásico: se construye y afina dinámicamente con ingeniería de prompt y políticas de contexto. Utilizo Genkit no solo como SDK, sino como capa de abstracción que me permite:
- Controlar el modelo (Gemini Pro o Flash) según el tipo de tarea.
- Inyectar conocimiento dinámico y validar coherencia semántica.
- Modularizar los prompts y aislar componentes reutilizables.
- Ajustar temperatura, estructura de salida y comportamiento sin alterar el core.
El resultado es un motor de IA propio, gobernado, predecible y expandible.
Ingeniería de prompt: precisión, contexto y autoverificación
Diseño cada prompt de Enolisa como un flujo lógico, no como texto libre. Los principios que aplico:
- Formato garantizado:
responseMimeType: "application/json"y sanitización defensiva. - Autoverificación interna: el modelo se autoevalúa para garantizar coherencia.
- Multilenguaje controlado: salida natural en ES/EN/IT/FR/PT/DE mediante variable dinámica.
- Instrucciones negativas: prohibición de numeraciones, repeticiones o enumeraciones irrelevantes.
- Guardrails semánticos: regex y validadores que descartan salidas corruptas.
Esto me permite una generación determinista, auditable y replicable, alineada con estándares de IA responsable.
Genkit Flows: IA como procesos componibles
En Enolisa, uso los flows de Genkit que encapsulan procesos IA reutilizables.
Por ejemplo, maridajeFlow define un flujo cerrado que:
- Recibe los parámetros sensoriales del vino.
- Aplica un modelo Gemini con configuración de salida JSON.
- Limpia y valida la respuesta.
- Devuelve una estructura con campos fijos (
maridaje,categoria,explicacion,receta?,tipoCocina?).
Gracias a esto, cualquier otra función (como recomendarMaridaje o futuras skills de recomendación inversa “platos → vinos”) puede invocar el mismo flujo IA como bloque modular.
Observabilidad y control: IA sin caja negra
Cada paso del ciclo IA genera trazabilidad en Cloud Logging con etiquetas diferenciadas:
| Tipo de alerta | Descripción | Ejemplo |
|---|---|---|
ALERTA_FUNCIONAL |
Error operativo o validación lógica | Datos incompletos, ventana temporal vencida |
ALERTA_GEMINI |
Desviación del modelo | JSON inválido, salida sin campos clave |
Esto permite medir y corregir con rapidez: se analizan ratios de parse fallido, tokens por prompt, latencia IA y coste total por flujo. La IA deja de ser una caja negra para convertirse en un sistema gobernado y observable.
IA personalizada, no genérica
A diferencia de integrar un LLM genérico, he construido en Enolisa un modelo de comportamiento propio. La IA entiende no solo qué vino recomendar, sino por qué encaja contigo:
- Analiza tu histórico de catas, aromas y gasto.
- Adapta la recomendación según temporada y contexto cultural.
- Genera explicaciones con tono emocional y educativo, no técnico.
Y lo hace manteniendo control operativo y semántico total: ni improvisación, ni azar, ni resultados inconsistentes.
Roadmap de evolución
Próximos pasos ya definidos:
- Refinamiento automático de prompt con feedback de usuario.
- Clasificación de perfiles de paladar mediante clustering dinámico.
- Embeddings para búsqueda inversa (de platos a vinos).
- Flows compuestos (vino + ocasión + emoción).
- Optimización de costes basada en análisis token-level.
Cada mejora se apoya en la base sólida ya implementada: Genkit + Firebase + Firestore + Cloud SQL + observabilidad estructurada.
Conclusión
Enolisa no usa IA: es IA aplicada de forma consciente y productiva. Mi modelo en Enolisa, construido sobre Genkit, convierte la experiencia de degustar un vino en un proceso inteligente, trazable y emocionalmente relevante.
Con este desarrollo demuestro que es posible construir un modelo generativo personalizado sin entrenamiento directo, combinando ingeniería de software, arquitectura en la nube y conocimiento profundo de IA aplicada.