Génération d’images OpenRouter dans Open WebUI et SillyTavern : ce qui fonctionne vraiment

OpenRouter propose des modèles d’images d’OpenAI, Google, ByteDance et Black Forest Labs, mais Open WebUI et SillyTavern s’y connectent différemment. Découvrez les réglages exacts, la passerelle de contournement pour Open WebUI, les options de source et de préfixe de SillyTavern, les pièges de coût et une courte liste d’erreurs à vérifier.

Génération d’images OpenRouter dans Open WebUI et SillyTavern : ce qui fonctionne vraiment
Cristian Da Conceicao
Fondateur de Picasso IA

Vous payez déjà vos modèles de chat via OpenRouter, alors envoyer vos requêtes d’images par le même compte semble une solution simple. Pas d’abonnement supplémentaire, pas de tableau de bord en plus, un seul solde à surveiller. Le hic, c’est que Open WebUI et SillyTavern atteignent OpenRouter de manières très différentes. Open WebUI utilise une route d’images de type OpenAI, et la documentation que j’ai consultée ne cite jamais OpenRouter comme option. SillyTavern présente OpenRouter comme une source d’images prête à l’emploi, mais en dit peu sur la configuration. Cet article détaille les deux chemins, signale les points où la documentation reste muette et vous donne une courte liste de vérifications pour le moment où un rendu revient vide.

Ce qu’OpenRouter propose pour les images

OpenRouter se place devant de nombreux fournisseurs, et son catalogue comprend désormais des modèles d’images de Google, OpenAI, Black Forest Labs, xAI, ByteDance, Microsoft, Recraft, Krea et Sourceful. Vous rechargez un seul solde de crédits au lieu d’ouvrir un compte chez chaque laboratoire, et vous changez de modèle en modifiant une seule chaîne de caractères.

Développeur assis à un bureau en bois devant deux écrans affichant des fenêtres de chat floutées, sous une lumière chaude de soirée

Fonctionnement du point de terminaison d’images

La documentation actuelle d’OpenRouter décrit une route dédiée aux images. Vous envoyez une requête POST à /api/v1/images avec votre jeton bearer, et le corps contient les champs ci-dessous.

ChampRôle
modelIdentifiant du modèle, par exemple bytedance-seed/seedream-4.5
promptLa description textuelle de l’image
aspect_ratioUn format normalisé, ou auto pour laisser le fournisseur choisir
resolutionUn palier allant de 512 jusqu’à 4K
sizeRaccourci pour des pixels explicites, comme 2048x2048
qualityauto, low, medium ou high
output_formatpng, jpeg, webp ou svg
nNombre d’images, de 1 à 10
streamEnvoie des aperçus partiels sous forme d’événements envoyés par le serveur

La réponse place chaque image dans un tableau data sous forme de texte base64 dans b64_json, à côté d’un media_type tel que image/png et d’un bloc usage contenant le nombre de tokens et le coût. Vous n’obtenez aucun lien hébergé. Tout ce qui se trouve entre OpenRouter et votre interface doit décoder ce texte ou l’enregistrer en fichier, et ce détail explique plusieurs des erreurs abordées plus loin dans cet article.

Pour les travaux d’image vers image, la même route accepte input_references, qui peuvent être des adresses HTTP(S) ou des URL de données base64.

💡 Astuce : Les anciens tutoriels décrivent la sortie d’images via la route de chat avec un paramètre modalities, en utilisant ["image", "text"] pour les modèles qui écrivent aussi du texte et ["image"] pour les modèles qui ne produisent que des images. Si un tutoriel et la documentation actuelle se contredisent, faites confiance à la documentation et à la page du modèle que vous appelez réellement.

Modèles à essayer

Commencez par une courte sélection plutôt que de parcourir tout le catalogue. Les identifiants ci-dessous figurent dans la documentation d’OpenRouter ou dans des exemples de passerelles communautaires, et la colonne de droite renvoie à la même famille de modèles sur PicassoIA pour que vous puissiez d’abord tester vos prompts.

