Generator promptów Stable Diffusion LLM: konfiguracja Pythona
Jeśli chcesz, aby generator promptów Stable Diffusion LLM rozwijał kilka słów w pełny, dobrze ustrukturyzowany prompt, potrzebujesz tylko modelu tekstowego i około trzydziestu linii Pythona. Model generuje prompt jako tekst; nie renderuje obrazów, więc wynik nadal przetwarzasz przez SDXL lub inne narzędzie do obrazów.


Kluczowe punkty
- LLM generuje tylko tekst. Przekaż jego wynik do własnego środowiska SDXL, ComfyUI lub Automatic1111.
- Tryb JSON zwraca prompt dodatni i prompt negatywny, które możesz zparseować bez regex.
- Jedno rozwinięcie kosztuje mniej niż $0,0001, więc 1 000 promptów kosztuje około $0,09.
- Trzymaj prompty zwięzłe: enkodery tekstu SDXL przetwarzają tylko pierwsze 77 tokenów każdego fragmentu.
Co robi LLM, a czego nie
Modele obrazowe dobrze reagują na gęste, konkretne prompty: podmiot, otoczenie, obiektyw, oświetlenie, medium, nastrój i lista rzeczy do uniknięcia. Większość wpisuje trzy słowa i otrzymuje płaski wynik. LLM zamyka tę lukę, biorąc Twój krótki pomysł i pisząc długą wersję w spójnym formacie.
Bądź jasny co do podziału obowiązków. Ta usługa to API text-only. Nie generuje obrazów, audio ani wideo i nie ma embeddingów ani dostrajania. Stanowi warstwę przed Twoją potokiem obrazowym i generuje instrukcje, które ten potok czyta. To endpoint kompatybilny z OpenAI obsługujący jeden model o otwartych wagach od niezależnego dostawcy, a nie produkt żadnego dostawcy modeli obrazowych.
Model jest dostrojony do odpowiadania bez odrzuceń treści dla prawnego użytku dorosłych, co ma znaczenie dla artystów i deweloperów gier, których tematy (horror, przemoc w fikcji, tematy dla dorosłych) są blokowane gdzie indziej. Treści seksualne z udziałem nieletnich to twardy limit i nigdy nie są generowane.
Krok 1: uzyskaj klucz i przetestuj jedno zapytanie
Zarejestruj się przez Google lub e-mail i hasło, a następnie otwórz stronę klucza API. Jednoklikowa próba dodaje $0,50 kredytu ważnego przez 7 dni bez karty. To wystarczy na tysiące rozwinięć promptów, jak pokazuje sekcja kosztów.
Sprawdź, czy wszystko działa z 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"}
]
}'
Każdy SDK OpenAI działa po zmianie base URL i klucza. Szczegóły znajdziesz w dokumentacji.
Krok 2: systemowy prompt dający stabilne wyniki
Systemowy prompt jest źródłem jakości. Powiedz modelowi docelowy format, kolejność elementów, limit długości i co pominąć. Wersja, która dobrze sprawdza się jako punkt startowy:
Zamieniaj krótkie pomysły na obrazy w prompty dla SDXL. Napisz jeden prompt dodatni o długości 40–60 słów: podmiot na początku, potem otoczenie, kompozycja, oświetlenie, medium lub styl oraz nastrój. Używaj fraz oddzielonych przecinkami, bez pełnych zdań. Następnie napisz prompt negatywny o długości do 15 krótkich fraz. Nie dodawaj tekstu, znaków wodnych ani podpisów do obrazu. Zwróć JSON z kluczami "prompt" i "negative".
Limit słów ma znaczenie. Enkodery tekstu CLIP SDXL przetwarzają prompty w fragmentach po 77 tokenów, a wszystko poza tym jest albo obcinane, albo przetwarzane przez funkcję chunking w Twoim UI. Celowanie w 40–60 słów utrzymuje większość promptów w jednym fragmencie, z najważniejszymi szczegółami na początku.
Używaj niskiej do średniej temperatury (0,7–0,9), aby styl był spójny, ale dwa uruchomienia tego samego pomysłu różniły się. Jeśli potrzebujesz identycznego wyniku do testów, przekaż stały seed.
Krok 3: skrypt Pythona
Ten skrypt czyta pomysły z listy, żąda JSON i wypisuje parę promptów. Używa oficjalnego pakietu Pythona OpenAI ze zmienionym 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")
Tryb JSON (response_format z json_object) sprawia, że odpowiedź jest łatwo parsowalna. W produkcji nadal owijaj json.loads w blok try i ponów próbę raz przy błędzie, ponieważ długa odpowiedź obcięta przy max_tokens może zakończyć się w połowie obiektu.
Krok 4: wyślij prompty do swojego narzędzia do obrazów
Wynik to zwykłe stringi, więc dowolny front-end może go przyjąć. Przy lokalnej instalacji Automatic1111 lub ComfyUI wyślij dwa pola do jego API. Przy skrypcie pętli po CSV z pomysłami zapisz wyniki do pliku i zakolejkuj je jako partię.
- Zapisz pomysł, prompt i prompt negatywny razem, abyś mógł wyśledzić dobry obraz z powrotem do instrukcji, która go wygenerowała.
- Dodaj linię stylu z własnej listy ("cinematic photograph", "ink illustration") jako dodatkowe pole w wiadomości użytkownika, gdy chcesz serię o spójnym wyglądzie.
- Trzymaj krótką bibliotekę działających promptów i podawaj dwa lub trzy z nich w systemowym promptcie jako przykłady. Przykłady few-shot kierują stylem bardziej niezawodnie niż przymiotniki.
W projekcie opartym na opowiadaniu lub grze ten sam schemat może zilustrować sceny z historii, przy czym LLM zamienia ostatnie akapity w opis wizualny. Artykuł na temat tekstowego odgrywania ról omawia stronę narracyjną.
Powszechne problemy i rozwiązania
W prawie każdym projekcie generatora promptów pojawiają się pewne problemy.
Model dodaje komentarz
Odpowiedzi zaczynające się od "Oto Twój prompt" psują potoki. Tryb JSON usuwa większość tego. Jeśli pracujesz na zwykłym tekście, napisz "zwracaj tylko prompt, bez wstępu" i dodaj sekwencję stop dla linii, której nigdy nie chcesz widzieć.
Każdy prompt wygląda tak samo
Niska temperatura i ścisły szablon dają jednolite wyniki. Podnieś temperaturę do 1,0, zróżnicuj linię stylu, którą przekazujesz, lub poproś o trzy alternatywy i wybierz jedną. Kary (frequency_penalty, presence_penalty) są przekazywane i mogą rozbić powtarzające się frazy.
Prompty są za długie dla modelu obrazowego
Wstaw twardy limit słów w systemowym promptcie i sprawdzaj długość w kodzie. Obcinanie ręczne odrzuca ostatnie szczegóły, które są zwykle najmniej ważne, ale lepiej, aby model pisał krótko od początku.
Otrzymujesz 429
Wysłałeś zbyt wiele zapytań na minutę lub na raz. Zredukuj tempo na kilka sekund i spróbuj ponownie; odpowiedź może zawierać Retry-After: 5. Partia z małym pulą wątków 4–8 pracowników mieści się w limitach pełnego klucza.
Koszt 1 000 promptów
Cennik to $0,15 za 1M tokenów wejściowych i $0,50 za 1M tokenów wyjściowych. Typowe rozwinięcie wysyła systemowy prompt o około 150 tokenach plus pomysł 15-tokenowy, czyli 170 tokenów na wejściu i otrzymuje około 120 tokenów JSON.
- Wejście: 170 × $0,15 / 1M = $0,0000255.
- Wyjście: 120 × $0,50 / 1M = $0,00006.
- Na prompt: około $0,0000855.
- 1 000 promptów: około $0,0855, czyli $0,09.
Zaokrąglij w górę dla dłuższych promptów systemowych lub przykładów few-shot. Jeśli dodasz 600 tokenów przykładów, prompt wynosi 770 tokenów, a 1 000 promptów kosztuje około $0,1155 za prompt + $0,06 za output, łącznie około $0,18. W każdym razie kredyt próbny $0,50 pokrywa kilka tysięcy rozszerzeń. Nieudane zapytania nie są rozliczane, a przedpłacony kredyt nigdy nie wygasa; zobacz stronę z cenami, aby doładować ($20 do $500, kryptowalutami).
Więcej przewodników
Pytania i odpowiedzi
Czy LLM może wygenerować obraz Stable Diffusion?
Nie. Pisze tylko tekst. Przekazujesz jego prompt do SDXL, ComfyUI, Automatic1111 lub dowolnego innego narzędzia do generowania obrazów, którego używasz.
Jak długi powinien być prompt do SDXL?
Dobrze sprawdza się tekst o długości 40–60 słów, z kluczowymi szczegółami na początku, ponieważ encodery tekstu przetwarzają dane w 77-tokenowych fragmentach.
Czy odrzuca tematy dla dorosłych lub mroczne?
Model jest dostrojony do odpowiadania bez odrzuceń treści dla prawnego użytku dorosłych. Treści z udziałem nieletnich nie są generowane.
Jaką nazwę modelu mam wysłać?
Wyślij uncensored jako ID modelu, z bazowym URL https://api.sdxlapi.com/v1 i swoim kluczem jako token Bearer.
Czy mogę uruchamiać wiele promptów równolegle?
Pełny klucz pozwala na 8 równoległych zapytań i 300 na minutę; klucz próbny pozwala na 2 i 60. Odpowiedź 429 oznacza, że musisz poczekać i ponowić próbę.
Twój klucz jest o jeden formularz stąd
Utwórz konto, skopiuj klucz, zmień bazowy URL. To cała konfiguracja.