diff --git a/common/hermes-nabil-images-flyers-navigateur.md b/common/hermes-nabil-images-flyers-navigateur.md index 289d51f..8d414ba 100644 --- a/common/hermes-nabil-images-flyers-navigateur.md +++ b/common/hermes-nabil-images-flyers-navigateur.md @@ -99,3 +99,34 @@ Image encodee en base64 inline dans le HTML : un seul fichier, pas de probleme d - `data/.env` est le seul fichier lu par Hermes (pas le `.env` racine). - Le wrapper mcp interdit `docker rm -f` : utiliser `docker compose up -d` (recreate propre) et `docker run --rm` pour les tests jetables. + +## 6. Edition d'image (Fal.ai + repli OpenRouter) + +`/data/nyora/nyora_image_edit.py`. Cascade **Fal.ai -> OpenRouter nano-banana**. + +### Fal.ai +- Endpoint synchrone : `POST https://fal.run/`, en-tete **`Authorization: Key `** + (pas `Bearer`). Reponse : `images[0].url` (URL hebergee, a telecharger). +- L'image source passe en **data-URI base64**, pas besoin d'heberger le fichier. +- **Piege de schema** : le nom du champ source change selon le modele — + `nano-banana/edit` attend `image_urls` (**tableau**), `flux-pro/kontext` et `qwen-image-edit` + attendent `image_url` (**chaine**). Un mauvais champ = 422. +- Modeles : `fal-ai/nano-banana/edit` (respect fidele du sujet, fond/retouche), + `fal-ai/flux-pro/kontext` (edition dirigee), `fal-ai/qwen-image-edit` (texte et details). + +### Etat du compte (18/07/2026) +Cle valide et authentifiee, mais les trois modeles renvoient +**`User is locked. Reason: Exhausted balance`** -> solde Fal.ai epuise, recharge necessaire +sur `fal.ai/dashboard/billing`. Ce n'est ni un probleme de cle ni de code. + +### Lecon : un repli silencieux masque un probleme de facturation +La cascade avait fait son travail (les editions ont abouti via OpenRouter) mais **sans rien signaler** : +les trois tests semblaient reussis alors que Fal etait mort. Correction appliquee — quand un repli +se declenche, la raison de l'echec du backend principal est ecrite sur **stderr** +(`AVERTISSEMENT repli sur OpenRouter — Fal indisponible : ...`). +**Regle generale : toute cascade de backends doit journaliser pourquoi elle est descendue d'un cran.** + +### Consignes d'edition +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)).