Identifiant du modèle OpenRouterÉditeurMême famille sur PicassoIA
openai/gpt-image-2OpenAIGPT Image 2
bytedance-seed/seedream-4.5ByteDanceSeedream 4.5
black-forest-labs/flux.2-proBlack Forest LabsFLUX.2 Pro
google/gemini-2.5-flash-imageGoogleGemini 2.5 Flash Image

Le catalogue change souvent. Avant de copier un identifiant, filtrez la page des modèles d’OpenRouter sur la sortie image et vérifiez le slug lettre par lettre.

Avant de vous connecter

Dix minutes de préparation vous épargnent une soirée d’erreurs déroutantes. Les deux interfaces ont besoin des mêmes deux choses : un jeton que vous pouvez jeter sans regret et une idée claire du coût d’un rendu.

Créer un jeton séparé

Générez un nouvel identifiant OpenRouter réservé aux travaux d’images. Si une interface le journalise, qu’un chat de jeu de rôle boucle ou que vous le collez par accident dans une capture d’écran, vous révoquez un seul jeton et votre configuration de chat habituelle continue de fonctionner. Nommez-le d’après l’interface, par exemple un jeton pour Open WebUI et un pour SillyTavern, afin que le journal d’activité indique quelle application a dépensé quoi.

Mains tapant sur un ordinateur portable à côté d’une carte en papier unie et d’une clé de sécurité USB sur un bureau en bois

Vérifier les crédits et la facturation

OpenRouter indique que la facturation des images est du tout ou rien. Une génération soit aboutit et est facturée en totalité, soit échoue et n’est pas facturée. Les images d’aperçu partielles livrées pendant une requête en flux ne créent pas de frais partiels. C’est une bonne nouvelle pour les tentatives échouées, mais une boucle de rendus réussis vide le crédit au plein tarif, donc gardez un petit solde pendant vos tests.

Configuration d’Open WebUI

Open WebUI est le plus délicat des deux, et la raison ne tient pas à votre configuration. Tout vient du format de requête attendu de chaque côté.

Où se trouvent les réglages

Ouvrez les Paramètres d’administration et trouvez la section Images. La documentation indique le chemin Paramètres, Admin, Experience, Images, et les noms de menus changent d’une version à l’autre, donc cherchez « Images » si le vôtre diffère. Réglez Image Generation Engine sur Default (Open AI). Vous verrez ces champs :

  • API Base URL, l’adresse à laquelle les requêtes sont envoyées
  • API credential, où votre jeton est saisi
  • Model, une liste déroulante ou un nom saisi
  • Image Size, limité à ce que le moteur permet

Les tailles documentées pour le moteur OpenAI sont 256x256, 512x512 et 1024x1024 pour DALL·E 2, puis 1024x1024, 1792x1024 et 1024x1792 pour DALL·E 3, et auto, 1024x1024, 1536x1024 et 1024x1536 pour les modèles GPT-Image.

Le problème de décalage de route

C’est ici que les configurations bloquent. Le moteur OpenAI d’Open WebUI envoie une requête de type OpenAI avec des champs tels que prompt, model, n, size, quality et un format de réponse. La route d’images documentée par OpenRouter est la sienne, /api/v1/images, avec des champs différents comme aspect_ratio et resolution. Les pages d’Open WebUI que j’ai consultées décrivent OpenAI lui-même, Azure OpenAI, un proxy LiteLLM et un service de type Image Router. Aucune ne mentionne OpenRouter.

⚠️ Attention : Je n’ai pas pu confirmer que diriger le moteur OpenAI directement vers OpenRouter fonctionne dans toutes les versions. Considérez la route directe comme une expérience. Envoyez une image de test, lisez l’erreur exacte, et seulement ensuite décidez si vous avez besoin d’une couche de traduction.

Vous disposez de trois options réalistes :

  1. Tester la route directe. Saisissez https://openrouter.ai/api/v1 comme URL de base, collez votre jeton, tapez manuellement un identifiant de modèle et générez une seule image.
  2. Utiliser une passerelle de traduction. Un petit service accepte les requêtes d’images de type OpenAI et les transmet à OpenRouter. La section suivante en présente une.
  3. Utiliser un autre routeur d’images compatible OpenAI. Open WebUI documente ce schéma pour les services qui reprennent la syntaxe OpenAI.

