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 brief | Consigne ajoutée au prompt | Limite documentée |
|---|---|---|
produit | reproduis fidèlement forme, proportions, couleurs, matériaux ; ne le redessine pas | Flash : 10 objets ; Pro : 6 en haute fidélité |
personnage | garde le même visage, la même coiffure, la même tenue | Flash : 4 personnages ; Pro : 5 |
charte | respecte la palette et l'ambiance, sans recopier les textes | 14 images au total (Pro) |
style | reprends le traitement de l'image, pas son contenu | idem |
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
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."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
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 :
Ce que donne la retouche multi-tours
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 :
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. ») :
Ce qui casse en production
| Symptôme | Cause | Parade |
|---|---|---|
| Le produit est « presque » le bon (proportions, couleur) | référence absente, ou photo de référence en situation avec d'autres objets | packshot sur fond neutre comme référence ; consigne de rôle produit |
| La retouche change aussi le visage ou le produit | consigne qui ne dit pas ce qui doit rester | toujours 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ère | au-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érie | trop 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'image | historique perdu | session de chat par visuel, ou image précédente renvoyée explicitement |
| Le logo de la charte se retrouve copié sur le produit | référence charte qui contient du texte | ré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 ?
Deux bonnes réponses. La reformulation nomme ce qui doit rester et réussit souvent. Si le produit porte un marquage qui engage la marque, le détourage dans un outil classique garantit des pixels intacts, ce que le modèle ne garantit jamais puisqu'il régénère toute l'image. Relancer à l'identique coûte sans rien changer ; faire redessiner un logo par le modèle reproduit le problème de la leçon 6.
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 ?
Un portrait de référence unique donne la cohérence ; le texte seul produit 12 personnes différentes. Envoyer toutes les images précédentes dépasse vite les limites (4 ou 5 personnages) et propage les défauts de chaque image à la suivante.
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 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 e2edanssorties/e2e/orbe-test/