Generatore di prompt LLM per Stable Diffusion: configurazione Python
Se vuoi un generatore di prompt per SDXL basato su LLM per espandere poche parole in un prompt completo e ben strutturato, ti servono solo un modello di testo e circa trenta righe di Python. Il modello scrive il prompt come testo; non genera immagini, quindi devi comunque elaborare il risultato con SDXL o con qualsiasi strumento per immagini tu utilizzi.


Punti chiave
- Il LLM scrive solo testo. Inserisci il suo output nel tuo setup SDXL, ComfyUI o Automatic1111.
- La modalità JSON restituisce un prompt positivo e uno negativo che puoi analizzare senza regex.
- Un'espansione costa meno di $0,0001, quindi 1.000 prompt costano circa $0,09.
- Mantieni i prompt concisi: i text encoders di SDXL leggono solo i primi 77 token di ogni blocco.
Cosa fa e non fa il LLM
I modelli per immagini rispondono bene a prompt densi e specifici: soggetto, ambientazione, obiettivo, illuminazione, medium, mood e un elenco di elementi da evitare. La maggior parte digita tre parole e ottiene un risultato piatto. Un LLM colma questo divario trasformando la tua idea breve in una versione lunga in un formato coerente.
Sii chiaro sulla divisione dei compiti. Questo servizio è un'API solo testo. Non genera immagini, audio o video, e non ha embedding o affinamento. Si posiziona davanti alla tua pipeline per immagini e scrive le istruzioni che questa legge. È un endpoint compatibile con OpenAI che serve un unico modello a pesi aperti di un fornitore indipendente, non un prodotto di alcun fornitore di modelli per immagini.
Il modello è ottimizzato per rispondere senza rifiuto dei contenuti per l'uso adulto lecito, il che è importante per artisti e sviluppatori di giochi i cui soggetti (horror, violenza nella finzione, temi maturi) vengono bloccati altrove. I contenuti sessuali che coinvolgono minorenni sono un limite rigido e non vengono mai prodotti.
Fase 1: ottieni una chiave e testa una chiamata
Registrati con Google o con email e password, poi apri la pagina delle chiavi API. Una prova con un clic aggiunge $0,50 di credito, valido per 7 giorni e senza necessità di carta. È sufficiente per migliaia di espansioni di prompt, come mostra la sezione sui costi.
Verifica che tutto funzioni con 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"}
]
}'
Qualsiasi SDK OpenAI funziona dopo aver cambiato l'URL di base e la chiave. I dettagli sono nella documentazione.
Fase 2: un system prompt per output stabili
Il system prompt è dove nasce la qualità. Indica al modello il formato target, l'ordine degli elementi, un limite di lunghezza e cosa omettere. Una versione che funziona bene come punto di partenza:
Trasformi brevi idee di immagine in prompt per SDXL. Scrivi un prompt positivo di 40-60 parole: soggetto per primo, poi ambientazione, composizione, illuminazione, medium o stile e atmosfera. Usa frasi separate da virgole, senza frasi complete. Poi scrivi un prompt negativo di massimo 15 brevi frasi. Non aggiungere testo, filigrane o didascalie all'immagine. Restituisci un JSON con le chiavi "prompt" e "negative".
Il limite di parole conta. I CLIP text encoders di SDXL leggono i prompt a blocchi da 77 token e tutto ciò che va oltre viene o tagliato o gestito da una funzione di chunking nella tua UI. Puntare a 40-60 parole mantiene la maggior parte dei prompt all'interno di un unico blocco, con i dettagli più importanti all'inizio.
Usa una temperatura bassa-media (0,7-0,9) così lo stile resta coerente ma due esecuzioni della stessa idea differiscono. Se hai bisogno di output identico per i test, passa un seed fisso.
Fase 3: lo script Python
Questo script legge le idee da una lista, richiede JSON e stampa la coppia di prompt. Usa il pacchetto Python ufficiale di OpenAI con l'URL di base modificato.
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")
La modalità JSON (response_format con json_object) rende la risposta facilmente analizzabile. In produzione, avvolgi comunque json.loads in un blocco try e riprova una volta in caso di errore, perché una risposta lunga tagliata a max_tokens può terminare a metà oggetto.
Fase 4: invia i prompt al tuo strumento per immagini
L'output sono stringhe semplici, quindi qualsiasi frontend può gestirle. Con un'installazione locale di Automatic1111 o ComfyUI, invia i due campi alla sua API. Con uno script che itera su un CSV di idee, scrivi i risultati su un file e accodali in batch.
- Salva insieme l'idea, il prompt e il prompt negativo, così puoi tracciare un'immagine di qualità fino all'istruzione che l'ha generata.
- Aggiungi una riga di stile dalla tua lista ("fotografia cinematografica", "illustrazione a inchiostro") come campo extra nel messaggio utente quando vuoi una serie con un look coerente.
- Tieni una breve libreria di prompt funzionanti e inserisci due o tre di essi nel system prompt come esempi. Gli esempi few-shot guidano lo stile in modo più affidabile degli aggettivi.
Per un progetto di roleplay o gioco, lo stesso pattern può illustrare scene di una storia, con il LLM che trasforma gli ultimi paragrafi in una descrizione visiva. L'articolo su scenari di roleplay testuale copre l'aspetto narrativo.
Problemi comuni e soluzioni
Alcuni problemi emergono in quasi tutti i progetti di generatori di prompt.
Il modello aggiunge commenti
Le risposte che iniziano con "Ecco il tuo prompt" rompono le pipeline. La modalità JSON elimina la maggior parte di questo problema. Se lavori con testo normale, scrivi "output solo il prompt, senza introduzione" e aggiungi una sequenza di stop per una riga che non vuoi mai vedere.
Ogni prompt sembra uguale
Temperatura bassa e un template rigoroso danno risultati uniformi. Aumenta la temperatura a 1,0, varia la riga di stile che passi, o chiedi tre alternative e scegline una. Le penalità (frequency_penalty, presence_penalty) vengono passate e possono spezzare le frasi ripetute.
I prompt sono troppo lunghi per il modello per immagini
Imposta un limite rigido di parole nel system prompt e controlla la lunghezza nel codice. Il troncamento manuale elimina gli ultimi dettagli, che di solito sono i meno importanti, ma è meglio che il modello scriva corto fin dall'inizio.
Raggiungi un 429
Hai inviato troppe richieste al minuto o in una volta. Aspetta qualche secondo e riprova; la risposta può includere Retry-After: 5. Un batch con un pool di thread piccolo di 4-8 worker resta entro i limiti di una chiave completa.
Quanto costano 1.000 prompt
I prezzi sono $0,15 per 1M di token in input e $0,50 per 1M di token in output. Un'espansione tipica invia un system prompt di circa 150 token più un'idea di 15 token, chiamiamolo 170 token in, e riceve circa 120 token di JSON.
- Input: 170 × $0,15 / 1M = $0,0000255.
- Output: 120 × $0,50 / 1M = $0,00006.
- Per prompt: circa $0.0000855.
- 1.000 prompt: circa $0,0855, o $0,09.
Arrotonda per system prompt più lunghi o esempi few-shot. Se aggiungi 600 token di esempi, l'input diventa 770 token e 1.000 prompt costano circa $0,1155 per l'input + $0,06 per l'output, per un totale di circa $0,18. In ogni caso, la prova da $0,50 copre diverse migliaia di espansioni. Le richieste fallite non vengono addebitate e il credito pagato non scade mai; vedi la pagina dei prezzi per i ricarichi ($20-$500, con cripto).
Altre guide
Domande e risposte
Il LLM può generare l'immagine Stable Diffusion stessa?
No. Genera solo testo. Passi il suo prompt a SDXL, ComfyUI, Automatic1111 o a qualsiasi altro strumento per immagini che esegui.
Quanto dovrebbe essere lungo un prompt per SDXL?
Intorno alle 40-60 parole funzionano bene, con i dettagli chiave all'inizio, perché gli encoder di testo leggono a blocchi da 77 token.
Rifiuta temi maturi o oscuri?
Il modello è ottimizzato per rispondere senza rifiuto dei contenuti per l'uso adulto lecito. I contenuti che coinvolgono minorenni non vengono mai prodotti.
Quale nome del modello devo inviare?
Invia uncensored come ID del modello, con l'URL base https://api.sdxlapi.com/v1 e la tua chiave come token Bearer.
Posso eseguire molti prompt in parallelo?
Una chiave completa consente 8 richieste concorrenti e 300 al minuto; una chiave di prova ne consente 2 e 60. Una risposta 429 significa attendere e riprovare.
La tua chiave è a un solo modulo di distanza
Crea un account, copia la chiave, modifica l'URL di base. È tutto qui per la configurazione.