Utiliser une passerelle dans Docker

Un projet communautaire sur Docker Hub, appelé OpenRouter Image Gateway, existe précisément pour combler cette lacune. D’après sa description, il expose POST /v1/images/generations, GET /v1/models et GET /health. Il accepte des paramètres de type OpenAI (prompt, model, n, size, quality, response_format), transmet votre jeton bearer à OpenRouter, convertit les tailles en pixels en formats OpenRouter et renvoie les images sous forme de b64_json ou d’URL.

Une fois la passerelle lancée, les champs d’Open WebUI ressemblent à ceci :

Image Generation Engine: Default (Open AI)
API Base URL:  http://openrouter-image-gateway:8000/v1
API credential: <your OpenRouter token>
Model:         google/gemini-2.5-flash-image

Utilisez http://openrouter-image-gateway:8000/v1 lorsque les deux conteneurs partagent un réseau Docker, et http://localhost:8000/v1 pour un test local sur la même machine.

⚠️ Attention : Ce logiciel est tiers et il verra votre jeton. Lisez son code source ou exécutez-le sur une machine que vous contrôlez avant de lui confier un identifiant doté d’un vrai solde. La description ne mentionne que la génération texte vers image, donc ne vous attendez pas à ce que la retouche d’images fonctionne par ce biais.

Mini PC compact posé sur une étagère en pin, à côté d’un routeur et de câbles Ethernet enroulés, vu du dessus

Choisir la taille et le modèle

Saisissez vous-même le nom du modèle au lieu d’utiliser la liste déroulante. Les propres instructions d’Open WebUI pour Image Router demandent exactement cela pour les fournisseurs autres qu’OpenAI, car la liste affiche les noms OpenAI et n’affichera jamais google/gemini-2.5-flash-image.

Pour la taille, choisissez l’option paysage la plus proche de la forme souhaitée, puis vérifiez le résultat. Quand une passerelle intervient, elle fait correspondre votre choix en pixels au format le plus proche, si bien qu’une demande en 1536x1024 peut revenir sous forme d’image propre en 3:2 plutôt qu’aux pixels exacts. C’est acceptable pour le chat, mais vérifiez avant de construire un flux de travail autour de dimensions précises.

Configuration de SillyTavern

SillyTavern adopte l’approche inverse. La génération d’images est une extension intégrée, et OpenRouter figure parmi les entrées de sa liste de sources.

Choisir OpenRouter comme source

La documentation officielle répertorie OpenRouter comme source cloud, aux côtés d’OpenAI, Black Forest Labs, FAL.AI, Google, x.AI, Stability AI et d’autres. Ouvrez le panneau Extensions, développez Image Generation, sélectionnez OpenRouter comme source, saisissez votre jeton et choisissez un modèle d’images.

Gardez à l’esprit que la documentation ne consacre aucune section de configuration dédiée à OpenRouter, contrairement à des sources comme Stability AI. Les libellés et l’ordre des champs peuvent varier d’une version à l’autre, donc considérez les étapes ci-dessus comme une carte et non comme un script à suivre à la lettre.

Jeune homme écrivant une histoire sur un ordinateur portable dans un café d’angle, avec la pluie sur la fenêtre

Les modes de génération que vous utiliserez

SillyTavern construit le prompt à partir du chat pour vous, et le mode détermine ce qu’il décrit.

ModeCommande slashCe que vous obtenez
YourselfyouPortrait en pied du personnage actuel
Your FacefacePortrait en gros plan du personnage actuel
MemePortrait de votre persona d’utilisateur
The Whole StorysceneRécapitulatif visuel des événements du chat
The Last MessagelastRécapitulatif visuel du dernier message
Raw Last Messageraw_lastDernier message envoyé tel quel comme prompt
BackgroundbackgroundArrière-plan du chat construit à partir du contexte de l’histoire

