docs(hermes-nabil): routage image OpenRouter par besoin et par cout

This commit is contained in:
2026-07-18 11:49:01 +00:00
parent aaeea8ea37
commit c0e733b5c7
@@ -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.