Visuelle Fragebeantwortung
Stellen Sie konkrete Fragen zu Bildinhalten, Mengen und Eigenschaften
Visuelle Fragebeantwortung ist eine kostenlose AI Prompt Engineering-Lektion auf CoddyKit. Dies ist Lektion 2 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.
Visuelle Fragebeantwortung
Visual Question Answering (VQA) bezeichnet die Aufgabe, Fragen in natürlicher Sprache zu einem Bild zu beantworten. Anders als bei der Bildbeschreibung, die alles beschreibt, konzentriert VQA das Modell auf die Beantwortung einer bestimmten Frage.
VQA-Prompts sind präzise und direkt und erfordern häufig, visuelle Inhalte zu zählen, zu identifizieren, zu vergleichen oder daraus Schlussfolgerungen zu ziehen. Die Qualität des Prompts bestimmt, ob Sie eine präzise, nützliche Antwort oder eine vage allgemeine Reaktion erhalten.
Grundstruktur eines VQA-Prompts
Ein VQA-Prompt kombiniert ein Bild mit einer spezifischen Frage. Entscheidend ist, die Frage so präzise zu formulieren, dass eine direkte, verwertbare Antwort entsteht:
import anthropic, base64
client = anthropic.Anthropic(api_key='YOUR_API_KEY')
def ask_about_image(image_path, question, answer_format='Direct answer. No extra explanation.'):
with open(image_path, 'rb') as f:
img_b64 = base64.standard_b64encode(f.read()).decode('utf-8')
prompt = f'{question}\n\n{answer_format}'
r = client.messages.create(
model='claude-opus-4-5', max_tokens=150,
messages=[{'role': 'user', 'content': [
{'type': 'image', 'source': {'type': 'base64', 'media_type': 'image/jpeg', 'data': img_b64}},
{'type': 'text', 'text': prompt}
]}]
)
return r.content[0].text
# Example VQA calls (replace image.jpg with actual image)
print('VQA function defined. Ready for image questions.')Fragen zum Zählen
Das Zählen ist eine häufige VQA-Aufgabe. Präzise Zähl-Prompts liefern genauere Ergebnisse als vage Formulierungen:
# Vague (bad):
vague_prompt = 'How many people are there?'
# Precise (good): specifies what counts and what does not
counting_prompt = '''
How many people are visible in this image?
Count only: people whose faces OR bodies are at least 50% visible.
Do NOT count: people who are heavily cropped, cut off at the edge, or only partially visible.
Return a single number.
'''
# Even more precise: handles partial visibility explicitly
precise_count = '''
Count the number of distinct individuals visible in this image.
If a person is partially obscured, count them if more than half their body is visible.
Return JSON: {"count": integer, "partially_visible": integer, "notes": "string or null"}
'''
print('Counting prompts: vague vs precise.')
print('Precise prompts define edge cases explicitly.')Marken und Logos identifizieren
Das Erkennen von Markenlogos in Bildern ist eine häufige Aufgabe der Produktanalyse. Der Prompt muss festlegen, wonach gesucht und in welchem Format die Antwort zurückgegeben werden soll:
logo_prompt = '''
Identify all visible brand logos, company names, and product labels in this image.
For each, note:
- Brand/company name
- Where it appears in the image (top-left, center, on a product, etc.)
- Confidence: high (clearly legible) | medium (partially visible) | low (partially obscured)
Return JSON: {"brands": [{"name": str, "location": str, "confidence": str}]}
If no logos are visible, return: {"brands": []}
'''
import anthropic, base64, json
client = anthropic.Anthropic(api_key='YOUR_API_KEY')
def identify_brands(image_path):
with open(image_path, 'rb') as f:
img_b64 = base64.standard_b64encode(f.read()).decode('utf-8')
r = client.messages.create(
model='claude-opus-4-5', max_tokens=200,
messages=[{'role': 'user', 'content': [
{'type': 'image', 'source': {'type': 'base64', 'media_type': 'image/jpeg', 'data': img_b64}},
{'type': 'text', 'text': logo_prompt}
]}]
)
return json.loads(r.content[0].text)
print('Brand identification function defined.')Emotionen und Gesichtsausdrücke erkennen
Das Erkennen emotionaler Ausdrücke in Bildern erfordert eine sorgfältige Prompt-Gestaltung, die Unsicherheit berücksichtigt:
emotion_prompt = '''
Describe the emotional expression of the person in this image.
Assess:
- Primary emotion: (happy, sad, angry, surprised, fearful, disgusted, neutral, or other)
- Intensity: (low, moderate, high)
- Confidence: (high if expression is clear, medium if subtle, low if face is obscured or turned away)
- Evidence: which specific facial features support your assessment
Return JSON:
{
"primary_emotion": str,
"intensity": str,
"confidence": str,
"evidence": str,
"secondary_emotion": str or null
}
If no person or face is clearly visible, return: {"primary_emotion": null, "confidence": "none", "reason": str}
'''
print(emotion_prompt)Fragen zu räumlichen Beziehungen
Fragen zur Position von Objekten relativ zueinander erfordern ein eindeutiges räumliches Vokabular im Prompt:
spatial_prompt = '''
Answer questions about the spatial relationships of objects in this image.
Use these spatial terms consistently:
- Position in frame: top-left, top-center, top-right, middle-left, center, middle-right, bottom-left, bottom-center, bottom-right
- Relative position: in front of, behind, to the left of, to the right of, above, below, overlapping
- Distance: in the foreground, in the midground, in the background
Question: {question}
Answer in one or two sentences using the spatial vocabulary above.
'''
# Example questions:
questions = [
'Where is the red cup relative to the laptop?',
'Is the plant in the foreground or background?',
'What object is to the left of the person?'
]
for q in questions:
print(spatial_prompt.replace('{question}', q)[:200])
print('---')Qualität und Zustand beurteilen
Die Beurteilung der Qualität oder des Zustands von Objekten in Bildern ist nützlich für Produktinspektionen, Immobilienbewertungen und Qualitätskontrolle:
condition_prompt = '''
Assess the condition of the main subject in this image.
Rate on these dimensions (1-5 scale, 5=excellent):
- Physical condition: (1=heavily damaged, 5=like new)
- Cleanliness: (1=very dirty, 5=spotless)
- Completeness: (1=major parts missing, 5=fully intact)
For each rating, provide one-sentence evidence.
Return JSON:
{
"physical_condition": {"score": int, "evidence": str},
"cleanliness": {"score": int, "evidence": str},
"completeness": {"score": int, "evidence": str},
"overall_grade": "excellent|good|fair|poor",
"recommendation": str
}
'''
print('Condition assessment prompt defined.')
print('Useful for: product inspection, real estate, equipment maintenance.')VQA-Ja/Nein-Fragen
Binäre Ja/Nein-Fragen benötigen Prompts, die das Modell daran hindern, eine ausweichende Fließtextantwort zu geben, wenn Sie einen einfachen booleschen Wert benötigen:
def yes_no_question(image_path, question):
with open(image_path, 'rb') as f:
img_b64 = base64.standard_b64encode(f.read()).decode('utf-8')
prompt = f'''
Answer this yes/no question about the image.
Return JSON: {{"answer": "yes|no", "confidence": "high|medium|low", "reason": str}}
Do NOT answer with maybe, possibly, or a hedged statement.
If you genuinely cannot determine the answer, return {{"answer": "unclear", "confidence": "low", "reason": str}}
Question: {question}
'''
r = client.messages.create(
model='claude-opus-4-5', max_tokens=100,
messages=[{'role': 'user', 'content': [
{'type': 'image', 'source': {'type': 'base64', 'media_type': 'image/jpeg', 'data': img_b64}},
{'type': 'text', 'text': prompt}
]}]
)
return json.loads(r.content[0].text)
# Example: 'Is there a safety helmet visible in the image?'
print('Yes/no VQA function defined.')VQA-Fragen verketten
Mehrere VQA-Fragen zu demselben Bild können in einem einzigen Prompt verkettet werden, um API-Aufrufe zu reduzieren:
multi_question_prompt = '''
Answer all of the following questions about this image.
Return a JSON object where each key is the question ID.
Questions:
1. How many people are visible?
2. What is the approximate age range of the youngest person?
3. Is there any food visible in the image?
4. What is the dominant color in the image?
5. Is the setting indoors or outdoors?
Return JSON:
{
"q1": {"answer": str},
"q2": {"answer": str},
"q3": {"answer": "yes|no", "details": str or null},
"q4": {"answer": str},
"q5": {"answer": "indoors|outdoors|unclear"}
}
'''
print('Multi-question VQA prompt — answers 5 questions in one API call.')Mit Unsicherheit bei VQA umgehen
VQA-Fragen lassen sich manchmal nicht sicher beantworten – das Bild kann unscharf sein, das relevante Element kann teilweise verdeckt sein oder die Antwort kann tatsächlich mehrdeutig sein. Fordern Sie explizite Unsicherheit an, statt das Modell zu einer Vermutung zu zwingen:
uncertainty_vqa_prompt = '''
Answer this question about the image as precisely as possible.
If the answer is not clearly visible or is ambiguous, say so explicitly.
Question: {question}
Return JSON:
{
"answer": str,
"confidence": "high|medium|low|cannot_determine",
"limitation": str or null
}
For confidence levels:
- high: Answer is clearly visible and unambiguous
- medium: Visible but some uncertainty
- low: Partially visible or requires inference
- cannot_determine: Not enough visual information
Question: What brand is printed on the water bottle?
'''
print(uncertainty_vqa_prompt)Domänenspezifische VQA-Prompts
Unterschiedliche Domänen erfordern ein jeweils anderes VQA-Vokabular und unterschiedliche Messstandards. Domänenspezifische Prompts liefern präzisere und direkt nutzbare Antworten:
# Manufacturing quality control VQA
qc_prompt = '''
Inspect this product image for quality defects.
Answer each question:
1. Are there any visible scratches or surface damage? (yes/no + location)
2. Is the product alignment within expected tolerance? (yes/no)
3. Are all required labels/markings present? (yes/no + list missing ones)
4. Overall QC result: PASS or FAIL?
Return JSON:
{"scratches": {"present": bool, "location": str or null},
"alignment_ok": bool,
"labels_complete": bool, "missing_labels": [str],
"qc_result": "PASS|FAIL",
"fail_reasons": [str]}
'''
# Food safety VQA
food_prompt = '''
Inspect this food preparation image.
1. Are gloves being worn? 2. Is hair covered? 3. Any visible contamination risk?
Return JSON: {"gloves": bool, "hair_covered": bool, "contamination_risk": bool, "details": str}
'''
print("Domain-specific QC and food safety VQA prompts defined.")Kurze Überprüfung
Welcher VQA-Prompt liefert beim Zählen von Objekten in einem Bild mit größter Wahrscheinlichkeit eine präzise, verwertbare Antwort?
VQA-Prompts – wichtigste Erkenntnisse
Effektives Visual Question Answering erfordert präzise konzipierte Prompts:
- Formulieren Sie Fragen spezifisch und direkt – vermeiden Sie vage Begriffe wie einige oder verschiedene
- Definieren Sie Grenzfälle bei Zählfragen ausdrücklich (was gilt als teilweise sichtbar?)
- Geben Sie das genaue Ausgabeformat an – JSON, eine einzelne Zahl, Ja/Nein –, um ausweichende Antworten in Fließtext zu verhindern
- Fügen Sie für alle Antworten Konfidenzwerte hinzu, damit unsichere Ausgaben gekennzeichnet werden können
- Fassen Sie mehrere Fragen zum selben Bild in einem Aufruf zusammen, um API-Kosten zu senken
- Verhindern Sie bei binären Ja/Nein-Fragen ausdrücklich ausweichende Antworten, indem Sie eine unclear-Ausweichoption vorsehen
- Domänenspezifisches VQA (medizinisch, rechtlich, produktbezogen) erfordert domänenspezifisches Vokabular im Prompt
Häufig gestellte Fragen
Ist die Lektion „Visuelle Fragebeantwortung“ kostenlos?
Ja — der vollständige Text von „Visuelle Fragebeantwortung“ 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 „Visuelle Fragebeantwortung“?
Stellen Sie konkrete Fragen zu Bildinhalten, Mengen und Eigenschaften 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 2 von 4.
Wie lange dauert die Lektion „Visuelle Fragebeantwortung“?
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
- Prompts für Bildbeschreibung und Captioning
- Visuelle Fragebeantwortung
- Prompts zum Vergleich mehrerer Bilder
- Prompts für OCR und Dokumentenanalyse