Vous pouvez accéder à ces modes de trois façons : l’élément Image Generation du menu baguette, la commande /sd suivie d’un mode ou de votre propre texte libre, ou l’icône pinceau sur un message unique pour le mode brut. La commande accepte aussi des arguments nommés, par exemple negative="blurry, extra fingers".

Quatre amis autour d’une table en chêne jouant à un jeu de rôle sur plateau, avec un ordinateur portable et des figurines

Les modes scene et last conviennent aux chats riches en histoire, où une seule image peut résumer ce qui vient de se passer à la table.

Des préfixes pour garder les personnages cohérents

Trois zones de texte déterminent la stabilité de vos images d’un rendu à l’autre :

  • Common Prompt Prefix est ajouté avant chaque prompt et définit le style général.
  • Character-Specific Prompt Prefix décrit l’apparence d’un personnage. Il ne fonctionne que dans les chats en tête-à-tête, pas dans les groupes.
  • Negative Prompt liste ce que vous ne voulez pas voir.

Une paire de départ fonctionnelle ressemble à ceci. Préfixe commun : candid 35mm photograph, natural window light, fine film grain. Préfixe de personnage : woman in her thirties, freckles, loose auburn braid, denim jacket. Gardez le préfixe de personnage court et physique, et laissez le préfixe de style porter le vocabulaire de l’éclairage et de l’objectif.

💡 Astuce : La liste des champs OpenRouter que j’ai examinée ne contient aucun champ de prompt négatif, donc cette zone risque de ne rien faire avec cette source. Décrivez plutôt ce que vous voulez en termes positifs dans le prompt principal.

Bureau d’illustrateur vu du dessus avec des portraits imprimés, des crayons de couleur et un carnet de croquis

Des prompts qui fonctionnent dans les deux

Quelle que soit l’interface utilisée, le modèle en face lit un seul prompt textuel. Un peu de structure améliore les résultats dans les deux applications.

Écrire des prompts photographiques

Construisez chaque prompt à partir de cinq éléments : le sujet, le décor, la lumière, l’objectif et la texture. Les prompts issus du chat dans SillyTavern tendent à être des résumés d’histoire, que les modèles gèrent mal. Réécrivez-les donc en description de caméra lorsque l’image compte.

Prompt faiblePrompt plus efficace
a girl in a tavernwoman in a wool cloak at a candlelit tavern table, 35mm f/1.8, warm side light, wood grain and pewter cups in sharp focus
my roomsmall attic bedroom at dusk, low-angle shot, soft window light from the right, linen sheets, visible dust in the air
a battle scenetwo riders on a muddy road at dawn, 70mm lens, overcast light, wet leather and mud splashes, shallow depth of field

Si rédiger tout cela à la main vous semble lent, demandez à un modèle de chat de le faire. Claude Sonnet 5 et Gemini 3.5 Flash transforment tous deux un récapitulatif de scène brut en une ligne prête pour la caméra en quelques secondes.

Adapter le format à la tâche

Choisissez la forme avant le modèle. Un mauvais format gaspille un rendu.

TâcheFormat suggéréRaison
Portrait de personnage2:3 ou 3:4S’adapte à un cadre haut et à un recadrage visage et épaules
Récapitulatif de scène3:2 ou 16:9Laisse de la place pour le décor complet
Arrière-plan de chat16:9Correspond à un écran large
Test rapide d’Open WebUI1:1Moyen le moins coûteux de vérifier que la route fonctionne

Gros plan d’un artiste conceptuel étudiant un écran, éclairé doucement par une fenêtre latérale

Coûts et limites qui surprennent

La plupart des factures surprenantes viennent des réglages, pas des tarifs. Le tableau liste les coupables habituels.

SituationPourquoi cela coûte plus cherQue faire
Mode interactif dans SillyTavernLes messages contenant un verbe d’action comme draw ou send suivi d’un nom comme photo ou picture déclenchent un renduDésactivez-le pour les discussions informelles
n supérieur à 1Une seule requête peut renvoyer jusqu’à 10 imagesGardez-le à 1 pendant les tests
Paliers haute résolutionLe champ resolution monte jusqu’à 4KCommencez par un palier plus bas et montez-le pour les versions finales
Boucles de nouvelles tentativesLes essais échoués ne sont pas facturés, mais les succès répétés le sontArrêtez après deux ou trois tentatives et corrigez le prompt

