El problema
Mejorar como fotógrafo sin feedback útil es complicado. Amigos dicen "buena foto", los foros se contradicen y las críticas profesionales cuestan tiempo y dinero. Yo sabía que mis fotos podían mejorar, pero no tenía claro por qué ni qué cambiar.
El problema no era solo la falta de feedback, sino la falta de feedback específico y accionable. Herramientas genéricas de IA eran vagas o incluso contradecían principios básicos de fotografía.
Cómo construí la solución
AI Photo Critique empezó con una pregunta: ¿y si le doy a la IA la misma base de conocimiento que tendría un instructor de fotografía? En lugar de confiar en conocimiento implícito del modelo, puedo inyectar principios curados justo en el momento del análisis.
Ahí entra RAG (Retrieval-Augmented Generation): más flexible y más económico que fine-tuning para este caso.
Qué construí:
- Pipeline multimodal: GPT-4o Vision analiza la foto y genera una descripción detallada (composición, luz, ambiente, técnica), que luego se usa como consulta.
- Base de conocimiento curada: Pinecone almacena principios de composición, iluminación y recomendaciones por género.
- Crítica contextual: descripción de imagen + contexto recuperado alimentan un prompt aumentado.
- Orquestación con LangChain.js: chunking, embeddings, retrieval y ensamblado de prompts.
Diseño de la experiencia
Un buen sistema de crítica necesita claridad y estructura. Un bloque largo de texto no ayuda a mejorar.
Definí una estructura de dos partes: "Qué funciona bien" y "Áreas de mejora". Es un formato cercano a revisiones profesionales de portafolio.
El resultado se renderiza en Markdown para facilitar lectura y escaneo. También forcé este formato en el prompt de sistema para evitar respuestas difusas.
La UI mantiene la foto visible mientras se analiza, con indicadores claros de progreso.
Vista técnica del pipeline RAG
Ejemplo con una foto del Golden Gate Bridge:
Paso 1: el modelo de visión genera descripción
{
"image_description": "A vertical photograph of the Golden Gate Bridge, partially obscured by a thick layer of fog. The iconic red-orange tower on the right is prominent, rising above the low-hanging clouds. The foreground is the dark, choppy water of the bay. The composition follows the rule of thirds, with the main tower positioned off-center. The mood is somber and atmospheric due to the fog."
}
Paso 2: el pipeline RAG recupera contexto
{
"retrieved_chunks": [
{
"source": "composition_guide.pdf",
"text": "The Rule of Thirds is a fundamental principle. By placing key elements along the lines or at their intersections, you create a more balanced and engaging photograph than simply centering the subject."
},
{
"source": "landscape_photography.pdf",
"text": "Atmospheric conditions like fog or mist can be powerful tools for creating mood and a sense of depth. Use them to obscure parts of the scene, adding mystery and drawing focus to your primary subject."
}
]
}
Paso 3: envío del prompt aumentado al LLM
{
"system_prompt": "You are an expert, objective photography critic. Your goal is to provide honest, professional feedback to help a photographer improve their craft.",
"context": [
"The Rule of Thirds is a fundamental principle. By placing key elements along the lines or at their intersections, you create a more balanced and engaging photograph than simply centering the subject.",
"Atmospheric conditions like fog or mist can be powerful tools for creating mood and a sense of depth. Use them to obscure parts of the scene, adding mystery and drawing focus to your primary subject."
],
"image_description": "A vertical photograph of the Golden Gate Bridge, partially obscured by a thick layer of fog. The iconic red-orange tower on the right is prominent, rising above the low-hanging clouds. The composition follows the rule of thirds, with the main tower positioned off-center.",
"instructions": "Generate a critique formatted in Markdown. Structure your response with two main headings: '## What Works Well' and '## Areas for Improvement'."
}
En producción
Control de costos
Con APIs de pago por uso (OpenAI y Pinecone), el rate limiting es obligatorio. Implementé límites por IP con Upstash Redis.
Validación de imágenes
Se valida tipo y tamaño antes de procesar para evitar errores, costos altos y timeouts.
Tolerancia a fallos
- Si falla el modelo de visión, el usuario recibe un error claro con opción de reintentar.
- Si Pinecone no responde, se genera crítica sin contexto RAG (degradación elegante).
- Estados de carga claros para evitar sensación de bloqueo.
Lo que aprendí
RAG funciona mejor que fine-tuning en este contexto. Es más barato y actualizable.
Prompt engineering es clave. Aunque el usuario no lo vea, determina gran parte de la calidad.
Pipelines multimodales son más complejos. Si la descripción inicial falla, también lo hace la recuperación de contexto.
Las APIs públicas deben protegerse desde el inicio. Un abuso puede disparar costos rápidamente.
La estructura vuelve útil la salida de IA. Formato explícito = feedback accionable.
La base de conocimiento requiere mantenimiento continuo. Los casos reales siempre revelan huecos.
