TR ▾
API anahtarı al

Stable Diffusion Prompt Generator LLM: Python Kurulumu

Güncellendi

Birkaç kelimeyi tam ve iyi yapılandırılmış bir isteme dönüştürmek istiyorsanız, yalnızca bir metin modeline ve yaklaşık otuz satır Python'a ihtiyacınız vardır. Model istemi metin olarak yazar; resim oluşturmaz, bu nedenle sonucu yine SDXL veya kullandığınız başka bir görsel aracına iletmeniz gerekir.

Parlak birkaç kelimeyi uzun bir detay şeridine dönüştüren cam huni ve boş bir tuvale giden yol
Metin tabanlı bir rol yapma senaryosunu temsil eden parlayan konuşma balonları olan küçük bir sahne dioraması

Temel noktalar

  • LLM yalnızca metin yazar. Çıktısını kendi SDXL, ComfyUI veya Automatic1111 kurulumunuza besleyin.
  • JSON modu, regex olmadan ayrıştırabileceğiniz bir pozitif ve bir negatif istem döndürür.
  • Bir genişletme $0,0001'den az maliyetlidir, bu nedenle 1.000 istem yaklaşık $0,09'a mal olur.
  • İstemleri kısa tutun: SDXL'in metin kodlayıcıları her parçanın yalnızca ilk 77 tokenini okur.

LLM'in ne yaptığı ve ne yapmadığı

Görsel modeller yoğun, spesifik istemlere iyi yanıt verir: konu, mekan, lens, aydınlatma, ortam, ruh hali ve kaçınılması gerekenler listesi. Çoğu kişi üç kelime yazar ve düz bir sonuç alır. Bir LLM, kısa fikrinizi alıp tutarlı bir biçimde uzun versiyonu yazarak bu boşluğu kapatır.

İş bölümünü net belirtin. Bu hizmet bir text-only API'sidir. Resim, ses veya video oluşturmaz; gömme veya ince ayar özelliği yoktur. Görsel pipeline'ınızın önünde durur ve pipeline'ınızın okuyacağı talimatları yazar. Bağımsız bir sağlayıcıdan tek bir açık ağırlıklı modeli sunan OpenAI uyumlu bir uç noktadır; herhangi bir görsel model satıcısının ürünü değildir.

Model, yasal yetişkin kullanımı için içerik reddi olmadan yanıt verecek şekilde ayarlanmıştır; bu, korku, kurgusal şiddet, olgun temalar gibi konuların başka yerlerde engellendiği sanatçılar ve oyun geliştiricileri için önemlidir. Reşit olmayanlar içeren cinsel içerik kesin bir sınırdır ve asla üretilmez.

Adım 1: anahtar alın ve bir çağrıyı test edin

Google veya e-posta ve şifre ile kaydolun, ardından API anahtarı sayfasını açın. Tek tıkla deneme, 7 gün boyunca geçerli ve kart gerektirmeyen 0,50 $ kredi ekler. Bu, maliyet bölümünün gösterdiği gibi, binlerce istem genişletmesi için yeterlidir.

curl ile her şeyin çalıştığını kontrol edin:

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"}
    ]
  }'

Temel URL'yi ve anahtarı değiştirdikten sonra herhangi bir OpenAI SDK çalışır. Ayrıntılar dokümantasyonda yer almaktadır.

Adım 2: kararlı çıktı veren bir sistem istemi

Sistem istemi kalitenin geldiği yerdir. Modeli hedef biçime, öğelerin sırasına, bir uzunluk sınırına ve neyin dışlanacağına yönlendirin. Başlangıç noktası olarak iyi çalışan bir sürüm:

Kısa resim fikirlerini SDXL için istemlere dönüştürürsünüz. Konu, ardından ortam, kompozisyon, aydınlatma, ortam veya stil ve ruh hali olacak şekilde 40 ila 60 kelimelik tek bir olumlu istem yazın. Virgülle ayrılmış ifadeler kullanın, tam cümleler kullanmayın. Ardından 15 kısa ifadeyi aşmayan bir olumsuz istem yazın. Resme metin, filigran veya altyazı eklemeyin. "prompt" ve "negative" anahtarlarıyla JSON döndürün.

Kelime sınırı önemlidir. SDXL'in CLIP metin kodlayıcıları istemleri 77 tokenlik parçalar halinde okur ve bunun ötesindeki her şey ya kesilir ya da arayüzünüzdeki bir parçalama özelliği tarafından işlenir. En önemli detayların ilk sırada olduğu bir parça içinde kalması için 40 ila 60 kelime hedeflemek, çoğu istemin tek bir parça içinde kalmasını sağlar.

Tarzın tutarlı kalması ancak aynı fikrin iki çalıştırmasında farklılık olması için düşük-orta sıcaklık (0,7 ile 0,9) kullanın. Test için aynı çıktıyı istiyorsanız sabit bir seed geçirin.

Adım 3: Python betiği

Bu betik, fikirleri bir listeden okur, JSON ister ve istem çiftini yazdırır. Temel URL değiştirilmiş resmi OpenAI Python paketini kullanır.

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 modu (response_format ile json_object) yanıtı temiz bir şekilde ayrıştırılabilir hale getirir. Hâlâ json.loads'i bir try bloğu içine alın ve üretimde başarısız olursa bir kez yeniden deneme yapın; çünkü uzun bir yanıtın max_tokens'da kesilmesi nesnenin ortasında bitmesine neden olabilir.

Adım 4: istemleri görsel aracınıza gönderin

