diff --git a/common/hermes-nabil-images-flyers-navigateur.md b/common/hermes-nabil-images-flyers-navigateur.md index ca6102e..baad5b4 100644 --- a/common/hermes-nabil-images-flyers-navigateur.md +++ b/common/hermes-nabil-images-flyers-navigateur.md @@ -139,3 +139,29 @@ se declenche, la raison de l'echec du backend principal est ecrite sur **stderr* Toujours formuler en **conservant explicitement le sujet** ("garde X exactement identique"), sinon le modele reinvente l'image. Pour un PNG reellement transparent : sujet sur fond blanc plat puis detourage flood-fill PIL depuis les bords (cf [openrouter-image-gen.md](openrouter-image-gen.md)). + +## 7. Routage image OpenRouter : le moins cher qui couvre le besoin + +`/data/nyora/nyora_models.py`. Le catalogue OpenRouter est interroge (cache 24 h), +filtre sur les modeles a sortie image, puis classe par **cout estime par image**. + +**Piege de comparaison** : comparer les prix **au token** entre familles est faux — +une image consomme ~1290 tokens de sortie chez Gemini contre ~1568 chez OpenAI. +Sans cette normalisation, `gpt-5-image-mini` paraissait moins cher que +`gemini-2.5-flash-image` alors qu'il est plus cher a l'image. +**Piege de sous-chaine** : `"gpt-5-image" in "gpt-5-image-mini"` est vrai — le mini +etait classe premium par erreur. Les modeles brides (`lite`, `-mini`) sont exclus explicitement. + +| besoin | usage | modele (18/07/2026) | cout/image | latence mesuree | +|---|---|---|---|---| +| `brouillon` | iteration, essai jetable | `google/gemini-3.1-flash-lite-image` | ~0,0019 $ | 3 s | +| `flyer` | visuel de production, edition | `google/gemini-2.5-flash-image` | ~0,0032 $ | 6 s | +| `premium` | texte DANS l'image, logo, affiche | `google/gemini-3-pro-image` | ~0,0155 $ | 26 s | + +**Regle economique** : `premium` seulement si l'image doit contenir du **texte lisible**. +Dans un flyer Nyora le texte est pose en HTML (net, orthographie, corrigeable) — +donc `flyer` suffit et coute **5 fois moins cher** pour un rendu final superieur. + +Aucun modele n'est code en dur : une baisse de prix ou un nouveau modele chez OpenRouter +est pris en compte automatiquement (`--refresh` pour forcer). En cas d'echec du moins cher, +les suivants sont essayes par cout croissant, et l'ecart est journalise sur stderr.