0Pricing
AI Prompt Engineering · 课时

负面提示词与排除项

需要排除的内容:模糊、带水印、丑陋、变形——有效的负面提示词方法。

负面提示词与排除项 是 CoddyKit 上的免费 AI Prompt Engineering 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 AI Prompt Engineering 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 AI Prompt Engineering 课程共包含 4 节课。

什么是负面提示词

负面提示词会告诉图像模型生成的图像中不要包含哪些内容。它们与正向提示词分开,用于引导生成过程避开不需要的瑕疵、风格和元素。这个概念最初是 Stable Diffusion 的功能,后来扩展到了各种图像生成模型。

Stable Diffusion 负面提示词语法

在 Stable Diffusion 中,负面提示词会作为单独的参数传入。模型会将其视为反向引导:生成过程中会主动排斥负面提示词中的概念。

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

通用质量负面提示词

一组标准的负面提示词术语几乎可以改善任何主题的输出质量。请记住这组词,或将其保存为默认起点。

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

解剖结构与身体负面提示词

人工智能图像模型在手部和手指方面的问题众所周知。具体的解剖结构负面提示词可以显著减少人物生成中的这些瑕疵。

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

使用负面提示词排除风格

负面提示词可以排除不需要的风格——当正向提示词中的风格术语吸引了您想避开的相近风格时,这一点尤其有用。常见的风格排除项包括:

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 的排除语法

DALL-E 3 没有单独的负面提示词字段。相反,您应在正向提示词中使用“avoid”“without”“no”或“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], '...')

负面提示词强度与 CFG 比例

在 Stable Diffusion 中,CFG(无分类器引导)比例控制提示词(包括正向和负面提示词)对生成过程的影响强度。CFG 越高,遵循提示词的程度越强,但也可能导致瑕疵。

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

构建负面提示词库

不同的使用场景需要不同的负面提示词集合。请构建一个包含各领域负面提示词的词库,以便根据任何生成任务进行组合。

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

测试负面提示词的有效性

请系统地测试哪些负面提示词确实能改善您的具体使用场景。分别在有和没有负面提示词的情况下进行生成,并使用固定种子比较输出结果。

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 参数

Midjourney 使用 --no 参数来实现负面提示词的作用。语法虽然不同,但概念完全相同:在提示词末尾追加 --no [term1] [term2]。

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

快速检查

哪种 Stable Diffusion 技巧可以提高某个特定负面术语相对于其他术语的影响力?

负面提示词总结

负面提示词是引导图像生成避开不需要特征的强大工具:

  • Stable Diffusion:使用单独的 negative_prompt 参数;支持括号加权
  • DALL-E 3:在正向提示词中使用“avoid”“without”“do not include”
  • Midjourney:将 --no [terms] 追加到提示词中
  • 通用负面词:模糊、低质量、水印、文字、多余手指
  • CFG 比例:控制正向和负面提示词对生成过程的引导强度
  • 局限性:只能降低出现概率,不能保证排除;最多使用 15~20 个术语

常见问题解答

「负面提示词与排除项」课时是免费的吗?

是的 — 「负面提示词与排除项」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 AI Prompt Engineering 课程的其余内容,请升级到 CoddyKit PRO。 AI Prompt Engineering 课程共包含 4 节课。

「负面提示词与排除项」这节课中我会学到什么?

需要排除的内容:模糊、带水印、丑陋、变形——有效的负面提示词方法。 你通过在浏览器中直接运行的动手代码来练习 AI Prompt Engineering,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 AI Prompt Engineering 需要有经验吗?

无需任何先前经验。CoddyKit 上的 AI Prompt Engineering 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「负面提示词与排除项」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 AI Prompt Engineering 课中编写并运行代码吗?

能。每节 AI Prompt Engineering 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 图像生成提示词的构成
  2. 风格与艺术媒介规范
  3. 负面提示词与排除项
  4. 迭代优化图像提示词
← 返回 AI Prompt Engineering