Leçon 4 — Construire le générateur

Références et retouches multi-tours

8 min de lecture

Références et retouches multi-tours

Le service client reçoit le message d'une acheteuse : la lampe livrée n'a pas le pied de celle de la publicité. La publicité avait été générée à partir d'une description textuelle du produit ; le modèle avait dessiné un pied en forme de vase, plausible et faux. En photo produit, une image qui ressemble au produit est une image fausse. Deux outils règlent ce problème : l'image de référence, qui transmet ce que le texte ne sait pas décrire, et la retouche ciblée, qui corrige un détail sans tout régénérer.

Le mécanisme

Les modèles Gemini acceptent des images en entrée, dans le même message que le prompt. Le modèle ne colle pas la référence : il la réinterprète dans la nouvelle scène, avec la lumière, l'angle et l'échelle demandés. C'est pour cela qu'une consigne de rôle accompagne chaque référence.

Rôle dans le briefConsigne ajoutée au promptLimite documentée
produitreproduis fidèlement forme, proportions, couleurs, matériaux ; ne le redessine pasFlash : 10 objets ; Pro : 6 en haute fidélité
personnagegarde le même visage, la même coiffure, la même tenueFlash : 4 personnages ; Pro : 5
charterespecte la palette et l'ambiance, sans recopier les textes14 images au total (Pro)
stylereprends le traitement de l'image, pas son contenuidem

Chaque image d'entrée coûte 560 tokens chez le Pro (0,0011 $) : le prix des références est négligeable devant celui de l'image produite.

La retouche fonctionne en conversation. Après la génération, la session garde l'image produite dans son historique ; la consigne suivante s'applique à elle. La documentation appelle « masquage sémantique » la retouche localisée : pas de masque dessiné, mais une phrase qui nomme la zone et exige que le reste ne bouge pas.

flowchart LR
  R["Référence produit<br/>lampe-orbe.jpg"] --> T0
  P["Prompt structuré<br/>+ consigne de rôle"] --> T0["Tour 0<br/>génération"]
  T0 --> I0["etape-0"]
  I0 --> T1["Tour 1<br/>« Ajoute un vase à gauche.<br/>Ne modifie rien d'autre. »"]
  T1 --> I1["etape-1"]
  I1 --> T2["Tour 2<br/>« Allume la lampe. »"]
  T2 --> I2["etape-2"]

La mise en œuvre

Déclarer la référence

files/brief.yaml (extrait)
references:
  - id: orbe
    fichier: references/lampe-orbe.jpg
    role: produit
    droits: "Image produit générée par IA le 2026-10-15 et validée par Maison Lumen, usage campagne"

visuels:
  - id: orbe-salon
    references: [orbe]
    ...
    retouches:
      - "Ajoute à gauche de la lampe un petit vase en grès beige avec une branche d'olivier. Ne modifie rien d'autre : même cadrage, même lumière, même lampe."
files/campagne/pipeline.py (extrait)
parts = [p.prompt]
for rid in v.references:
    fichier = base / refs[rid].fichier
    parts.append(part_image(fichier.read_bytes(), mimetypes.guess_type(fichier.name)[0] or "image/jpeg"))
consignes = ["(génération initiale)", *v.retouches]
for i, consigne in enumerate(consignes):
    rendu = session.envoyer(parts if i == 0 else [consigne])
    brut = dossier / f"etape-{i}{ext}"
    brut.write_bytes(rendu.image)

Chaque étape est conservée (etape-0, etape-1…) avec sa consigne, sa durée et son coût dans meta.json : si la retouche dégrade l'image, l'étape précédente reste disponible.

Ce que donne la référence

L'image de référence du produit (fichier references/lampe-orbe.jpg)
Avec la référence, nouvelle scène, Pro 2K : tige fine, socle plat, interrupteur et câble tressé sont ceux du produit

Comparez avec le packshot de la leçon 2, généré sans référence : même description textuelle, pied en forme de vase. La référence transmet ce que trois lignes de texte n'avaient pas transmis : proportions de la tige, position de l'interrupteur, câble tressé.

Le même principe tient pour une personne. Un portrait d'une personne fictive sert de référence, puis la scène suivante la reprend :

Portrait de référence d'une conceptrice lumière fictive (Flash 1K)
Nouvelle scène avec la référence personnage : visage, boucles, lunettes et pull conservés (Flash 1K, 9,8 s, 0,068 $)

Ce que donne la retouche multi-tours

