Générateur de prompts LLM Stable Diffusion : Installation Python
Si vous voulez un générateur de prompts Stable Diffusion LLM pour développer quelques mots en un prompt complet et bien structuré, vous n'avez besoin que d'un modèle de texte et d'environ trente lignes de Python. Le modèle génère le prompt sous forme de texte ; il ne rend pas d'images, vous devez donc toujours traiter le résultat avec SDXL ou l'outil image que vous utilisez.


Points clés
- Le LLM génère uniquement du texte. Alimentez sa sortie dans votre propre configuration SDXL, ComfyUI ou Automatic1111.
- Le mode JSON renvoie un prompt positif et un prompt négatif que vous pouvez analyser sans regex.
- Une expansion coûte moins de 0,0001 $, donc 1 000 prompts coûtent environ 0,09 $.
- Gardez les prompts concis : les encodeurs de texte de SDXL ne lisent que les 77 premiers tokens de chaque bloc.
Ce que fait le LLM et ce qu'il ne fait pas
Les modèles d'image répondent bien aux prompts denses et précis : sujet, décor, objectif, éclairage, médium, humeur, et une liste de ce qu'il faut éviter. La plupart des gens tapent trois mots et obtiennent un résultat plat. Un LLM comble cet écart en prenant votre idée courte et en écrivant la version longue dans un format cohérent.
Soyez clair sur la répartition des tâches. Ce service est une API text-only. Il ne génère pas d'images, d'audio ou de vidéo, et il ne dispose ni d'embeddings ni de fine-tuning. Il se place devant votre pipeline d'image et génère les instructions que ce pipeline lit. Il s'agit d'un endpoint compatible OpenAI servant un seul modèle à poids ouverts d'un fournisseur indépendant, et non un produit d'un fournisseur de modèles d'image.
Le modèle est ajusté pour répondre sans refus de contenu pour un usage adulte légal, ce qui est important pour les artistes et les développeurs de jeux dont les sujets (horreur, violence dans la fiction, thèmes matures) sont bloqués ailleurs. Le contenu sexuel impliquant des mineurs est une limite stricte et n'est jamais généré.
Étape 1 : obtenir une clé et tester un appel
Inscrivez-vous avec Google ou avec e-mail et mot de passe, puis ouvrez la page clé API. Un essai en un clic ajoute 0,50 $ de crédit, valable 7 jours et sans besoin de carte. Cela suffit pour des milliers d'expansions de prompts, comme le montre la section des coûts.
Vérifiez que tout fonctionne avec curl :
curl https://api.sdxlapi.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [
{"role": "system", "content": "You write Stable Diffusion prompts."},
{"role": "user", "content": "lighthouse in a storm"}
]
}'
Tout SDK OpenAI fonctionne une fois que vous avez modifié l'URL de base et la clé. Les détails sont dans la documentation.
Étape 2 : un prompt système pour une sortie stable
Le prompt système est là où réside la qualité. Indiquez au modèle le format cible, l'ordre des éléments, une limite de longueur et ce qu'il faut exclure. Une version qui fonctionne bien comme point de départ :
Vous transformez de courtes idées d'images en prompts pour SDXL. Rédigez un prompt positif de 40 à 60 mots : sujet en premier, puis décor, composition, éclairage, médium ou style, et humeur. Utilisez des termes séparés par des virgules, pas de phrases complètes. Rédigez ensuite un prompt négatif d'au plus 15 termes courts. N'ajoutez pas de texte, filigranes ou légendes à l'image. Retournez du JSON avec les clés "prompt" et "negative".
La limite de mots est importante. Les encodeurs de texte CLIP de SDXL lisent les prompts par blocs de 77 tokens, et tout ce qui dépasse est soit coupé, soit géré par une fonction de découpage dans votre interface. Visez 40 à 60 mots pour garder la plupart des prompts dans un seul bloc, avec les détails les plus importants en premier.
Utilisez une température basse à moyenne (0,7 à 0,9) pour maintenir un style cohérent tout en faisant varier les résultats entre deux exécutions d’une même idée. Si vous avez besoin d’une sortie identique pour les tests, passez une valeur fixe pour seed.
Étape 3 : le script Python
Ce script lit les idées depuis une liste, demande du JSON et affiche la paire de prompts. Il utilise le package Python officiel OpenAI avec l'URL de base modifiée.
import json
from openai import OpenAI
client = OpenAI(base_url="https://api.sdxlapi.com/v1", api_key="YOUR_KEY")
SYSTEM = (
"You turn short image ideas into prompts for SDXL. Write one positive "
"prompt of 40 to 60 words: subject, setting, composition, lighting, "
"medium or style, mood, as comma-separated phrases. Then a negative "
"prompt of up to 15 short phrases. Return JSON with keys "
"'prompt' and 'negative'."
)
def expand(idea: str) -> dict:
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": SYSTEM},
{"role": "user", "content": idea},
],
response_format={"type": "json_object"},
temperature=0.8,
max_tokens=400,
)
return json.loads(resp.choices[0].message.content)
for idea in ["lighthouse in a storm", "abandoned greenhouse at dawn"]:
result = expand(idea)
print(idea, "->", result["prompt"])
print("negative:", result["negative"], "\n")
Le mode JSON (response_format avec json_object) permet d’obtenir une réponse facile à analyser. En production, enveloppez tout de même json.loads dans un bloc try et réessayez une fois en cas d’échec, car une longue réponse coupée à max_tokens peut se terminer au milieu d’un objet.
Étape 4 : envoyer les prompts à votre outil d'image
La sortie est constituée de chaînes de caractères brutes, donc n'importe quelle interface peut les prendre. Avec une installation locale d'Automatic1111 ou ComfyUI, envoyez les deux champs à son API. Avec un script qui boucle sur un CSV d'idées, écrivez les résultats dans un fichier et mettez-les en file d'attente par lot.
- Enregistrez l'idée, le prompt et le prompt négatif ensemble, afin de pouvoir retracer une bonne image jusqu'à l'instruction qui l'a produite.
- Ajoutez une ligne de style depuis votre propre liste ("photographie cinématique", "illustration à l'encre") comme champ supplémentaire dans le message utilisateur lorsque vous souhaitez une série avec un aspect cohérent.
- Gardez une courte bibliothèque de prompts qui ont fonctionné, et alimentez deux ou trois d'entre eux dans le prompt système comme exemples. Les exemples few-shot orientent le style plus fiablement que les adjectifs.
Pour un projet de jeu de rôle ou de jeu, le même schéma peut illustrer des scènes d'une histoire, le LLM transformant les derniers paragraphes en une description visuelle. L'article sur les scénarios de jeu de rôle textuel couvre l'aspect narratif.
Problèmes courants et solutions
Plusieurs problèmes surviennent dans presque tous les projets de générateur de prompts.
Le modèle ajoute des commentaires
Les réponses commençant par "Voici votre prompt" perturbent les pipelines. Le mode JSON supprime la plupart de cela. Si vous travaillez en texte brut, dites "sortez uniquement le prompt, sans préambule" et ajoutez une séquence d'arrêt pour une ligne que vous ne voulez jamais voir.
Tous les prompts se ressemblent
Une température basse et un template strict produisent des résultats uniformes. Augmentez la température à 1,0, variez la ligne de style que vous passez, ou demandez trois alternatives et choisissez-en une. Les pénalités (frequency_penalty, presence_penalty) sont transmises et peuvent séparer les phrases répétées.
Les prompts sont trop longs pour le modèle d'image
Imposez une limite de mots stricte dans le prompt système et vérifiez la longueur dans le code. La troncature manuelle supprime les derniers détails, qui sont généralement les moins importants, mais il vaut mieux que le modèle écrive court dès le départ.
Vous avez reçu une erreur 429
Vous avez envoyé trop de requêtes par minute ou en même temps. Attendez quelques secondes et réessayez ; la réponse peut inclure Retry-After: 5. Un lot avec un pool de threads de 4 à 8 workers reste dans les limites d'une clé complète.
Combien coûtent 1 000 prompts
La tarification est de 0,15 $ par 1 M de tokens d'entrée et 0,50 $ par 1 M de tokens de sortie. Une expansion typique envoie un prompt système d'environ 150 tokens plus une idée de 15 tokens, soit environ 170 tokens en entrée, et reçoit environ 120 tokens de JSON.
- Entrée : 170 × 0,15 $ / 1 M = 0,0000255 $.
- Sortie : 120 × 0,50 $ / 1 M = 0,00006 $.
- Par prompt : environ 0,0000855 $.
- 1 000 prompts : environ 0,0855 $, soit 0,09 $.
Arrondissez à la hausse pour les prompts longs ou few-shot. Avec 600 tokens d'exemples, l'input fait 770 tokens : 1 000 prompts coûtent ~0,1155 $ input + 0,06 $ output, soit ~0,18 $. Le trial de 0,50 $ couvre plusieurs milliers d'expansions. Les requêtes échouées ne sont pas facturées, le crédit n’expire jamais ; voir la page de tarification pour recharger (20 à 500 $, par crypto).
Plus de guides
Questions et réponses
Le LLM peut-il générer l'image Stable Diffusion lui-même ?
Non. Il écrit uniquement du texte. Vous passez son prompt à SDXL, ComfyUI, Automatic1111 ou à tout autre outil image que vous exécutez.
Quelle doit être la longueur d'un prompt SDXL ?
Environ 40 à 60 mots fonctionne bien, en plaçant les détails clés en premier, car les encodeurs de texte lisent par blocs de 77 tokens.
Refuse-t-il les thèmes matures ou sombres ?
Le modèle est ajusté pour répondre sans refus de contenu pour un usage adulte légal. Le contenu impliquant des mineurs n'est jamais produit.
Quel nom de modèle dois-je envoyer ?
Envoyez uncensored comme ID de modèle, avec l'URL de base https://api.sdxlapi.com/v1 et votre clé en tant que jeton Bearer.
Puis-je exécuter plusieurs prompts en parallèle ?
Une clé complète permet 8 requêtes simultanées et 300 par minute ; une clé d'essai en permet 2 et 60. Une réponse 429 signifie attendre et réessayer.
Votre clé n'est qu'à un formulaire d'ici
Créez un compte, copiez la clé, modifiez l'URL de base. C'est toute la configuration.