AI-promptteknik · Lektion

Visuell frågebesvarande

Ställ specifika frågor om bildinnehåll, antal och egenskaper.

Lektion 2 av 413 steg

Visuell frågebesvarande är en gratis lektion i AI-promptteknik på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för AI-promptteknik, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AI-promptteknik innehåller totalt 4 lektioner.

Visuell fråge- och svarshantering

Visuell fråge- och svarshantering (VQA) är uppgiften att besvara frågor på naturligt språk om en bild. Till skillnad från bildbeskrivning, som beskriver allt, fokuserar VQA modellen på att besvara en specifik fråga.

VQA-prompter är precisa och direkta och kräver ofta att modellen räknar, identifierar, jämför eller resonerar kring visuellt innehåll. Promptens kvalitet avgör om ni får ett precist och användbart svar eller ett vagt, allmänt svar.

Grundstruktur för VQA-prompter

En VQA-prompt kopplar en bild till en specifik fråga. Det viktiga är att göra frågan tillräckligt precis för att ge ett direkt och användbart svar:

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

Räkningsfrågor

Att räkna är en vanlig VQA-uppgift. Precisa räkningsprompter ger mer exakta resultat än vaga sådana:

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

Identifiering av varumärken och logotyper

Att identifiera varumärkeslogotyper i bilder är en vanlig uppgift inom produktanalys. Prompten måste ange vad modellen ska leta efter och i vilket format resultatet ska returneras:

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

Igenkänning av känslor och uttryck

Att identifiera känslouttryck i bilder kräver noggrann promptdesign som tar hänsyn till osäkerhet:

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)

Frågor om rumsliga relationer

Frågor om var objekt befinner sig i förhållande till varandra kräver ett tydligt rumsligt vokabulär i prompten:

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

Bedömning av kvalitet och skick

Att bedöma kvaliteten eller skicket hos objekt i bilder är användbart för produktinspektion, fastighetsbedömning och kvalitetskontroll:

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-frågor med ja/nej-svar

Binära ja/nej-frågor behöver prompter som hindrar modellen från att ge ett nyanserat löptextsvar när ni behöver ett enkelt booleskt värde:

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

Kedjning av VQA-frågor

Flera VQA-frågor om samma bild kan kedjas i en enda prompt för att minska antalet API-anrop:

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

Hantering av osäkerhet i VQA

VQA-frågor kan ibland inte besvaras med säkerhet – bilden kan vara suddig, det relevanta elementet kan vara delvis skymt eller svaret kan vara genuint tvetydigt. Be om uttrycklig osäkerhet i stället för att tvinga fram en gissning:

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änspecifika VQA-prompter

Olika domäner kräver olika VQA-vokabulär och mätstandarder. Domänspecifika prompter ger mer exakta och användbara svar:

# 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.")

Snabbkontroll

Vilken VQA-prompt ger sannolikt ett precist och användbart svar när objekt i en bild ska räknas?

VQA-prompter – viktigaste slutsatserna

Effektiv visuell frågebesvarande kräver noggrant utformade prompter:

  • Gör frågorna specifika och direkta – undvik vaga termer som några eller olika
  • Definiera uttryckligen specialfall för räkningsfrågor (vad räknas som delvis synligt?)
  • Ange exakt utdataformat – JSON, ett enda tal eller ja/nej – för att förhindra svävande textsvar
  • Inkludera konfidensnivåer för alla svar så att osäkra resultat kan flaggas
  • Samla flera frågor om samma bild i ett enda anrop för att minska API-kostnaderna
  • För binära ja/nej-frågor ska svävande svar uttryckligen förhindras genom ett reservalternativ för oklart
  • Domänspecifik VQA (medicin, juridik, produkter) kräver domänspecifik terminologi i prompten
Gratis att börja

Lär dig AI-promptteknik med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
53
Lektioner
199

Vanliga frågor

Är lektionen ”Visuell frågebesvarande” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen AI-promptteknik, inklusive ”Visuell frågebesvarande”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i AI-promptteknik innehåller totalt 4 lektioner.

Vad lär jag mig i ”Visuell frågebesvarande”?

Ställ specifika frågor om bildinnehåll, antal och egenskaper. Ni övar på AI-promptteknik med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig AI-promptteknik?

Du behöver inga förkunskaper. Utbildningen i AI-promptteknik på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Visuell frågebesvarande”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här AI-promptteknik-lektionen?

Ja. Varje AI-promptteknik-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Prompts för bildbeskrivning och bildtexter
  2. Visuell frågebesvarande
  3. Prompts för jämförelse av flera bilder
  4. Prompts för OCR och dokumentanalys
← Tillbaka till AI-promptteknik