NL ▾
API-sleutel aanvragen

Stable Diffusion Prompt Generator LLM: Python-instelling

Bijgewerkt

Als je een stable diffusion prompt generator llm wilt gebruiken om een paar woorden uit te breiden tot een volledige, goed gestructureerde prompt, heb je alleen een tekstmodel en ongeveer dertig regels Python nodig. Het model schrijft de prompt als tekst; het maakt geen afbeeldingen, dus je moet het resultaat nog steeds door SDXL of een andere afbeeldingstool sturen.

Glazen trechter die een paar gloeiende woorden omzet in een lange lint van details dat naar een leeg canvas stroomt
Diorama van een klein podium met gloeiende spreekbellen die een tekstrollenspelscenario voorstellen

Belangrijkste punten

  • De LLM schrijft alleen tekst. Voer de uitvoer in op je eigen SDXL-, ComfyUI- of Automatic1111-configuratie.
  • De JSON-modus retourneert een positieve en een negatieve prompt die je zonder regex kunt parseren.
  • Eén uitbreiding kost minder dan $0,0001, dus 1.000 prompts kosten ongeveer $0,09.
  • Houd prompts beknopt: de tekstencoders van SDXL lezen alleen de eerste 77 tokens van elk brok.

Wat de LLM wel en niet doet

Afbeeldingsmodellen reageren goed op gedetailleerde, specifieke prompts: onderwerp, omgeving, lens, belichting, medium, sfeer en een lijst met dingen om te vermijden. De meeste mensen typen drie woorden en krijgen een vlak resultaat. Een LLM sluit die kloof door je korte idee om te zetten in een lange versie in een consistente indeling.

Wees duidelijk over de verdeling van taken. Deze dienst is een API die alleen tekst verwerkt. Het genereert geen afbeeldingen, audio of video, en heeft geen embeddings of fine-tuning. Het staat voor je afbeeldingspipeline en schrijft de instructies die die pipeline leest. Het is een OpenAI-compatible endpoint die één open-weight model van een onafhankelijke aanbieder serveert, geen product van een afbeeldingsmodel-leverancier.

Het model is afgestemd op antwoorden zonder inhoudelijke weigeringen voor wettelijk volwassen gebruik, wat belangrijk is voor kunstenaars en game-ontwikkelaars wiens onderwerpen (horror, geweld in fictie, volwassen thema's) elders worden geblokkeerd. Seksuele inhoud met minderjarigen is een harde limiet en wordt nooit gegenereerd.

Stap 1: haal een sleutel op en test één verzoek

Meld je aan met Google of met e-mail en wachtwoord, en open vervolgens de API-sleutelpagina. Een trial met één klik voegt $0,50 tegoed toe, geldig voor 7 dagen en zonder dat je een kaart nodig hebt. Dat is genoeg voor duizenden promptuitbreidingen, zoals het gedeelte over kosten aangeeft.

Controleer of alles werkt met 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"}
    ]
  }'

Elke OpenAI SDK werkt zodra je de basis-URL en sleutel aanpast. Details staan in de documentatie.

Stap 2: een systeemprompt voor stabiele uitvoer

De systeemprompt is waar de kwaliteit vandaan komt. Geef het model de doelindeling, de volgorde van elementen, een lengtelimiet en wat je wilt overslaan. Een versie die goed werkt als startpunt:

Je zet korte afbeeldingsideeën om in prompts voor SDXL. Schrijf één positieve prompt van 40 tot 60 woorden: onderwerp eerst, dan omgeving, compositie, belichting, medium of stijl, en sfeer. Gebruik door komma's gescheiden zinsdelen, geen volledige zinnen. Schrijf daarna een negatieve prompt van maximaal 15 korte zinsdelen. Voeg geen tekst, watermerken of bijschriften toe aan de afbeelding. Retourneer JSON met de sleutels "prompt" en "negative".

De woordlimiet is belangrijk. De CLIP-tekstencoders van SDXL lezen prompts in brokken van 77 tokens, en alles daarachter wordt afgekapt of afgehandeld door een chunking-functie in je UI. Streef naar 40 tot 60 woorden om de meeste prompts binnen één brok te houden, met de belangrijkste details vooraan.

Gebruik een lage tot gemiddelde temperatuur (0,7 tot 0,9) zodat de stijl consistent blijft, maar twee uitvoeringen van hetzelfde idee verschillen. Als je identieke output nodig hebt voor testen, geef je een vaste seed door.

Stap 3: het Python-script

Dit script leest ideeën uit een lijst, vraagt om JSON en print de prompt-paren. Het gebruikt het officiële OpenAI Python-pakket met de base URL aangepast.

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")

JSON-modus (response_format met json_object) zorgt ervoor dat het antwoord schoon geparsed kan worden. Wikkel json.loads nog steeds in een try block in productie en probeer het één keer opnieuw als het mislukt, omdat een lang antwoord dat stopt bij max_tokens halverwege een object kan eindigen.

Stap 4: stuur prompts naar je afbeeldingstool

