From 0c5eadad1cfef202af34ab9edec6fcc34b0d002b Mon Sep 17 00:00:00 2001 From: bolbol Date: Sat, 18 Jul 2026 11:05:22 +0000 Subject: [PATCH] docs(hermes-nabil): backend image = OpenRouter (Gemini free tier quota 0) --- .../hermes-nabil-images-flyers-navigateur.md | 34 +++++++++++++------ 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/common/hermes-nabil-images-flyers-navigateur.md b/common/hermes-nabil-images-flyers-navigateur.md index 977170a..2d002fb 100644 --- a/common/hermes-nabil-images-flyers-navigateur.md +++ b/common/hermes-nabil-images-flyers-navigateur.md @@ -53,18 +53,32 @@ $CH --headless --disable-gpu --no-sandbox --no-pdf-header-footer \ Les `ERROR:dbus/bus.cc` sont cosmetiques (pas de bus D-Bus en conteneur), le fichier est bien ecrit. `--no-sandbox` obligatoire en conteneur. `@page{size:WxH;margin:0}` en CSS pour un PDF au format exact. -## 3. Generation d'images IA — OpenCode ne sait PAS faire +## 3. Generation d'images IA — ni OpenCode, ni Gemini free tier -Teste le 18/07/2026 sur `https://opencode.ai/zen/go/v1` : -- `/images/generations` : **404** (endpoint inexistant chez OpenCode). -- `mimo-v2-omni` : **400 "Upstream request failed"** meme sur un simple prompt texte -> modele mort cote provider. -- `mimo-v2.5` (200) invente un lien imgur bidon quand on lui demande une image. -- `/models` renvoie **403 Cloudflare 1010** sans en-tete `User-Agent` -> toujours envoyer un UA. +### OpenCode : aucune capacite image (teste 18/07/2026) +- `/images/generations` : **404**, l'endpoint n'existe pas. +- `mimo-v2-omni` : **400 "Upstream request failed"** meme sur un prompt texte trivial -> modele mort cote provider. +- `mimo-v2.5` (200) **invente un lien imgur bidon** quand on lui demande une image. +- `/models` : **403 Cloudflare 1010** sans en-tete `User-Agent`. -=> **Backend image = Google AI Studio (Gemini/Imagen)**, cle `GEMINI_API_KEY` dans `data/.env`. -Cascade implementee dans `/data/nyora/nyora_image.py` : -`gemini-3-pro-image-preview` -> `gemini-2.5-flash-image` -> `imagen-4.0-generate-001` -> `imagen-3.0-generate-002`. -Auth par en-tete `x-goog-api-key` (pas de cle dans l'URL, pas de fuite dans les logs). +### Gemini direct (Google AI Studio) : quota 0 sur le free tier +Cle valide (50 modeles listes), mais **tous** les modeles image renvoient **429 `limit: 0`** : +`gemini-3-pro-image`, `gemini-3.1-flash-image`, `gemini-2.5-flash-image` et variantes. +Les `imagen-4.0-*` renvoient **404 "no longer available to new users"**. +=> La generation d'images Google est **reservee au tier payant** (facturation activee sur le projet). +Ce n'est pas un probleme de cle : la meme cle liste les modeles et fonctionne en texte. + +### Backend retenu : OpenRouter -> `google/gemini-2.5-flash-image` +Meme modele (nano-banana), accessible immediatement, cout une fraction de centime par image. +Voir [openrouter-image-gen.md](openrouter-image-gen.md) pour les pieges (`modalities`, `message.images[]`). +Cle `OPENROUTER_API_KEY` dans `data/.env` (issue de `HERMES_PERSO_OPERSOKEY` -> en realite +`HERMES_PERSO_OPENROUTER_KEY` du NAS, transferee sans exposition : +voir [transfert-secret-inter-machines.md](transfert-secret-inter-machines.md)). + +`/data/nyora/nyora_image.py` implemente la cascade **OpenRouter -> Gemini direct** : +Gemini reste cable et prendra le relais sans modification de code le jour ou la facturation +Google sera activee. Le backend OpenRouter accepte en plus une **image source** (edition : +fond neutre, retouche), ce que la voie Gemini directe ne fait pas ici. ## 4. Pipeline flyer Nyora