0Pricing
AI Prompt Engineering · Pelajaran

Prompt Negatif dan Pengecualian

Hal-hal yang perlu dikecualikan: buram, tanda air, jelek, cacat — prompting negatif yang efektif.

Prompt Negatif dan Pengecualian adalah pelajaran AI Prompt Engineering gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Prompt Engineering, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Prompt Engineering mencakup 4 pelajaran total.

Apa Itu Perintah Negatif?

Perintah negatif memberi tahu model gambar apa yang tidak boleh disertakan dalam gambar yang dihasilkan. Perintah ini terpisah dari perintah positif dan mengarahkan proses pembuatan agar menjauhi artefak, gaya, serta elemen yang tidak diinginkan. Awalnya merupakan fitur Stable Diffusion, konsep ini kemudian menyebar ke berbagai model pembuatan gambar.

Sintaks Perintah Negatif Stable Diffusion

Dalam Stable Diffusion, perintah negatif diberikan sebagai parameter terpisah. Model memperlakukannya sebagai panduan antiarah: konsep dalam perintah negatif secara aktif dijauhi selama proses pembuatan.

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

Perintah Negatif Universal untuk Kualitas

Serangkaian istilah perintah negatif standar dapat meningkatkan kualitas keluaran untuk hampir semua subjek. Hafalkan atau simpan rangkaian ini sebagai titik awal bawaan Anda.

# 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], '...')

Perintah Negatif untuk Anatomi dan Tubuh

Model gambar AI terkenal kesulitan menghasilkan tangan dan jari. Perintah negatif anatomi yang spesifik secara signifikan mengurangi artefak ini saat membuat gambar sosok manusia.

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

Mengecualikan Gaya dengan Perintah Negatif

Perintah negatif dapat mengecualikan gaya yang tidak diinginkan — berguna ketika istilah gaya dalam perintah positif menarik gaya-gaya serupa yang ingin Anda hindari. Pengecualian gaya yang umum:

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

Sintaks Penghindaran DALL-E

DALL-E 3 tidak memiliki kolom perintah negatif terpisah. Sebagai gantinya, pengecualian ditulis secara alami dalam perintah positif menggunakan bahasa 'avoid', 'without', 'no', atau 'do not include'.

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], '...')

Kekuatan Perintah Negatif dan Skala CFG

Dalam Stable Diffusion, skala CFG (Classifier-Free Guidance) mengendalikan seberapa kuat perintah (baik positif maupun negatif) memengaruhi proses pembuatan. CFG yang lebih tinggi berarti kepatuhan yang lebih kuat, tetapi dapat menyebabkan artefak.

# 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], '...')

Membangun Pustaka Perintah Negatif

Kasus penggunaan yang berbeda memerlukan kumpulan perintah negatif yang berbeda. Bangun pustaka perintah negatif khusus domain yang dapat digabungkan untuk tugas pembuatan apa pun.

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], '...')

Saat Perintah Negatif Gagal

Perintah negatif bukan jaminan — perintah ini mengurangi kemungkinan munculnya elemen yang tidak diinginkan, tetapi tidak menghilangkannya. Memahami kapan perintah negatif gagal membantu menetapkan ekspektasi yang realistis.

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

Menguji Efektivitas Perintah Negatif

Uji secara sistematis perintah negatif mana yang benar-benar meningkatkan hasil untuk kasus penggunaan spesifik Anda. Buat gambar dengan dan tanpa perintah negatif, lalu bandingkan keluarannya menggunakan benih tetap.

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.')

Parameter Tanpa Midjourney

Midjourney menggunakan parameter --no sebagai padanan perintah negatif. Sintaksnya berbeda, tetapi konsepnya sama: tambahkan --no [term1] [term2] di akhir perintah.

# 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], '...')

Pemeriksaan Singkat

Teknik Stable Diffusion apa yang meningkatkan pengaruh istilah negatif tertentu dibandingkan istilah lainnya?

Ringkasan Perintah Negatif

Perintah negatif adalah alat yang ampuh untuk mengarahkan pembuatan gambar agar menjauhi kualitas yang tidak diinginkan:

  • Stable Diffusion: parameter negative_prompt terpisah; mendukung pembobotan dalam tanda kurung
  • DALL-E 3: gunakan 'avoid', 'without', 'do not include' dalam perintah positif
  • Midjourney: --no [terms] ditambahkan ke perintah
  • Negatif universal: buram, kualitas rendah, tanda air, teks, jari tambahan
  • Skala CFG: mengendalikan seberapa kuat perintah (positif dan negatif) memandu proses pembuatan
  • Keterbatasan: mengurangi kemungkinan, tetapi tidak menjamin pengecualian; maksimal 15–20 istilah

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Prompt Negatif dan Pengecualian” gratis?

Ya — teks lengkap “Prompt Negatif dan Pengecualian” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Prompt Engineering, upgrade ke CoddyKit PRO. Kursus AI Prompt Engineering mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Prompt Negatif dan Pengecualian”?

Hal-hal yang perlu dikecualikan: buram, tanda air, jelek, cacat — prompting negatif yang efektif. Kamu berlatih AI Prompt Engineering dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai AI Prompt Engineering?

Tidak diperlukan pengalaman sebelumnya. AI Prompt Engineering di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Prompt Negatif dan Pengecualian” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Prompt Engineering ini?

Ya. Setiap pelajaran AI Prompt Engineering menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Anatomi Prompt untuk Pembuatan Gambar
  2. Spesifikasi Gaya dan Medium Artistik
  3. Prompt Negatif dan Pengecualian
  4. Penyempurnaan Prompt Gambar secara Iteratif
← Kembali ke AI Prompt Engineering