Olumsuz İstemler ve Hariç Tutmalar
Hariç tutulacaklar: bulanık, filigranlı, çirkin, deforme — etkili olumsuz istem oluşturma.
Olumsuz İstemler ve Hariç Tutmalar, CoddyKit'te ücretsiz bir AI Prompt Engineering dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Prompt Engineering öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Prompt Engineering kursu toplamda 4 dersten oluşur.
negative İstemler Nedir?
negative istemler, bir görsel modeline generate edilen görsele neyi dahil etmemesi gerektiğini söyler. Bunlar olumlu istemden ayrıdır ve generation sürecini istenmeyen kusurlardan, stillerden ve unsurlardan uzaklaştırır. Başlangıçta Stable Diffusion'a özgü bir özellik olan bu kavram, görsel generation modelleri arasında yayılmıştır.
Stable Diffusion negative İstem Söz Dizimi
Stable Diffusion'da negative istemler ayrı bir parametre olarak gönderilir. Model bunları karşı yönlendirme olarak ele alır: negative istemdeki kavramlar, generation sırasında etkin biçimde uzaklaştırılır.
import requests
SD_API_URL = 'http://localhost:7860/sdapi/v1/txt2img'
def generate_sd_image(positive_prompt, negative_prompt, steps=30, cfg_scale=7):
payload = {
'prompt': positive_prompt,
'negative_prompt': negative_prompt,
'steps': steps,
'cfg_scale': cfg_scale, # 7-12 recommended
'width': 512,
'height': 512,
'sampler_name': 'DPM++ 2M Karras'
}
response = requests.post(SD_API_URL, json=payload)
return response.json()
# Example call with negative prompt
positive = (
'portrait of a young woman, soft natural light, '
'professional photography, sharp focus, elegant'
)
negative = (
'blurry, watermark, text, logo, ugly, distorted, '
'deformed, extra fingers, extra limbs, bad anatomy, '
'low quality, low resolution, grainy, noisy, '
'oversaturated, harsh shadows'
)
result = generate_sd_image(positive, negative)
print('Generated:', len(result.get('images', [])), 'images')Evrensel Kalite negative İstemi
Standart bir negative istem terimleri kümesi, neredeyse her konu için çıktı kalitesini artırır. Bunu ezberleyin veya varsayılan başlangıç noktanız olarak kaydedin.
# Universal quality negative prompt
QUALITY_NEGATIVES = [
# Technical quality issues
'blurry', 'out of focus', 'low quality', 'low resolution',
'pixelated', 'grainy', 'noisy', 'compressed artifacts', 'jpeg artifacts',
# Anatomical distortions (common AI failure mode)
'extra fingers', 'extra limbs', 'extra arms', 'deformed hands',
'bad anatomy', 'malformed', 'mutated', 'disfigured',
# Unwanted elements
'watermark', 'text', 'logo', 'signature', 'caption',
'border', 'frame', 'username',
# Stylistic failures
'ugly', 'poorly drawn', 'amateur', 'sketch',
'unfinished', 'rough draft',
# Color problems
'oversaturated', 'washed out', 'overexposed', 'underexposed'
]
UNIVERSAL_NEGATIVE = ', '.join(QUALITY_NEGATIVES)
print('Universal negative prompt:')
print(UNIVERSAL_NEGATIVE[:200], '...')Anatomi ve Vücut için negative İstemler
Yapay zekâ görsel modelleri eller ve parmaklar konusunda zorlanmalarıyla ünlüdür. Belirli anatomik negative istemleri, insan figürü generation sürecindeki bu kusurları önemli ölçüde azaltır.
ANATOMY_NEGATIVES = [
# Hand and finger issues
'extra fingers', 'missing fingers', 'deformed fingers',
'fused fingers', 'too many fingers', 'six fingers',
'wrong number of fingers', 'extra hands', 'floating hand',
# Face issues
'distorted face', 'asymmetrical face', 'multiple faces',
'merged faces', 'duplicate head', 'two heads',
'extra eyes', 'missing eyes', 'heterochromia (if not desired)',
# Body proportions
'extra legs', 'extra arms', 'floating limbs',
'bad proportions', 'unrealistic body proportions',
'torso too long', 'missing torso',
# Skin
'skin blemishes', 'skin texture issues'
]
BODY_NEGATIVE = ', '.join(ANATOMY_NEGATIVES)
# Full portrait negative prompt combining quality + anatomy
PORTRAIT_NEGATIVE = UNIVERSAL_NEGATIVE + ', ' + BODY_NEGATIVE
print('Portrait negative length:', len(PORTRAIT_NEGATIVE.split(',')), 'terms')negative İstemlerle Stil Hariç Tutma
negative istemler istenmeyen stilleri hariç tutabilir; bu, olumlu istemdeki stil terimlerinin kaçınmak istediğiniz benzer stilleri çektiği durumlarda kullanışlıdır. Yaygın stil hariç tutmaları:
style_exclusion_examples = [
{
'goal': 'Oil painting portrait without cartoonish look',
'positive': 'oil painting portrait, classical technique, highly detailed',
'negative': 'cartoon, anime, illustration, flat colors, cel-shaded, vector'
},
{
'goal': 'Photorealistic image without HDR over-processing',
'positive': 'photorealistic landscape, natural light, DSLR quality',
'negative': 'HDR, hyper-saturated, over-processed, Instagram filter, tone-mapped'
},
{
'goal': 'Dark fantasy without gore',
'positive': 'dark fantasy warrior, dramatic lighting, detailed armor',
'negative': 'gore, blood, violence, disturbing content, horror'
},
{
'goal': 'Vintage look without actual age degradation',
'positive': 'vintage 1960s photograph, film grain, warm tones',
'negative': 'deteriorated, damaged, torn, stains, yellowed, faded'
}
]
for ex in style_exclusion_examples[:2]:
print(f'Goal: {ex["goal"]}')
print(f'Negative: {ex["negative"][:60]}...')
print()DALL-E Kaçınma Söz Dizimi
DALL-E 3'te ayrı bir negative istem alanı yoktur. Bunun yerine hariç tutmalar, olumlu istem içinde 'avoid', 'without', 'no' veya 'do not include' ifadeleri kullanılarak doğal biçimde yazılır.
import openai
client = openai.OpenAI(api_key='YOUR_API_KEY')
# DALL-E 3: exclusions in the positive prompt
dalle_prompt_with_exclusions = (
'A professional portrait photograph of a businesswoman in a modern office. '
'Natural window light, shallow depth of field, warm tones. '
'Do not include: any text, watermarks, logos, or captions. '
'Avoid: cartoon or illustrated style, anime, artificial-looking skin. '
'The image should have no distracting background elements. '
'Realistic and natural — not over-processed or filtered.'
)
response = client.images.generate(
model='dall-e-3',
prompt=dalle_prompt_with_exclusions,
size='1024x1024',
quality='hd',
n=1
)
image_url = response.data[0].url
print('Generated image URL:', image_url[:60], '...')negative İstem Gücü ve CFG Ölçeği
Stable Diffusion'da CFG (Sınıflandırıcısız Yönlendirme) ölçeği, istemin (hem olumlu hem negative) generation sürecini ne kadar güçlü etkilediğini denetler. Daha yüksek CFG = daha güçlü uyum; ancak kusurlara neden olabilir.
# CFG scale guide for Stable Diffusion
cfg_guide = {
3: 'Very loose adherence, creative/random, may ignore negative prompts',
5: 'Balanced: creative but follows prompts generally',
7: 'Standard: good balance of quality and adherence (recommended default)',
10: 'Strong adherence: follows both positive and negative prompts closely',
12: 'Very strong: highly literal, may oversaturate colors or cause artifacts',
15: 'Extreme: usually causes artifacts, rarely useful'
}
# Parenthetical weighting in Stable Diffusion
# Surround a term with () to increase its weight
# surround with [] to decrease its weight
weighted_negative = (
'(blurry:1.3), (extra fingers:1.5), watermark, '
'[slight noise:0.5], text'
# extra fingers gets 1.5x negative weight (most important to avoid)
# blurry gets 1.3x negative weight
# slight noise gets reduced 0.5x weight (tolerate a little)
)
print('CFG=7 (recommended default) balances quality and prompt adherence')
print('Weighted negative example:', weighted_negative[:80], '...')Bir negative İstem Kitaplığı Oluşturma
Farklı kullanım alanları farklı negative istem kümeleri gerektirir. Her generation görevi için birlikte compose edilebilecek, alana özgü negative istemlerden oluşan bir kitaplık oluşturun.
NEGATIVE_PROMPT_LIBRARY = {
'quality_base': (
'blurry, low quality, low resolution, pixelated, '
'watermark, text, logo, signature'
),
'anatomy': (
'extra fingers, deformed hands, bad anatomy, '
'extra limbs, distorted face'
),
'portrait_specific': (
'double chin exaggerated, skin blemishes, '
'red eye, harsh shadows on face'
),
'landscape_specific': (
'overcast flat light, washed out colors, '
'lens flare, chromatic aberration'
),
'product_photo': (
'shadow on product, uneven background, '
'reflection glare, dust spots'
),
'no_style_bleed': (
'anime, cartoon, illustration, painting, '
'sketch (when photorealism is desired)'
)
}
def compose_negative(*keys):
return ', '.join(NEGATIVE_PROMPT_LIBRARY[k] for k in keys)
# Portrait generation
portrait_neg = compose_negative('quality_base', 'anatomy', 'portrait_specific')
print('Portrait negative:', portrait_neg[:100], '...')
# Product photo generation
product_neg = compose_negative('quality_base', 'product_photo', 'no_style_bleed')
print('Product negative:', product_neg[:100], '...')negative İstemler Başarısız Olduğunda
negative istemler garanti değildir; istenmeyen unsurların olasılığını azaltır, ancak bunları tamamen ortadan kaldırmaz. Hangi durumlarda başarısız olduklarını anlamak, gerçekçi beklentiler belirlemenize yardımcı olur.
negative_prompt_limitations = {
'Failure: Concept too abstract': {
'problem': '"bad" is too vague for the model to act on',
'fix': 'Use specific concrete terms: "blurry", "deformed", "watermark"'
},
'Failure: Contradiction with positive prompt': {
'problem': 'Positive: "detailed painting" | Negative: "painting"',
'fix': 'Narrow negative to the specific aspect: negative: "amateur painting, rough sketch"'
},
'Failure: Too many negative terms dilute effect': {
'problem': '200-word negative prompt where each term gets minimal weight',
'fix': 'Limit to 15-20 terms. Use weighting for most critical: "(extra fingers:1.5)"'
},
'Failure: Watermarks still appear': {
'problem': 'Some model checkpoints are strongly trained on watermarked data',
'fix': 'Use a different model checkpoint or use an inpainting pass to remove'
}
}
for failure, info in negative_prompt_limitations.items():
print(f'{failure}')
print(f' Problem: {info["problem"]}')
print(f' Fix: {info["fix"]}')
print()negative İstemlerin Etkililiğini Test Etme
Belirli kullanım alanınız için hangi negative istemlerin gerçekten sonuçları iyileştirdiğini sistematik olarak test edin. negative istemlerle ve negative istemler olmadan generate edin ve çıktıları sabit bir tohum üzerinde karşılaştırın.
import requests
SD_API_URL = 'http://localhost:7860/sdapi/v1/txt2img'
def test_negative_prompts(positive, negative_variants, seed=42, steps=30):
results = []
for label, negative in negative_variants.items():
payload = {
'prompt': positive,
'negative_prompt': negative,
'seed': seed, # fixed seed for fair comparison
'steps': steps,
'cfg_scale': 7
}
response = requests.post(SD_API_URL, json=payload)
results.append({
'label': label,
'negative': negative[:60] + '...',
'image_count': len(response.json().get('images', []))
})
return results
# Test different negative prompt levels
variants = {
'no_negative': '',
'quality_only': 'blurry, low quality, watermark',
'anatomy_added': 'blurry, low quality, watermark, extra fingers, bad anatomy',
'full_library': compose_negative('quality_base', 'anatomy', 'portrait_specific')
}
print('Testing negative prompt variants with fixed seed...')
print('Compare output images to identify which negative terms have the most impact.')Midjourney No Parametresi
Midjourney, negative istem eşdeğeri olarak --no parametresini kullanır. Söz dizimi farklıdır, ancak kavram aynıdır: İstemin sonuna --no [term1] [term2] ekleyin.
# Midjourney negative prompt syntax using --no parameter
midjourney_prompts = [
# Basic exclusion
'professional headshot portrait, soft studio lighting, --no text watermark logo background',
# Style exclusion
'oil painting of a medieval castle, dramatic lighting --no modern cars people telephone wires',
# Anatomy
'full body character art, hero pose --no extra fingers deformed limbs bad anatomy',
# Content exclusion
'children\'s book illustration of a forest --no violence scary dark horror'
]
# Midjourney also supports emphasis with :: weighting
weighted_midjourney = (
'A serene Japanese garden::2, cherry blossoms::1.5, '
'koi pond, stone lantern --no people tourists modern buildings::3'
# ::2 = 2x weight on the garden
# ::3 on the no-people exclusion = very strong exclusion
)
for prompt in midjourney_prompts[:3]:
print('Midjourney:', prompt[:70], '...')Kısa Kontrol
Hangi Stable Diffusion tekniği, belirli bir negative terimin diğerlerine kıyasla etkisini artırır?
negative İstemler Özeti
negative istemler, görsel generation sürecini istenmeyen niteliklerden uzaklaştırmak için güçlü bir araçtır:
- Stable Diffusion: ayrı
negative_promptparametresi; parantez içi ağırlıklandırmayı destekler - DALL-E 3: olumlu istemde 'avoid', 'without', 'do not include' ifadelerini kullanın
- Midjourney: istemin sonuna
--no [terms]eklenir - Evrensel negative ifadeler: bulanık, düşük kalite, filigran, metin, fazladan parmaklar
- CFG ölçeği: istemlerin (olumlu ve negative) generation sürecini ne kadar güçlü yönlendirdiğini denetler
- Sınırlamalar: olasılığı azaltır, ancak hariç tutmayı garanti etmez; en fazla 15-20 terim
Sıkça Sorulan Sorular
“Olumsuz İstemler ve Hariç Tutmalar” dersi ücretsiz mi?
Evet — “Olumsuz İstemler ve Hariç Tutmalar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Prompt Engineering kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Prompt Engineering kursu toplamda 4 dersten oluşur.
“Olumsuz İstemler ve Hariç Tutmalar” dersinde ne öğreneceğim?
Hariç tutulacaklar: bulanık, filigranlı, çirkin, deforme — etkili olumsuz istem oluşturma. AI Prompt Engineering ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
AI Prompt Engineering öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Prompt Engineering, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Olumsuz İstemler ve Hariç Tutmalar” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu AI Prompt Engineering dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Prompt Engineering dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Görüntü Üretim İsteminin Anatomisi
- Tarz ve Sanatsal Araç Belirtimi
- Olumsuz İstemler ve Hariç Tutmalar
- Görüntü İstemlerini Yinelemeli Olarak İyileştirme