Création · LLM-as-judge
QuiteLucid
Un atelier d'agents qui conçoit, génère, juge et affine des illustrations de cartes, avec l'humain comme juge final.
Création · LLM-as-judge
QL
01 · Vue d'ensembledémo vidéo à venir
Création · LLM-as-judge
QL
02 · Sous le capotdémo vidéo à venir
Création · LLM-as-judge
QL
03 · Résultatdémo vidéo à venir
En bref
- Problème : automatiser la création et la sélection d'illustrations sans perdre le goût de l'auteur.
- Ce que j'ai fait : un orchestrateur déterministe, cinq agents à rôle unique, un lecteur aveugle, et un tri humain en un geste qui relance ou finalise.
- Résultat : des runs mesurés et reproductibles, et une leçon clé : un juge qui hallucine sans erreur est pire qu'un juge en panne.
Contexte
QuiteLucid est un jeu de cartes illustrées sur l’écologie, dans l’esprit des jeux d’association d’images. Chaque carte doit être surréaliste, lisible à plusieurs niveaux, et accompagnée d’un court article sourcé.
Deux difficultés : une belle image n’est pas une image juste (elle peut ne pas porter le sujet, ou le porter trop littéralement), et le volume rend le tri manuel intenable.
Le pipeline
- Le sujet vient de la liste des cartes. Le style n’est jamais dans le brief : il est injecté depuis une fiche de style.
- Les images sont générées par Codex (modèle d’image d’OpenAI, inclus dans l’abonnement ChatGPT : aucun coût d’API).
- L’orchestrateur enchaîne : brief, vagues de génération, lecture aveugle, critique, score, décision, rapport.
- Des agents à rôle unique apportent le jugement : directeur, auteur des prompts, lecteur aveugle, critique, gardien des motifs répétitifs. Ils échangent par fichiers JSON validés par schéma.
- Une application web permet de trier en un geste. Un ❤️ relance une lignée d’affinage, un ⭐ publie la carte.
Architecture
Durcissement
- Un lecteur en panne ne vaut plus zéro : le score est marqué « non fiable ».
- Arrêt automatique si la meilleure image d’une vague régresse.
- Les éléments obligatoires du brief sont réinjectés à chaque génération.
- Appels bornés par timeout, parallélisme limité, coût suivi par agent.
Décisions
Les choix qui structurent le projet, avec l'option écartée et la raison.
D1 Le script orchestre, le LLM juge
- Choix
- Un orchestrateur Python déterministe enchaîne les étapes ; les agents ne font que créer ou juger.
- Écarté
- Un agent orchestrateur qui décide de tout.
- Pourquoi
- Enchaînement testable, coûts bornés, et pannes localisables.
D2 Un lecteur vraiment aveugle
- Choix
- Le lecteur ne reçoit que l'image, garanti par le script.
- Écarté
- Lui demander dans le prompt d'ignorer le brief.
- Pourquoi
- Mesurer si l'image porte le sujet sans aide. Une consigne n'est pas une garantie.
D3 Une image canari avant chaque run
- Choix
- Une image au contenu connu est relue avant de générer ; si elle est mal décrite, le run s'arrête.
- Écarté
- Faire confiance à un juge qui répond sans erreur.
- Pourquoi
- Après un changement de modèle, des centaines d'images ont été jugées par un lecteur qui ne les voyait pas.
D4 Un geste plutôt qu'un commentaire
- Choix
- Tri en trois états : rejet, ❤️ (à affiner, relance auto), ⭐ (carte finale).
- Écarté
- Retour écrit à chaque image.
- Pourquoi
- Le retour humain doit coûter une seconde pour rester régulier.
Résultats
| Mesure | Avant | Après |
|---|---|---|
| Meilleur score sur 10 | 6,3–6,6 (vague 0) | 8,1 (vague 2) |
| Durée du run | · | 42 min |
| Appels de modèle | · | 78 |
| Coût marginal | · | 0 € (abonnement inclus) |
Limites et suite
- Le juge automatique finit par converger vers ses propres goûts : l'audit de 837 verdicts humains a imposé un recalage sur les choix de l'auteur.
- Un juge sans accès aux images a noté des centaines d'images avant d'être détecté. Le canari corrige le symptôme ; la vigilance reste nécessaire.
- Le parallélisme reste limité (deux appels valent mieux que quatre) : le débit n'est pas l'objectif.
Ce que ce projet démontre
- Orchestration multi-agents : script déterministe, rôles spécialisés, contrats JSON
- Évaluation LLM-as-judge : grilles, canaris, détection de dérive, recalage sur l'humain
- Humain dans la boucle : un geste simple qui pilote la génération suivante
- Durcir un pipeline : arrêt sur régression, invariants, post-mortems écrits