Formation Manager · 30 min Dataiads Internal Mai 2026 · Paris

Optimiser nos pipelines GenAI

Diviser par 5 à 20 la facture, sans toucher à la qualité Document de référence interne
Formation interne · Feed Enrich

Nos workflows GenAI consomment (peut-être) 95 % de leurs tokens pour rien.

Sur 100 à 500K produits par client, plusieurs runs par jour, la facture mensuelle grimpe vite — et elle grimpe surtout pour des raisons évitables. Cette formation expose les 4 leviers qui transforment un workflow Feed Enrich à $3 480 / mois en un workflow équivalent à $57 / mois. Mêmes outputs, même qualité.

Lecture≈ 15 min
AudienceManagers
Modèle de référenceGemini 2.5 Flash-Lite
Catalogue type100K produits
Gain visé×5 à ×60
$3 480
Coût mensuel d'un workflow naïf (100K produits, 1 run/jour)
Baseline · 4 nodes séparés
$57
Coût du même workflow, optimisé (structured + missing only)
Cible · 4 leviers appliqués
−98%
Réduction du coût par client, à qualité d'output identique
Cumul des leviers
15:1
Ratio input/output sur un appel Feed Enrich typique
L'input pèse 15× l'output
95%
Du catalogue n'a pas bougé depuis le dernier run
Analyse Dataiads · 150K SKU
×20
Gain immédiat d'activer "missing product only" sur un workflow
Réglage le plus rentable
§ I · Le piège

Le coût est dans l'input, pas dans l'output.

C'est le message le plus important de la formation. Tout le reste en découle. Quand on pense « coût d'un LLM », on pense intuitivement à la génération : les mots que le modèle produit. C'est faux pour nos usages. Sur un appel Feed Enrich, le prompt système, les règles et les données produit pèsent 15 à 30 fois plus que la réponse générée. Optimiser la longueur de la réponse n'apporte rien. Le combat se joue sur l'input.

Input — ce qui part au LLM
1 500

tokens en moyenne par appel : prompt système + règles + données produit injectées.

Output — ce que le LLM produit
80

tokens en moyenne : un titre GMC, une description courte, un attribut normalisé.

Combien coûte concrètement un appel ?

Sur Gemini 2.5 Flash-Lite, un appel typique Feed Enrich coûte 0,018 centime. Imperceptible à l'unité. Mais multiplié par un catalogue × une fréquence, le résultat devient massif.