Çıktı düz metin olduğundan, herhangi bir ön uç bunu alabilir. Yerel bir Automatic1111 veya ComfyUI kurulumuyla, iki alanı API'sine postlayın. Fikirlerin bir CSV'si üzerinden döngü kuran bir betikle, sonuçları bir dosyaya yazın ve toplu olarak kuyruğa alın.

  • İyi bir resmin hangi talimatla üretildiğini izleyebilmek için fikri, istimi ve negatif istimi birlikte kaydedin.
  • Eşleşen bir görünüme sahip bir seri istediğinizde, kullanıcı mesajine kendi listenizden bir stil satırı ("sinematik fotoğraf", "mürekkep illüstrasyonu") ek alan olarak ekleyin.
  • Çalışan kısa bir istem kütüphanesi tutun ve sistem istimine örnek olarak iki veya üçünü besleyin. Az örnekli örnekler, sıfatlardan daha güvenilir bir şekilde stili yönlendirir.

Bir rol yapma veya oyun projesi için aynı kalıp, bir hikayeden sahneleri betimleyebilir; LLM son birkaç paragrafı görsel bir betimlemeye dönüştürür. metin tabanlı rol yapma senaryoları hakkındaki makale hikaye tarafını kapsar.

Yaygın sorunlar ve çözümler

Neredeyse her istim üreticisi projede birkaç sorun ortaya çıkar.

Model yorum ekler

"İşte istiminiz" ile başlayan yanıtlar pipeline'ları bozar. JSON modu bunun çoğunu kaldırır. Düz metinle çalışıyorsanız "yalnızca istimi çıktı ver, giriş metni yazma" deyin ve görmek istemediğiniz bir satır için bir durma dizisi ekleyin.

Her istim aynı görünüyor

Düşük sıcaklık ve sıkı bir şablon biriform sonuçlar verir. Sıcaklığı 1,0'ya çıkarın, geçirdiğiniz stil satırını değiştirin veya üç alternatif isteyip birini seçin. Cezalar (frequency_penalty, presence_penalty) geçirilir ve tekrarlanan ifadeleri kırabilir.

İstemler görsel model için çok uzun

Sistem istimine sert bir kelime sınırı koyun ve uzunluğu kodda kontrol edin. Elle kısaltma son detayları düşürür ki bunlar genellikle en az önemlileridir, ancak modelin başından kısa yazması daha iyidir.

429 hatası alırsınız

Dakikada veya aynı anda çok fazla istek gönderdiniz. Birkaç saniye geri çekilin ve yeniden deneyin; yanıt Retry-After: 5 içerebilir. 4 ila 8 iş parçacığı havuzuna sahip bir istek grubu, tam anahtarın limitleri içinde kalır.

1.000 istemin maliyeti

Fiyatlandırma 1M giriş tokeni başına 0,15 $ ve 1M çıktı tokeni başına 0,50 $'dır. Tipik bir genişletme, yaklaşık 150 tokenlik bir sistem istemi ve 15 tokenlik bir fikir gönderir; yani 170 token giriş ve yaklaşık 120 token JSON çıktı olur.

  • Giriş: 170 × 0,15 $ / 1M = 0,0000255 $.
  • Çıktı: 120 × 0,50 $ / 1M = 0,00006 $.
  • Başına istem: yaklaşık $0.0000855.
  • 1.000 istem: yaklaşık $0,0855 veya $0,09.

Daha uzun sistem istimleri veya few-shot örnekler için yukarı yuvarlayın. Örnekler için 600 token eklerseniz, giriş 770 token olur ve 1.000 istemin giriş için maliyeti yaklaşık $0,1155, çıktı için $0,06 olur; toplamda yaklaşık $0,18 eder. Her durumda, $0,50'lik deneme birkaç bin genişletmeyi karşılar. Başarısız istekler için ücret alınmaz ve ödemeli kredi asla sona ermez; bakiye yüklemek için fiyatlandırma sayfasına bakın ($20 ile $500 arasında, kripto ile).

Sorular ve cevaplar

LLM, Stable Diffusion resmini kendi başına oluşturabilir mi?

Hayır. Sadece metin yazar. İstemini SDXL, ComfyUI, Automatic1111 veya çalıştırdığınız diğer herhangi bir görsel araca iletirsiniz.

Bir SDXL istemi ne kadar uzun olmalıdır?

Metin kodlayıcılar 77 token'lık parçalar halinde okuduğundan, ana detaylar ilk sırada olmak üzere 40 ila 60 kelime iyi sonuç verir.

Olgun veya karanlık temaları reddeder mi?

Model, yasal yetişkin kullanımı için içerik reddetmeleri olmadan yanıt verecek şekilde ayarlanmıştır. Reşit olmayanların yer aldığı içerik asla üretilmez.

Hangi model adını gönderirim?

Model kimliği olarak uncensored'ı, https://api.sdxlapi.com/v1 temel URL'sini ve anahtarınızı Bearer token olarak gönderin.

Birden fazla istemi eşzamanlı olarak çalıştırabilir miyim?

Tam bir anahtar eşzamanlı 8 istek ve dakikada 300 istek yapmanızı sağlar; deneme anahtarı ise 2 ve 60'a izin verir. 429 yanıtı bekleme ve yeniden deneme anlamına gelir.

Anahtarınız tek bir web formu ile ulaşılabilir

Bir hesap oluşturun, anahtarı kopyalayın ve base URL'yi değiştirin. Kurulum bu kadar basit.

API anahtarı al