Tour 0 : la scène du soir. Défaut : la lampe est éteinte
Tour 1 : « Ajoute à gauche de la lampe un petit vase en grès… Ne modifie rien d'autre. » (8,3 s, 0,068 $)

Le vase est apparu, le reste semble identique. Mesuré, ce n'est pas tout à fait le cas : l'écart moyen entre les deux images, en niveaux de gris sur 255, vaut 6,2 sur la moitié gauche (où est le vase), mais aussi 3,1 sur la moitié droite et 2,8 sur le mur. Le modèle régénère toute l'image en s'efforçant de la conserver ; il ne colle pas un vase sur des pixels figés. Sur un produit, vérifiez donc le produit après chaque retouche.

La retouche marche aussi sur une image existante, hors session : on envoie le fichier et la consigne dans un nouvel appel. C'est ainsi qu'on a corrigé le flyer dont la lumière avait été décrite par son matériel :

Avant : le Pro a dessiné la boîte à lumière citée dans le prompt
Après : « supprime uniquement la boîte à lumière… prolonge le mur ». Écart moyen 51 sur la bande haute, 3,9 sur le reste (Pro 2K, 23,2 s, 0,139 $)

Résultat obtenu

Le test réel make e2e enchaîne une génération avec référence et une retouche (« Allume la lampe : halo ambré chaud. Ne modifie rien d'autre. ») :

e2e, tour 0 : le produit de référence sur une étagère, lampe éteinte
e2e, tour 1 : lampe allumée, cadrage et étagère conservés (512 px, 5,8 s, 0,046 $)

Ce qui casse en production

SymptômeCauseParade
Le produit est « presque » le bon (proportions, couleur)référence absente, ou photo de référence en situation avec d'autres objetspackshot sur fond neutre comme référence ; consigne de rôle produit
La retouche change aussi le visage ou le produitconsigne qui ne dit pas ce qui doit restertoujours terminer par « Ne modifie rien d'autre : … » en nommant les éléments à protéger
Après 4 ou 5 retouches, l'image se dégrade (couleurs, netteté)chaque tour régénère l'image entièreau-delà de 3 retouches, repartir d'une génération avec un prompt corrigé
La personne de référence « dérive » sur une sérietrop de personnages, ou référence de mauvaise qualitéportrait net, de face, lumière neutre ; respecter la limite de 4 ou 5 personnages
La retouche part dans un nouvel appel sans l'imagehistorique perdusession de chat par visuel, ou image précédente renvoyée explicitement
Le logo de la charte se retrouve copié sur le produitréférence charte qui contient du texteréférence de charte sans texte (aplats de couleurs, matières) ; le logo se compose après coup

La règle de décision

Toute image où un produit, une personne ou un lieu réel doit être reconnaissable passe par une référence. Utilisez la retouche pour un ou deux défauts localisés ; au-delà, corrigez le prompt et régénérez. Surveillez l'écart sur les zones protégées : un contrôle visuel à 100 % sur le produit est obligatoire après chaque retouche.

Pratique

Vous retouchez une photo produit : « remplace le fond par un mur en béton ». Le fond change, mais le logo gravé sur le produit est devenu illisible. Quelle est la meilleure correction ?

Une série de 12 visuels RH doit montrer la même personne fictive dans des situations différentes. Combien d'images de référence et lesquelles ?

Exercice. Le visuel rh-atelier montre un abat-jour qui n'est pas celui de Maison Lumen. Modifiez le brief pour que les artisans assemblent la vraie lampe Orbe, sans changer le reste de la scène, et indiquez le surcoût estimé.

Voir la solution
  - id: rh-atelier
    usage: rh
    references: [orbe]
    sujet: "deux artisans ... assemblent le globe opalin de la lampe de l'image de référence à l'atelier"

Le prompt gagne la ligne « Image de référence 1 (produit) : reproduis fidèlement… ». Le surcoût est l'entrée de l'image : 560 tokens environ, soit 0,0003 enFlash(0,50en Flash (0,50 le million). Le --dry-run passe de 0,069 à 0,069 $ arrondi : la cohérence du produit ne coûte rien.

  • Je déclare une référence avec son rôle et ses droits
  • J'utilise une référence pour tout produit ou personnage récurrent
  • J'écris une retouche qui nomme la zone et protège le reste
  • Je sais que la retouche régénère toute l'image et je vérifie le produit
  • J'ai vu les deux étapes de make e2e dans sorties/e2e/orbe-test/
Suivant