Iterative Verfeinerung von Bild-Prompts
Generierte Bilder analysieren und Prompts systematisch anpassen.
Iterative Verfeinerung von Bild-Prompts ist eine kostenlose AI Prompt Engineering-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des AI Prompt Engineering-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der AI Prompt Engineering-Kurs umfasst insgesamt 4 Lektionen.
Warum iterative Verfeinerung?
Bild-Prompts aus dem ersten Generierungsversuch führen nur selten genau zum gewünschten Ergebnis. Iterative Verfeinerung ist ein systematischer Arbeitsablauf: Generieren, analysieren, Lücken erkennen, den Prompt anpassen und erneut generieren. Jeder Durchlauf verkleinert den Abstand zwischen Absicht und Ausgabe.
Die Verfeinerungsschleife
Die iterative Verfeinerungsschleife umfasst vier Schritte: Generieren (mit dem aktuellen Prompt ein Bild erstellen), Analysieren (Fehler oder fehlende Elemente erkennen), Anpassen (den Prompt zur Behebung der Probleme ändern) und Erneut generieren. Wiederholen Sie den Ablauf, bis Sie zufrieden sind oder Budget- beziehungsweise Zeitbeschränkungen ihn beenden.
class PromptRefinementSession:
def __init__(self, initial_prompt, negative_prompt=''):
self.history = []
self.current_prompt = initial_prompt
self.current_negative = negative_prompt
self.iteration = 0
def record_iteration(self, issues_found, adjustments_made):
self.history.append({
'iteration': self.iteration,
'prompt': self.current_prompt,
'negative': self.current_negative,
'issues': issues_found,
'adjustments': adjustments_made
})
self.iteration += 1
def update_prompt(self, new_prompt, new_negative=None):
self.current_prompt = new_prompt
if new_negative is not None:
self.current_negative = new_negative
def get_history(self):
return self.history
# Usage
session = PromptRefinementSession(
initial_prompt='a woman walking in a rainy city at night',
negative_prompt='blurry, low quality'
)
print('Refinement session started. Iteration 0.')Ein generiertes Bild analysieren: Problemkategorien
Ordnen Sie bei der Analyse der Fehler die Probleme nach ihrem Typ. Dadurch erkennen Sie, welcher Teil des Prompts angepasst werden muss – etwa durch das Hinzufügen von Details, das Entfernen von Konflikten oder das Anpassen von Gewichtungen.
ISSUE_TAXONOMY = {
'Subject issues': [
'Subject missing or wrong species/gender/age',
'Key detail absent (clothing, expression, props)',
'Pose or action incorrect',
'Background wrong or distracting'
],
'Style issues': [
'Wrong art style (photo when painting expected)',
'Too stylized/not stylized enough',
'Style inconsistency (mixing styles incoherently)'
],
'Lighting issues': [
'Wrong time of day',
'Too dark or too bright',
'Shadows wrong direction',
'Missing dramatic effect'
],
'Composition issues': [
'Wrong framing (too close/far)',
'Subject cropped awkwardly',
'Rule of thirds not applied',
'Cluttered vs. desired clean composition'
],
'Quality issues': [
'Blurry or low detail',
'Anatomical distortion (extra fingers)',
'Watermark or text artifact',
'Overexposed/underexposed areas'
]
}
for category, issues in ISSUE_TAXONOMY.items():
print(f'{category}: {issues[0]}')Iteration 1: Vorher und nachher
Hier sehen Sie ein konkretes Vorher-nachher-Beispiel, das zeigt, wie das Erkennen von Problemen und die Anpassung des Prompts die Ergebnisse verbessern.
# ITERATION 0: Initial prompt (too vague)
prompt_v0 = 'a woman walking in a rainy city at night'
# Issues found:
# - Style unspecified -> model defaulted to generic illustration
# - Lighting unspecified -> flat even light, no mood
# - No detail on clothing or setting
# - No composition direction
# ITERATION 1: Add style, lighting, detail
prompt_v1 = (
'a young woman in a yellow raincoat walking down '
'a rain-soaked Tokyo street at night, '
'neon signs reflected in puddles, steam rising from grates, '
'cinematic photography style, street photography, '
'warm neon glow, wet pavement reflections, '
'medium shot, slightly low angle, bokeh background'
)
negative_v1 = 'blurry, low quality, watermark, extra fingers, cartoon'
# Remaining issues after v1:
# - Raincoat not yellow (model defaulted to dark colors)
# - Woman facing wrong way
print('V0 length:', len(prompt_v0.split()))
print('V1 length:', len(prompt_v1.split()))
print('Iteration adds: style, lighting, composition, specific details')Iteration 2: Bestimmte Elemente korrigieren
Die zweite Iteration konzentriert sich präzise auf die verbleibenden Probleme – schreiben Sie nicht den gesamten Prompt neu, sondern beheben Sie nur die in Iteration 1 festgestellten konkreten Probleme.
# ITERATION 1 issues:
# - Raincoat not yellow (model defaulted to dark)
# - Woman facing wrong way (walking away from camera)
# ITERATION 2: targeted fixes
prompt_v2 = (
'a young woman in a BRIGHT YELLOW raincoat '
'walking TOWARD the camera '
'down a rain-soaked Tokyo street at night, '
'neon signs reflected in puddles, steam rising from grates, '
'face visible, slight smile, carrying groceries, '
'cinematic photography style, street photography, '
'warm neon glow, wet pavement reflections, '
'medium shot, slightly low angle, bokeh background'
)
# Changes made:
# 1. "BRIGHT YELLOW" capitalization + adjective for emphasis
# 2. Added "walking TOWARD the camera" to fix direction
# 3. Added "face visible" to prevent back-to-camera result
# 4. Added specific detail: "carrying groceries, slight smile"
# Best practice: track what you changed and why
changelog = {
'v0_to_v1': 'Added style, lighting, composition, city details',
'v1_to_v2': 'Fixed raincoat color, fixed walking direction, added face constraint'
}
print('Changelog:', changelog)Feste Seeds zum Vergleichen verwenden
Verwenden Sie beim Vergleich von Prompt-Varianten einen festen Zufalls-Seed, damit die Prompt-Änderung die einzige Variable ist. Ohne einen festen Seed können Sie nicht feststellen, ob Änderungen der Ausgabe auf Ihre Prompt-Anpassung oder auf den Zufall zurückzuführen sind.
import requests
SD_API_URL = 'http://localhost:7860/sdapi/v1/txt2img'
def compare_prompt_versions(prompts_dict, negative='blurry, low quality',
seed=12345, steps=30):
results = {}
for version, prompt in prompts_dict.items():
payload = {
'prompt': prompt,
'negative_prompt': negative,
'seed': seed, # FIXED SEED for fair comparison
'steps': steps,
'cfg_scale': 7,
'width': 512,
'height': 512
}
response = requests.post(SD_API_URL, json=payload)
results[version] = response.json().get('images', [None])[0]
print(f'{version}: generated with seed {seed}')
return results
promptvariants = {
'v0': 'a woman walking in a rainy city at night',
'v1': 'cinematic, rainy Tokyo night, yellow raincoat, neon reflections',
'v2': 'BRIGHT YELLOW raincoat, facing camera, cinematic Tokyo rain night'
}
# compare_prompt_versions(prompt_variants, seed=42)Der subtraktive Ansatz
Nach vielen Iterationen können Prompts manchmal überladen sein. Beim subtraktiven Ansatz beginnen Sie mit einem detaillierten Prompt und entfernen Begriffe einzeln, um zu prüfen, welche tatsächlich Wirkung zeigen – und welche nur zusätzliches Rauschen erzeugen.
# Start with a detailed prompt
full_prompt = (
'young woman, yellow raincoat, Tokyo, rain, neon, night, '
'street photography, cinematic, bokeh, wet pavement, '
'medium shot, warm tones, highly detailed, 8K, masterpiece, '
'award winning, beautiful, stunning, gorgeous'
)
# Remove terms and test if output quality degrades
test_removed = [
'masterpiece, award winning, beautiful, stunning, gorgeous', # quality tokens
'8K, highly detailed', # resolution tokens
'wet pavement', # specific detail
'cinematic', # style term
]
# Results typically show:
# - Generic quality tokens (masterpiece, beautiful) have minimal effect
# - Specific scene details (wet pavement, neon) matter most
# - Remove token: if output unchanged, that term is not contributing
print('Subtractive testing: remove terms and observe impact')
print('Terms that do not change output when removed can be discarded')
print('This produces lean, effective prompts')Verfeinerung für bestimmte Fehlerbilder
Für die häufigsten Fehlerbilder bei der Bildgenerierung gibt es jeweils bekannte Lösungen. Wenn Sie dieses Wissen in eine systematische Checkliste überführen, beschleunigt das die Verfeinerung.
FAILURE_FIXES = {
'Extra or deformed fingers': [
'Add to negative: extra fingers, deformed hands, bad anatomy',
'Add to positive: perfect hands, anatomically correct',
'Use inpainting to fix the specific area'
],
'Text artifacts / watermarks': [
'Add to negative: watermark, text, signature, logo',
'Increase CFG scale slightly',
'Use a different model checkpoint'
],
'Wrong style (cartoonish when photo expected)': [
'Add to negative: cartoon, anime, illustration, painted',
'Add to positive: photorealistic, DSLR, film photography',
'Use a photorealism-focused checkpoint'
],
'Background too busy / distracting': [
'Add to positive: simple background, clean background, blurred background',
'Add: shallow depth of field, bokeh background',
'Add to negative: cluttered background, busy background'
],
'Wrong color (model ignores color spec)': [
'Emphasize color: BRIGHT RED (caps), crimson red, deep scarlet',
'Add color to multiple places in prompt',
'Use img2img with a color reference image'
]
}
for failure, fixes in list(FAILURE_FIXES.items())[:3]:
print(f'\nISSUE: {failure}')
for fix in fixes:
print(f' FIX: {fix}')Prompt-Versionierung für die Bildgenerierung
Verfolgen Sie Prompt-Versionen und deren Ausgaben systematisch. So entsteht eine Referenzbibliothek für zukünftige Projekte, und Sie erkennen Muster darin, was bei bestimmten Motiven und Stilen funktioniert.
import json
from datetime import datetime
from pathlib import Path
def save_refinement_session(session_name, iterations, output_dir='prompt_sessions'):
Path(output_dir).mkdir(exist_ok=True)
session_data = {
'name': session_name,
'created': datetime.now().isoformat(),
'iterations': iterations
}
filepath = f'{output_dir}/{session_name}.json'
with open(filepath, 'w') as f:
json.dump(session_data, f, indent=2)
print(f'Session saved: {filepath}')
# Example session record
session = [
{
'version': 'v0',
'prompt': 'a woman walking in a rainy city at night',
'issues': ['too vague', 'no style', 'no lighting'],
'seed': 12345
},
{
'version': 'v1',
'prompt': 'young woman, yellow raincoat, Tokyo night rain, neon, cinematic',
'issues': ['raincoat not yellow', 'facing wrong way'],
'seed': 12345
},
{
'version': 'v2',
'prompt': 'BRIGHT YELLOW raincoat, facing camera, Tokyo rain, neon, cinematic',
'issues': [],
'seed': 12345,
'status': 'accepted'
}
]
save_refinement_session('tokyo_rain_woman', session)Verfeinerungsbudget: Wie viele Iterationen?
Die Verfeinerung bringt mit der Zeit immer geringere zusätzliche Verbesserungen. Ein praxisnaher Rahmen für die Entscheidung, wie viele Iterationen Sie je nach Anwendungsfall investieren sollten:
ITERATION_BUDGET_GUIDE = {
'Quick internal mockup': {
'budget': '2-3 iterations',
'goal': 'Good enough to communicate concept',
'stopping_criteria': 'Main subject correct, rough style established'
},
'Marketing asset': {
'budget': '4-6 iterations',
'goal': 'Professional quality, brand-consistent',
'stopping_criteria': 'Color, style, composition match brief exactly'
},
'Hero image / campaign visual': {
'budget': '8-12 iterations + final manual touchup',
'goal': 'Publication quality, no visible artifacts',
'stopping_criteria': 'Zero artifacts, passes creative director review'
},
'Generative art piece': {
'budget': 'Unlimited — creative exploration',
'goal': 'Discover unexpected aesthetic direction',
'stopping_criteria': 'Emotional resonance with creator\'s intent'
}
}
for use_case, guide in ITERATION_BUDGET_GUIDE.items():
print(f'{use_case}: {guide["budget"]}')
print(f' Stop when: {guide["stopping_criteria"]}')
print()LLM-gestützte Prompt-Verfeinerung
Verwenden Sie ein Text-LLM, um bei der Analyse von Bildproblemen und bei der Verbesserung von Prompts zu helfen. So kombinieren Sie die Schlussfolgerungsfähigkeit eines LLM mit der Bildgenerierung und erzeugen eine Meta-Verfeinerungsschleife.
import anthropic
client = anthropic.Anthropic(api_key='YOUR_API_KEY')
REFINEMENT_ADVISOR_PROMPT = '''I am generating an image with this prompt:
Current prompt: {current_prompt}
Negative prompt: {current_negative}
The image has these problems:
{issues}
Suggest specific changes to the prompt that would fix these problems.
Provide:
1. Modified positive prompt (full, ready to use)
2. Modified negative prompt (full, ready to use)
3. Explanation of each change
Keep your changes minimal — only fix the stated issues, do not redesign the image.'''
def get_refinement_suggestion(current_prompt, current_negative, issues):
response = client.messages.create(
model='claude-opus-4-5', max_tokens=1000,
messages=[{'role': 'user', 'content':
REFINEMENT_ADVISOR_PROMPT.format(
current_prompt=current_prompt,
current_negative=current_negative,
issues='\n'.join(f'- {i}' for i in issues)
)}]
)
return response.content[0].text
suggestion = get_refinement_suggestion(
current_prompt='a woman in a raincoat at night',
current_negative='blurry',
issues=['raincoat appears dark not yellow', 'background too busy']
)
print(suggestion[:300], '...')Kurzer Wissenstest
Sie möchten zwei Versionen eines Bild-Prompts vergleichen, um festzustellen, ob Ihre Änderung die Ergebnisse verbessert hat. Welche Werte müssen Sie für einen fairen Vergleich konstant halten?
Zusammenfassung der iterativen Verfeinerung
Die iterative Verfeinerung von Bild-Prompts ist eine systematische und erlernbare Fähigkeit:
- Die Schleife: Generieren → Analysieren → Anpassen → Erneut generieren
- Problemkategorien: Ordnen Sie Probleme den Bereichen Motiv, Stil, Beleuchtung, Komposition oder Qualität zu
- Fester Seed: Vergleichen Sie Prompt-Versionen immer mit demselben Seed
- Gezielte Änderungen: Beheben Sie konkret erkannte Probleme, statt den gesamten Prompt neu zu schreiben
- Subtraktiver Ansatz: Entfernen Sie Begriffe, um festzustellen, welche tatsächlich zum Ergebnis beitragen
- Versionsverfolgung: Erfassen Sie für jede Iteration den Prompt, die Probleme und die Änderungen
- Budgetbewusstsein: 2–3 Iterationen für Mock-ups, 8–12 für zentrale Assets
Häufig gestellte Fragen
Ist die Lektion „Iterative Verfeinerung von Bild-Prompts“ kostenlos?
Ja — der vollständige Text von „Iterative Verfeinerung von Bild-Prompts“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des AI Prompt Engineering-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der AI Prompt Engineering-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Iterative Verfeinerung von Bild-Prompts“?
Generierte Bilder analysieren und Prompts systematisch anpassen. Du übst AI Prompt Engineering mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um AI Prompt Engineering zu starten?
Keine Vorkenntnisse erforderlich. AI Prompt Engineering auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Iterative Verfeinerung von Bild-Prompts“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser AI Prompt Engineering-Lektion Code schreiben und ausführen?
Ja. Jede AI Prompt Engineering-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Anatomie eines Bildgenerierungs-Prompts
- Stil und künstlerisches Medium spezifizieren
- Negative Prompts und Ausschlüsse
- Iterative Verfeinerung von Bild-Prompts