Stable-Diffusion-Prompt-Generator-LLM: Python-Setup
Wenn du einen Stable-Diffusion-Prompt-Generator-LLM möchtest, der wenige Wörter in einen vollständigen, gut strukturierten Prompt erweitert, benötigst du nur ein Textmodell und etwa dreißig Zeilen Python. Das Modell schreibt den Prompt als Text; es rendert keine Bilder, daher leitest du das Ergebnis weiterhin durch SDXL oder ein anderes Bild-Tool deiner Wahl.


Wichtige Punkte
- Das LLM schreibt nur Text. Füttere seine Ausgabe in deine eigene SDXL-, ComfyUI- oder Automatic1111-Einrichtung.
- Der JSON-Modus gibt einen positiven Prompt und einen negativen Prompt zurück, den du ohne Regex parsen kannst.
- Eine Erweiterung kostet weniger als $0,0001, also kosten 1.000 Prompts etwa $0,09.
- Halte Prompts kompakt: SDXLs Text-Encoder lesen nur die ersten 77 Token jedes Chunks.
Was das LLM tut und was es nicht tut
Bildmodelle reagieren gut auf dichte, präzise Prompts: Subjekt, Umgebung, Objektiv, Beleuchtung, Medium, Stimmung und eine Liste von Dingen, die vermieden werden sollen. Die meisten geben nur drei Wörter ein und erhalten ein flaches Ergebnis. Ein LLM schließt diese Lücke, indem es deine kurze Idee nimmt und die lange Version in einem konsistenten Format schreibt.
Sei klar über die Aufgabenteilung. Dieser Dienst ist eine text-only-API. Er generiert keine Bilder, Audio oder Video und hat keine Embeddings oder Feinabstimmungen. Er steht vor deiner Bild-Pipeline und schreibt die Anweisungen, die diese Pipeline liest. Es ist ein OpenAI-kompatibler Endpunkt, der ein Open-Weight-Modell eines unabhängigen Anbieters bedient, nicht ein Produkt eines Bild-Modell-Anbieters.
Das Modell ist darauf abgestimmt, bei legaler Erwachsennutzung ohne Inhaltsfilter zu antworten, was für Künstler und Spielesentwickler wichtig ist, deren Motive (Horror, Gewalt in der Fiktion, reife Themen) woanders blockiert werden. Sexuelle Inhalte mit Minderjährigen sind eine harte Grenze und werden niemals erzeugt.
Schritt 1: Schlüssel besorgen und einen Aufruf testen
Melde dich mit Google oder mit E-Mail und Passwort an und öffne die API-Schlüssel-Seite. Ein Klick-Test fügt $0,50 Guthaben hinzu, gültig für 7 Tage und ohne Kartenangabe. Das reicht für Tausende von Prompt-Erweiterungen, wie der Kostenabschnitt zeigt.
Überprüfe, ob alles funktioniert, mit 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"}
]
}'
Jedes OpenAI-SDK funktioniert, sobald du die Base URL und den Schlüssel änderst. Details findest du in der Dokumentation.
Schritt 2: Ein System-Prompt für stabile Ausgaben
Der System-Prompt ist die Quelle der Qualität. Sage dem Modell das Ziel-Format, die Reihenfolge der Elemente, eine Längengrenze und was weggelassen werden soll. Eine Version, die gut als Startpunkt dient:
Du wandelst kurze Bildideen in Prompts für SDXL um. Schreibe einen positiven Prompt von 40 bis 60 Wörtern: Subjekt zuerst, dann Umgebung, Komposition, Beleuchtung, Medium oder Stil und Stimmung. Verwende durch Komma getrennte Phrasen, keine ganzen Sätze. Schreibe dann einen negativen Prompt von bis zu 15 kurzen Phrasen. Füge keinen Text, keine Wasserzeichen oder Beschriftungen zum Bild hinzu. Gib JSON mit den Schlüsseln "prompt" und "negative" zurück.
Die Wortgrenze ist wichtig. SDXLs CLIP-Text-Encoder lesen Prompts in Chunks von 77 Token, und alles darüber hinaus wird entweder abgeschnitten oder von einer Chunking-Funktion in deiner UI verarbeitet. Ein Ziel von 40 bis 60 Wörtern hält die meisten Prompts in einem Chunk, wobei die wichtigsten Details zuerst kommen.
Verwende eine niedrige bis mittlere Temperatur (0,7 bis 0,9), damit der Stil konsistent bleibt, aber zwei Durchläufe derselben Idee variieren. Wenn du für Tests identische Ausgaben benötigst, übergebe einen festen seed.
Schritt 3: Das Python-Skript
Dieses Skript liest Ideen aus einer Liste, fragt JSON an und gibt das Prompt-Paar aus. Es verwendet das offizielle OpenAI-Python-Paket mit geänderter Base URL.
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")
Der JSON-Modus (response_format mit json_object) macht die Antwort sauber parsebar. Packe trotzdem json.loads in einem try-Block in der Produktion ein und versuche es einmal erneut, wenn es fehlschlägt, da eine lange Antwort, die bei max_tokens abgeschnitten wird, mitten im Objekt enden kann.
Schritt 4: Prompts an dein Bild-Tool senden
Die Ausgabe sind reine Strings, daher kann sie jede Frontend-Anwendung verarbeiten. Bei einer lokalen Installation von Automatic1111 oder ComfyUI sende die zwei Felder an dessen API. Mit einem Skript, das über eine CSV-Datei mit Ideen iteriert, schreibe die Ergebnisse in eine Datei und plane sie als Batch.
- Speichere die Idee, den Prompt und den negativen Prompt zusammen, damit du ein gutes Bild bis zur Anweisung zurückverfolgen kannst, die es erzeugt hat.
- Füge eine Stilzeile aus deiner eigenen Liste ("kinematografisches Foto", "Tintenillustration") als zusätzliches Feld in die Benutzer-Nachricht ein, wenn du eine Serie mit einem passenden Look möchtest.
- Halte eine kurze Bibliothek von Prompts, die funktioniert haben, und füttere zwei oder drei davon als Beispiele in den System-Prompt. Few-Shot-Beispiele steuern den Stil zuverlässiger als Adjektive.
Für ein Rollenspiel- oder Spielprojekt kann das gleiche Muster Szenen aus einer Geschichte veranschaulichen, wobei das LLM die letzten paar Absätze in eine visuelle Beschreibung umwandelt. Der Artikel über textbasierte Rollenspiel-Szenarien behandelt die Geschichtenseite.
Häufige Probleme und Lösungen
Bei fast jedem Prompt-Generator-Projekt treten einige Probleme auf.
Das Modell fügt Kommentare hinzu
Antworten, die mit „Hier ist dein Prompt“ beginnen, brechen Pipelines. Der JSON-Modus entfernt die meisten davon. Wenn du im Klartext arbeitest, schreibe „nur den Prompt ausgeben, keine Einleitung“ und füge eine Stoppsequenz für eine Zeile hinzu, die du nie sehen möchtest.
Jeder Prompt sieht gleich aus
Niedrige Temperatur und eine strenge Vorlage liefern einheitliche Ergebnisse. Erhöhe die Temperatur auf 1,0, variiere die Stilzeile, die du übergibst, oder fordere drei Alternationen an und wähle eine aus. Strafen (frequency_penalty, presence_penalty) werden durchgereicht und können wiederholte Phrasen aufbrechen.
Prompts sind zu lang für das Bildmodell
Setze eine harte Wortgrenze in den System-Prompt und prüfe die Länge im Code. Manuelles Kürzen lässt die letzten Details fallen, die normalerweise am wenigsten wichtig sind, aber es ist besser, das Modell von vornherein kurz schreiben zu lassen.
Du triffst auf ein 429
Du hast zu viele Anfragen pro Minute oder auf einmal gesendet. Zieh dich für ein paar Sekunden zurück und versuche es erneut; die Antwort kann Retry-After: 5 enthalten. Ein Batch mit einem kleinen Thread-Pool von 4 bis 8 Workern bleibt innerhalb der Grenzen eines vollen Schlüssels.
Was 1.000 Prompts kosten
Die Preise liegen bei 0,15 $ pro 1M Eingabe-Token und 0,50 $ pro 1M Ausgabe-Token. Eine typische Erweiterung sendet einen System-Prompt von etwa 150 Token plus eine 15-Token-Idee, also 170 Token Eingabe, und empfängt etwa 120 Token JSON.
- Input: 170 × $0,15 / 1M = $0,0000255.
- Output: 120 × $0,50 / 1M = $0,00006.
- Pro Prompt: etwa $0,0000855.
- 1.000 Prompts: etwa $0,0855, oder $0,09.
Runde es für längere System-Prompts oder Few-Shot-Beispiele auf. Wenn du 600 Token an Beispielen hinzufügst, wird der Input zu 770 Token und 1.000 Prompts kosten etwa $0,1155 für Input + $0,06 für Output, insgesamt etwa $0,18. In jedem Fall deckt das $0,50-Testguthaben mehrere Tausend Erweiterungen. Fehlgeschlagene Anfragen werden nicht berechnet, und Prepaid-Guthaben verfällt nie; siehe die Preisseite für Aufladungen ($20 bis $500, per Krypto).
Weitere Anleitungen
Fragen und Antworten
Kann das LLM das Stable-Diffusion-Bild selbst generieren?
Nein. Es schreibt nur Text. Du übergibst seinen Prompt an SDXL, ComfyUI, Automatic1111 oder ein anderes Bild-Tool, das du ausführst.
Wie lang sollte ein SDXL-Prompt sein?
Etwa 40 bis 60 Wörter funktionieren gut, mit Schlüssel-Details zuerst, weil die Text-Encoder in 77-Token-Chunks lesen.
Weigert es sich, reife oder dunkle Themen zu verarbeiten?
Das Modell ist darauf abgestimmt, bei rechtmäßiger erwachsener Nutzung ohne Inhaltsfilter zu antworten. Inhalte, die Minderjährige betreffen, werden niemals erzeugt.
Welchen Modellnamen sende ich?
Sende uncensored als die Modell-ID, mit der Basis-URL https://api.sdxlapi.com/v1 und deinem Schlüssel als Bearer-Token.
Kann ich viele Prompts parallel ausführen?
Ein vollständiger Schlüssel erlaubt 8 parallele Anfragen und 300 pro Minute; ein Test-Schlüssel erlaubt 2 und 60. Eine 429-Antwort bedeutet: Warte und versuche es erneut.
Dein Schlüssel ist nur ein Formular entfernt
Erstelle ein Konto, kopiere den Schlüssel, ändere die Basis-URL. Das ist die gesamte Einrichtung.