Échelle1 node Feed Enrich, Gemini 2.5 Flash-Lite CoûtUSD
1 appel$0,000182
1 000 appels$0,18
10 000 appels$1,82
100 000 appels (1 run sur 100K produits)$18,20
100 000 produits × 1 run / jour × 30 jours (par mois, par node)$546
100K produits × 4 nodes séparés × 1 run/jour × 30j (par mois — typique d'un workflow non optimisé)$2 184
Règle d'or Chaque token économisé sur l'input est multiplié par (nombre de produits × fréquence des runs × nombre de nodes). C'est là qu'on gagne de l'argent — pas en raccourcissant les sorties.
§ II · Anti-pattern n°1

Le piège des variables non résolues.

L'erreur la plus répandue dans nos prompts actuels. Le Manager voit un prompt court à l'écran ; l'input réel envoyé au LLM est massif. Pourquoi ? Parce que les variables ne sont pas encore résolues au moment où on écrit le prompt.

Ce que le Manager voit vs ce que le LLM reçoit

Vue Managerdans Dataflow
Génère un titre GMC pour ce produit. Description : {description} Type : {producttype} Couleur : {color}
Reçu par le LLMà l'exécution
Génère un titre GMC pour ce produit. Description : Veste en coton softshell déperlant avec capuche ajustable, fermeture éclair YKK, deux poches latérales zippées, ourlet ajustable par cordon de serrage, doublure mesh respirante. Coloris noir uni. Coupe ajustée. Composition : 95% coton, 5% élasthanne. Lavable en machine à 30°C. Origine Italie. Type : Veste softshell Couleur : Noir

Multiplié par 150 000 produits × 4 runs/jour × 30 jours, l'écart représente 2,8 milliards de tokens de différence par mois — sur un seul prompt. À $0,10 / 1M tokens, ça fait $279 de plus chaque mois, pour un prompt qu'on croyait court.

Piège n°1.a — La duplication de variables

Beaucoup de prompts répètent la même variable plusieurs fois pour « insister » :

Tu vas générer un titre pour ce produit : {description}. Le titre doit refléter {description} avec précision. N'invente rien qui ne soit pas dans {description}.
Conséquence directe Si la description pèse 200 tokens, elle est envoyée 3 fois au LLM = 600 tokens facturés au lieu de 200. Sur 100K produits × 30 jours, ça représente $120 jetés par la fenêtre chaque mois, sur un seul node.

Piège n°1.b — Les branches conditionnelles dans le prompt

Encore pire : faire raisonner le LLM avec des règles « si / alors » imbriquées.

Si {producttype} est "Sac à main", utilise le ton premium et mentionne la matière en premier. Si {producttype} est "Chaussures", commence par la pointure. Si {producttype} est "Vêtement", commence par la coupe et le genre. Si {producttype} est "Accessoire", reste générique. [... 12 cas supplémentaires ...]

Le LLM lit toutes les branches à chaque appel, même si une seule s'applique. Sur 150K produits, on paie 16 branches × 150K = 2,4 M de lectures de règles inutiles à chaque run. Le routage conditionnel doit se faire dans Dataflow en amont si possible, pas dans le prompt.

# En amont, dans Dataflow : un node de routage qui aiguille # chaque produit vers le bon node Gen AI selon producttype. producttype == "Sac à main" Node Gen AI "Titre Sacs" producttype == "Chaussures" Node Gen AI "Titre Chaussures" producttype == "Vêtement" Node Gen AI "Titre Vêtements" default Node Gen AI "Titre Générique"

Chaque node a son prompt court et ciblé. Le LLM ne reçoit que la règle qui concerne ce produit-là.

Gain typique Nettoyer un prompt bloated (variables dupliquées + branches conditionnelles + verbosité) réduit l'input de 20 à 40 %. Sur un workflow à $3 480 / mois, c'est $700 à $1 400 économisés sans rien changer à la qualité.
§ III · Levier n°1

Structured outputs : 1 appel vaut 4 nodes.

L'anti-pattern le plus coûteux de nos workflows. Sur un même produit, on a parfois 4 ou 5 nodes Gen AI Feed qui font chacun un appel séparé : un pour la couleur, un pour les highlights, un pour la description, un pour les attributs GMC. Chaque node recharge la même description, relit le même contexte, refait le même travail de compréhension sémantique — et ne sort qu'un seul champ.

Avant — 4 appels séparés (anti-pattern)

Node 1Couleur principale → "Noir"
Node 2Genre → "Homme"
Node 33 points forts → ["Capuche", "Déperlant", "Mesh"]
Node 4Catégorie normalisée → "Veste"

Après — 1 appel structuré (bon pattern)

Node uniqueJSON structuré complet
{ "main_color": "Noir", "gender": "Homme", "highlights": ["Capuche", "Déperlant", "Doublure mesh"], "normalized_category": "Veste" }

Le delta de coût, en chiffres

Setuppar produit · Gemini 2.5 Flash-Lite Inputtokens Outputtokens Coût / produitUSD Sur 100K × 30jUSD / mois
4 appels séparés (naïf) 4 800 120 $0,000528 $1 584
1 appel structuré (optimisé) 1 300 80 $0,000162 $486
Gain Levier n°1 $1 098 économisés par mois sur ce workflow (−69 %), à qualité d'output identique. Le LLM ne fait le travail de compréhension produit qu'une seule fois — d'où, en bonus, une meilleure cohérence entre les champs : « Noir » et « Veste » sont produits dans le même raisonnement.

Bonus — réutiliser le JSON dans les nodes suivants

Vocabulaire Dans un workflow Dataflow, les nodes s'enchaînent en chaîne. Un node en aval (« downstream » en anglais) est un node qui s'exécute après un autre et qui peut récupérer son résultat. À l'inverse, en amont = avant. Dans notre cas : le node Product Understanding tourne en premier ; les nodes en aval (titre GMC, description, ads copy) tournent ensuite et reçoivent en entrée ce que le premier a produit.

Une fois qu'on a le JSON enrichi (Node 1 — Product Understanding), les nodes suivants qui génèrent du contenu — titre GMC, description, ads copy — peuvent consommer ce JSON déjà digéré au lieu de relire toute la donnée produit brute depuis zéro.

Node 1Product Understanding · produit JSON structuré
Node 2GMC Title · reçoit le JSON du Node 1
Node 3Description · reçoit le JSON du Node 1
Node 4Ads copy · reçoit le JSON du Node 1

Chaque node en aval reçoit en input ~200 tokens (le JSON compact résumé par le Node 1) au lieu de ~1 200 tokens (la fiche produit brute + le contexte client). Le coût des nodes en aval est divisé par 6.

À retenir Toujours préférer un JSON structuré à du texte libre. Mutualiser tout ce qui relève de la compréhension produit dans un seul node. Les nodes suivants consomment ce JSON, pas la donnée brute. La validation déterministe (whitelist, format, longueur) se fait en code — jamais dans le prompt.
§ IV · Levier n°2

Désactiver le master prompt sur les nodes Gen AI.

Par défaut, Dataflow injecte un « master prompt » — typiquement trois paragraphes de texte brut décrivant le rôle de l'assistant, le ton attendu et des règles génériques — devant chaque prompt de chaque node Gen AI. C'est invisible pour le Manager, c'est facturé sur chaque appel, et c'est presque toujours redondant avec ce qu'on écrit déjà dans le prompt du node.

Deux problèmes, pas un

Le master prompt n'est pas qu'une question de coût. Il pose deux problèmes simultanés, et ils se renforcent l'un l'autre.

Problème n°1 — Coût
~300

tokens supplémentaires partent à chaque appel. Multipliés par 3 à 12 millions d'appels par mois sur un workflow client, ça pèse lourd — pour du contenu que le Manager n'a jamais écrit et ne contrôle pas.

Problème n°2 — Qualité

Le master prompt définit un rôle générique (« Tu es un assistant utile… »). Quand le Manager redéfinit un rôle plus précis dans le node (« Tu es un expert mode & luxe… »), les deux se contredisent. Le LLM reçoit des instructions floues.

Combien ça coûte concrètement

Sur un workflow client de 100K produits, à 1 run/jour, le master prompt seul représente :

Configuration du workflow Appels / mois Coût mensuel du master prompt300 tokens × $0,10/1M
4 nodes séparés, sans missing-only (naïf)12 000 000$360
4 nodes séparés, missing-only activé600 000$18
1 understanding + 3 nodes en aval, sans missing-only12 000 000$360
1 understanding + 3 nodes en aval, missing-only activé600 000$18

Sur un workflow naïf, c'est $360 par mois jetés par la fenêtre, par client — uniquement pour répéter trois paragraphes de texte que personne n'a relus depuis six mois. À l'échelle du portefeuille Dataiads, on est très vite sur plusieurs milliers d'euros par mois en cumul.

Le bon réflexe

Dès qu'un node Gen AI définit son propre rôle dans son prompt, désactiver le master prompt sur ce node. C'est une case à cocher dans Dataflow. Moins d'une minute par node. Trois règles simples pour décider :

Cas 1Garder

Master prompt utile

Le node Gen AI ne définit pas de rôle dans son prompt. Le master prompt apporte le contexte transverse minimal. Laisser activé.

Cas 2Désactiver

Master prompt redondant

Le node définit déjà son propre rôle et son ton dans son prompt. Le master prompt ne fait que répéter (et coûter). Désactiver.

Cas 3Désactiver impérativement

Master prompt contradictoire

Le node définit un rôle ou un ton qui contredit celui du master prompt. Double peine : on paie pour des tokens qui dégradent la qualité. Désactiver sans hésiter.

Gain Levier n°2 Réduction directe et silencieuse de l'input par appel, sans effort éditorial sur les prompts. Sur les workflows aujourd'hui en prod, ça représente entre 10 % et 20 % de tokens en moins, avant même de toucher au reste — et souvent un gain de qualité en prime, parce qu'on supprime les instructions contradictoires.
§ V · Levier n°3

« Missing product only » : le réglage le plus rentable.

Dans Dataflow, l'option « missing product only » fait en sorte que le node ne traite que les produits qui n'ont pas encore d'output, ou dont les inputs ont changé. Sans ce réglage, à chaque run, le node retraite l'intégralité du catalogue — y compris les produits qui n'ont pas bougé depuis trois semaines.

Sur un catalogue de 150K — une journée typique

Type d'évolution Volume / jour Part du catalogue
Nouveaux produits~1 5001 %
Produits modifiés (prix, stock, attributs)~6 0004 %
Produits inchangés (à ne pas retraiter)~142 50095 %
Sans missing-only
150 000

produits enrichis à chaque run — y compris les 95 % qui n'ont pas bougé.

Avec missing-only
~7 500

produits enrichis à chaque run. Même qualité, même fraîcheur, ×20 moins cher.

×20

de réduction immédiate

C'est le réglage le plus rentable de tous nos workflows. Sans aucune perte de qualité. Cinq minutes par workflow pour activer la case. À vérifier sur tous les pipelines actifs lors du prochain audit.

Quand est-ce qu'on désactive missing-only ?

Trois cas légitimes uniquement, jamais un quatrième :

Cas 1Migration

Premier run sur un nouveau client

On doit enrichir tout le catalogue une fois. Une fois ce backfill terminé, on réactive missing-only.

Cas 2Refonte

Changement de prompt ou de modèle

Les outputs précédents sont invalidés. On retraite tout, une seule fois, puis on remet missing-only.

Cas 3Demande client

Refresh manuel exceptionnel

Le client demande explicitement un refresh complet. Cas rare. On documente, on exécute, on remet missing-only.

Règle Dans tous les autres cas, missing-only doit être ON par défaut. Tout workflow GenAI sans missing-only doit être considéré comme un bug à corriger.
§ VI · Levier n°4

La fréquence des runs — le levier oublié.

À quelle fréquence le client a-t-il vraiment besoin que ce node tourne ? On programme des runs toutes les 6h ou tous les jours par défaut, sans se poser la question. Or, sur la plupart des cas d'usage Feed Enrich, ce n'est pas nécessaire.

Coût relatif selon la fréquence

Fréquence configurée Runs / mois Coût relatif Sur 100K, structured + missing only
Toutes les 6h (défaut excessif)120×24$680 / mois
Toutes les 12h60×12$340 / mois
1× par jour30×6$57 / mois
1× par semaine (suffisant pour la plupart des attributs)4×1 — ref$7,60 / mois

La bonne fréquence par cas d'usage

1×/semrecommandé

Enrichissement attributaire

Couleur, matière, genre, catégorie. Ces attributs ne bougent quasiment jamais. 1× par semaine suffit largement.

1×/jourconditionnel

Titres GMC, descriptions

1× par jour uniquement si les fiches produit évoluent souvent. Sinon, 1× par semaine reste largement suffisant.

librepas de LLM

Stock, prix, disponibilité

Ces flux ne passent pas par le LLM, ils sont déterministes. Fréquence libre, pas d'enjeu de coût GenAI.

à la demandejamais récurrent

Smart Creative · génération créative

Jamais en récurrent. À déclencher manuellement sur demande client uniquement.

Question à se poser avant de configurer une fréquence « Qu'est-ce qui change réellement entre deux runs ? » Si la réponse est « rien ou presque », réduire la fréquence. C'est le seul critère qui compte.
§ VII · Synthèse

Coûts réels par taille de catalogue.

Voici à quoi ressemble la facture mensuelle d'un workflow Feed Enrich sur Gemini 2.5 Flash-Lite, selon la taille du catalogue client et le niveau d'optimisation appliqué. Tous les chiffres sont en USD, par client, par mois.

Workflow type : 1 node Product Understanding + 3 nodes en aval

Catalogue Naïf4 nodes séparés, 1 run/jour + Prompts nettoyés−30% input + Structured outputs1 understanding + 3 en aval + Missing only5 % du catalogue / run + Fréquence 1×/semcible finale
50K produits$1 740$1 290$567$28$3,80
100K produits$3 480$2 580$1 134$57$7,60
250K produits$8 700$6 450$2 835$142$18,90
500K produits$17 400$12 900$5 670$284$37,80
1M produits$34 800$25 800$11 340$567$75,60

Et avec une fréquence à 4 runs/jour (cas réel actuel sur certains workflows)

Catalogue Naïf, 4 runs/jouraucune optim Cible optimiséestructured + missing + 1×/sem Économie / mois Économie / an Facteur
50K$6 960$3,80$6 956$83 475×1 832
100K$13 920$7,60$13 912$166 950×1 832
250K$34 800$18,90$34 781$417 374×1 841
500K$69 600$37,80$69 562$834 748×1 841
1M$139 200$75,60$139 124$1 669 495×1 841
$167K

de potentiel maximum, par an, par client

Personne ne tourne aujourd'hui en mode 100 % naïf — heureusement. La plupart de nos workflows ont déjà des bouts d'optimisation appliqués (structured ici, missing-only là). Le chiffre est donc à lire comme un potentiel de coût maximal, pas comme une facture réelle.

Le vrai message : même sur des workflows qu'on croit déjà bien optimisés, il reste presque toujours un facteur 2 à 5 à aller chercher. La checklist Manager ne sert pas à corriger l'extrême — elle sert à finir le boulot que la première vague d'optimisation a laissé inachevé.

Hypothèses de calcul. Gemini 2.5 Flash-Lite : $0,10/1M input, $0,40/1M output. Naïf = 4 nodes × 2 500 input + 100 output / produit. Nettoyé = 4 × 1 750 + 100. Structured = 1 × (1 300 in + 80 out) + 3 × (400 in + 80 out). Missing-only = 5 % du catalogue traité par run. 30 jours / mois. Workflow client typique : 1 Product Understanding + 3 nodes de génération en aval (titre GMC, description, ads copy).

§ VIII · Plan d'action

Checklist Manager & ordre de priorité.

À passer en revue sur chaque workflow client. Pas un audit annuel : une checklist à dégainer dès qu'un workflow est créé ou modifié.

Côté prompt

  • Aucune variable n'est dupliquée dans le prompt
  • Pas de branches conditionnelles — routage en code
  • Pas de « RÈGLES CRITIQUES / OBLIGATOIRE / INTERDICTIONS » en majuscules
  • Pas de validation déterministe (whitelist, longueur) — en post-processing
  • Prompt système court et stable, données produit en JSON compact

Côté architecture

  • Un seul node « Product Understanding » qui produit un JSON multi-champs
  • Les nodes suivants consomment ce JSON, pas la donnée brute
  • Pas de node Gen AI par attribut isolé
  • Validation et formatage en post-processing déterministe

Côté workflow Dataflow

  • « Missing product only » activé sur tous les nodes Gen AI
  • Master prompt désactivé quand le node définit déjà son rôle
  • Fréquence calibrée selon la nature du contenu
  • Gemini 2.5 Flash-Lite par défaut pour l'attributaire
  • Flash réservé aux cas où Flash-Lite ne suffit pas — à valider via A/B test

Ordre de priorité — si vous ne devez faire qu'une chose ce mois-ci

Prioritén°1

Activer « missing product only » partout · gain ×10 à ×20

Le réglage le plus rentable. Quelques minutes par workflow. À auditer cette semaine sur tous les pipelines actifs.

Prioritén°2

Mutualiser les nodes en un seul appel structured · gain ×3 à ×5

Refactor des workflows : 1 node Product Understanding + les nodes en aval consomment son JSON. Refonte ciblée sur les workflows les plus consommateurs en priorité.

Prioritén°3

Réduire la fréquence quand c'est possible · gain ×2 à ×6

Audit fréquence par workflow. Question test : « qu'est-ce qui change réellement entre deux runs ? ». Si rien — passer à 1×/sem.

Prioritén°4

Désactiver le master prompt quand redondant · gain ×1,1 à ×1,2 + qualité

Une case à cocher par node. Moins d'une minute par workflow. Petit gain de coût mais souvent un gain de qualité en prime — on supprime les contradictions de rôle.

Prioritén°5

Nettoyer les prompts · gain ×1,5 à ×3

Dédupliquer les variables, sortir les branches conditionnelles, supprimer la verbosité (majuscules, ponctuation emphatique). À faire au passage, quand on touche un workflow pour autre chose.

Ces gains se cumulent

Sur un workflow client typique de 100K produits, on passe d'une facture de plusieurs milliers d'euros par mois à quelques dizaines d'euros — sans toucher à la qualité des outputs livrés. À l'échelle du portefeuille, ce sont des millions d'euros annuels à reconquérir, en cinq réglages.

Cette discipline n'est pas un projet ponctuel. C'est un réflexe Manager à intégrer à chaque création ou modification de workflow. La checklist se passe en cinq minutes. La facture, elle, se passe sur douze mois.

FIN