AI Photo Critique

Conception d'un pipeline RAG avec LangChain, base vectorielle Pinecone et GPT-4o Vision pour fournir des critiques photo expertes via le prompt engineering.

IA/MLRAGLangChainBase vectoriellePrompt engineering
AI Photo Critique

Le problème

Progresser en photographie sans retour utile est difficile. Les proches disent "joli", les forums se contredisent, les critiques pro sont coûteuses et lentes. Je savais que mes photos pouvaient être meilleures, mais pas précisément pourquoi ni comment.

Le vrai manque n'était pas l'absence de feedback, mais l'absence de feedback spécifique et actionnable. Les outils IA génériques restaient vagues ou parfois contraires aux principes photo.

Comment j'ai construit la solution

Question de départ: et si l'IA disposait de la même base de connaissances qu'un formateur photo? Au lieu d'espérer qu'un modèle connaisse la règle des tiers, je peux lui fournir les bons principes au moment de la critique.

D'où le choix du RAG (Retrieval-Augmented Generation): plus flexible et moins coûteux qu'un fine-tuning.

Ce que j'ai construit:

  • Pipeline multimodal: GPT-4o Vision décrit l'image (composition, lumière, ambiance, technique), puis cette description sert de requête de recherche.
  • Base de connaissances photo curée: Pinecone stocke des principes de composition, lumière et recommandations selon le genre.
  • Critique contextuelle: description + connaissances récupérées sont injectées dans un prompt enrichi.
  • Orchestration via LangChain.js: chunking, embeddings, retrieval et assemblage de prompts.

Design de l'expérience

Un bon outil de critique doit privilégier clarté et structure. Un pavé de texte n'aide pas à progresser.

J'ai retenu une structure en deux sections: "Ce qui fonctionne" et "Axes d'amélioration", proche des revues de portfolio professionnelles.

Le rendu Markdown (titres, listes, emphases) facilite la lecture. J'impose ce format dans le system prompt pour éviter les réponses floues.

J'ai aussi soigné le flux d'upload: image visible pendant l'analyse, avec progression explicite.

Aperçu du pipeline RAG

Exemple sur une photo du Golden Gate Bridge:

Étape 1: description par le modèle de vision

{
  "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."
}

Étape 2: récupération de contexte pertinent

{
  "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."
    }
  ]
}

Étape 3: prompt augmenté envoyé au 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'."
}

Gérer la production

Contrôle des coûts

Avec des APIs facturées à l'usage (OpenAI, Pinecone), limiter les abus est indispensable. J'ai mis en place un rate limiting par IP via Upstash Redis.

Validation d'images

Vérification des formats et tailles avant traitement pour éviter erreurs, coûts inutiles et timeouts.

Tolérance aux pannes

  • Timeout du modèle vision: message clair + retry.
  • Pinecone indisponible: critique générée sans contexte RAG.
  • États de chargement explicites pour éviter l'impression de blocage.

Ce que j'ai appris

Le RAG est idéal pour la connaissance métier. Plus simple à faire évoluer qu'un modèle fine-tuné.

Le prompt engineering est crucial. Invisible pour l'utilisateur, mais déterminant pour la qualité.

Le multimodal ajoute de la complexité. Si la description image est imparfaite, la récupération de contexte l'est aussi.

Une API publique doit être protégée dès le départ. Les coûts peuvent exploser vite.

La structure rend la réponse IA utile. Un format clair transforme un texte générique en feedback exploitable.

La base de connaissances demande un entretien continu. Les cas réels révèlent rapidement les manques.