docs(hermes-nabil): backend image = OpenRouter (Gemini free tier quota 0)

This commit is contained in:
2026-07-18 11:05:22 +00:00
parent ce1e83b5fe
commit 0c5eadad1c
+24 -10
View File
@@ -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