Le mode interactif de SillyTavern mérite un second regard. Il repère des verbes d’action comme send, make, draw, paint, render, imagine, create et mail, suivis à moins de quelques caractères de mots comme pic, picture, image, drawing, painting, photo ou photograph. Une réplique de jeu de rôle qui contient par hasard « draw a picture » peut consommer du crédit sans que vous appuyiez sur quoi que ce soit.

Vue de dessus d’un bureau avec une calculatrice, un carnet, un ordinateur portable et un café sous une lumière douce de fenêtre

💡 Astuce : Vérifiez votre page d’activité OpenRouter après les dix premiers rendus. Comparez le coût par image à ce que vous attendiez, puis ajustez le modèle et la résolution avant une longue session.

Corriger les erreurs courantes

Quand une image échoue, la cause tient en général à l’une de quatre choses : la route, le jeton, le slug du modèle ou la gestion du base64.

Image vierge ou message d’erreur

Suivez cette liste de vérifications dans l’ordre :

  1. Erreur 404 ou 405. L’interface appelle une route que le serveur ne possède pas. Revérifiez l’URL de base et déterminez si vous avez besoin de la passerelle.
  2. Erreur 401. Le jeton est incorrect, a été révoqué, ou la passerelle ne transmet pas l’en-tête bearer.
  3. Modèle introuvable. Le slug contient une faute de frappe ou un préfixe manquant. Copiez-le depuis OpenRouter au lieu de le taper de mémoire.
  4. Le fichier s’enregistre mais ne s’ouvre pas. Le texte base64 a été stocké sans être décodé. Comme OpenRouter renvoie b64_json, la couche intermédiaire doit le transformer en fichier image ou en URL.
  5. Rien ne se passe du tout. Ouvrez la console de votre navigateur ou le journal du serveur et lisez la première ligne rouge avant de modifier les réglages.

Câble Ethernet bleu branché sur un port gris d’un routeur, avec des voyants flous à l’arrière-plan

Taille ou format incorrect renvoyé

OpenRouter raisonne en formats et en paliers de résolution, tandis qu’Open WebUI raisonne en pixels. Une passerelle fait la conversion entre les deux, et cette conversion reste approximative. Si vous avez besoin d’une forme exacte, appelez OpenRouter directement avec aspect_ratio et resolution, ou recadrez ensuite. Si l’image paraît étirée, vérifiez d’abord que l’interface n’impose pas une boîte d’affichage fixe avant d’incriminer le modèle.

Testez vos prompts avant de dépenser des crédits

Chaque rendu raté coûte de l’argent réel, alors réglez vos prompts là où l’itération est bon marché. PicassoIA réunit GPT Image 2, Seedream 4.5, FLUX.2 Pro et Gemini 2.5 Flash Image au même endroit, ce qui vous permet de comparer le même prompt entre éditeurs avant d’en retenir un pour un préfixe SillyTavern ou un réglage par défaut d’Open WebUI.

Voici une routine rapide qui fonctionne :

  1. Ouvrez une page de modèle sur PicassoIA et collez votre prompt plus efficace, de style photographique.
  2. Réglez le format que vous comptez utiliser dans le chat, par exemple 2:3 pour les portraits ou 16:9 pour les arrière-plans.
  3. Générez deux ou trois variantes et notez les formulations qui ont le plus changé le résultat.
  4. Lancez le même prompt sur un second modèle et gardez celui qui correspond le mieux à votre personnage.
  5. Copiez la formulation gagnante dans votre Common Prompt Prefix ou dans votre prompt par défaut d’Open WebUI, puis basculez sur OpenRouter pour la longue session.

Prêt à essayer ? Ouvrez PicassoIA, faites passer vos trois prompts favoris par deux modèles et voyez lequel mérite une place dans votre configuration.

Partager cet article

Choisissez votre langue