De uitvoer is platte strings, dus elke front-end kan het verwerken. Met een lokale installatie van Automatic1111 of ComfyUI post je de twee velden naar de API. Met een script dat over een CSV van ideeën loopt, schrijf je de resultaten naar een bestand en voeg je ze als batch toe aan de wachtrij.

  • Sla het idee, de prompt en de negatieve prompt samen op, zodat je een goede afbeelding kunt traceren terug naar de instructie die hem produceerde.
  • Voeg een stijllijn uit je eigen lijst ("cinematografische foto", "inktillustratie") toe als extra veld in het gebruikersbericht als je een serie met een gelijkende uitstraling wilt.
  • Houd een korte bibliotheek van werkende prompts bij en voer twee of drie daarvan toe als voorbeelden in het systeemprompt. Few-shot voorbeelden sturen de stijl betrouwbaarder dan adjectieven.

Voor een roleplay- of gameproject kan hetzelfde patroon scènes uit een verhaal illustreren, waarbij de LLM de laatste paar alinea's omzet in een visuele beschrijving. Het artikel over text-based roleplay scenarios behandelt de verhalingskant.

Veelvoorkomende problemen en oplossingen

Er komen een paar problemen voor in bijna elk prompt-generatorproject.

Het model voegt commentaar toe

Antwoorden die beginnen met "Hier is je prompt" breken pipelines. JSON-modus verwijdert het meeste daarvan. Als je in platte tekst werkt, zeg dan "geef alleen de prompt, geen voorwoord" en voeg een stopsequentie toe voor een regel die je nooit wilt zien.

Elke prompt ziet er hetzelfde uit

Een lage temperatuur en een strikte template geven uniforme resultaten. Verhoog de temperatuur naar 1,0, varieer de stijlregel die je doorgeeft, of vraag om drie alternatieven en kies er één. Straffen (frequency_penalty, presence_penalty) worden doorgegeven en kunnen herhaalde zinsdelen verbreken.

Prompts zijn te lang voor het afbeeldingsmodel

Stel een harde woordlimiet in de systeemprompt en controleer de lengte in code. Handmatig afkappen laat de laatste details weg, die meestal het minst belangrijk zijn, maar het is beter om het model van tevoren kort te laten schrijven.

Je krijgt een 429

Je hebt te veel verzoeken per minuut of in één keer verstuurd. Wacht een paar seconden en probeer het opnieuw; het antwoord kan Retry-After: 5 bevatten. Een batch met een kleine thread pool van 4 tot 8 workers blijft binnen de limieten van een volledige sleutel.

Wat 1.000 prompts kosten

Prijzen zijn $0,15 per 1M input tokens en $0,50 per 1M output tokens. Een typische uitbreiding stuurt een system prompt van ongeveer 150 tokens plus een idee van 15 tokens, reken op 170 tokens input en ontvang ongeveer 120 tokens aan JSON.

  • Input: 170 × $0,15 / 1M = $0,0000255.
  • Output: 120 × $0,50 / 1M = $0,00006.
  • Per prompt: ongeveer $0,0000855.
  • 1.000 prompts: ongeveer $0,0855, of $0,09.

Rond het af voor langere system prompts of few-shot-voorbeelden. Als je 600 tokens aan voorbeelden toevoegt, wordt de input 770 tokens en kosten 1.000 prompts ongeveer $0,1155 voor input + $0,06 voor output, ongeveer $0,18 in totaal. In elk geval dekt het $0,50 trial tegoed enkele duizenden uitbreidingen. Mislukte verzoeken worden niet in rekening gebracht, en tegoed vervalt nooit; zie de prijzenpagina voor opwaarderingen ($20 tot $500, per crypto).

Vragen en antwoorden

Kan de LLM de Stable Diffusion-afbeelding zelf genereren?

Nee. Het schrijft alleen tekst. Je geeft zijn prompt door aan SDXL, ComfyUI, Automatic1111 of een andere beeldtool die je draait.

Hoe lang moet een SDXL-prompt zijn?

Ongeveer 40 tot 60 woorden werkt goed, met de belangrijkste details eerst, omdat de tekstencoders in 77-token blokken lezen.

Weigert het volwassen of donkere thema's?

Het model is afgestemd om te antwoorden zonder inhoudelijke weigeringen voor wettelijk volwassen gebruik. Inhoud met minderjarigen wordt nooit gegenereerd.

Welke modelnaam stuur ik?

Stuur uncensored als model ID, met de basis-URL https://api.sdxlapi.com/v1 en je sleutel als Bearer token.

Kan ik veel prompts parallel uitvoeren?

Een volledige sleutel staat 8 gelijktijdige verzoeken en 300 per minuut toe; een proefsleutel staat 2 en 60 toe. Een 429-response betekent wachten en opnieuw proberen.

Je sleutel is nog maar één formulier verwijderd

Maak een account aan, kopieer de sleutel, pas de base URL aan. Dat is de hele setup.

API-sleutel aanvragen