docs(hermes-nabil): backend image = OpenRouter (Gemini free tier quota 0)
This commit is contained in:
@@ -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.
|
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.
|
`--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` :
|
### OpenCode : aucune capacite image (teste 18/07/2026)
|
||||||
- `/images/generations` : **404** (endpoint inexistant chez OpenCode).
|
- `/images/generations` : **404**, l'endpoint n'existe pas.
|
||||||
- `mimo-v2-omni` : **400 "Upstream request failed"** meme sur un simple prompt texte -> modele mort cote provider.
|
- `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.
|
- `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.
|
- `/models` : **403 Cloudflare 1010** sans en-tete `User-Agent`.
|
||||||
|
|
||||||
=> **Backend image = Google AI Studio (Gemini/Imagen)**, cle `GEMINI_API_KEY` dans `data/.env`.
|
### Gemini direct (Google AI Studio) : quota 0 sur le free tier
|
||||||
Cascade implementee dans `/data/nyora/nyora_image.py` :
|
Cle valide (50 modeles listes), mais **tous** les modeles image renvoient **429 `limit: 0`** :
|
||||||
`gemini-3-pro-image-preview` -> `gemini-2.5-flash-image` -> `imagen-4.0-generate-001` -> `imagen-3.0-generate-002`.
|
`gemini-3-pro-image`, `gemini-3.1-flash-image`, `gemini-2.5-flash-image` et variantes.
|
||||||
Auth par en-tete `x-goog-api-key` (pas de cle dans l'URL, pas de fuite dans les logs).
|
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
|
## 4. Pipeline flyer Nyora
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user