Eliminera felaktiga svar
Antimönster är vanligtvis distraktorerna – lär dig känna igen dem.
Eliminera felaktiga svar är en gratis lektion i Claude Architect på CoddyKit. Detta är lektion 3 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 Claude Architect, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Claude Architect innehåller totalt 4 lektioner.
Distraktorn är oftast ett antimönster
På provet Claude Certified Architect får ni 4 alternativ till varje fråga och exakt 1 är rätt. De andra 3 är distraktorer – och de är inte slumpmässiga. De är utformade för att se rimliga ut för någon som bara kan materialet delvis.
Här är lektionens viktigaste insikt: distraktorer är mycket ofta välkända antimönster som klätts ut till lösningar. Om ni känner igen katalogen med antimönster direkt kan ni eliminera 2–3 alternativ innan ni ens har läst färdigt.
Eliminering ger hävstång. Eftersom det inte finns någon gissningsbestraffning höjer två eliminerade felaktiga svar en gissning från 25 % till 50 % – och oftast blir det rätta svaret då uppenbart.
Bygg en mental katalog över antimönster
Innan ni kan eliminera alternativ behöver ni kunna en lista över varningssignaler utantill. Detta är de återkommande felaktiga svaren i provets alla 8 scenarier:
- Tolka text efter signaler på att arbetet är klart (”stoppa när svaret innehåller ’done’”)
- Godtyckliga iterationsgränser som primär stoppmekanism
- Minimala eller tvetydiga verktygsbeskrivningar eller för många verktyg per agent
- Generiska felstatusar (”Operation failed”)
- Upprätthålla kritiska affärsregler enbart med prompts
- Granskning av flera filer i en enda genomgång och självgranskning i samma session
- Batch API för blockerande eller tidskänsliga kontroller
- Eskalering baserad på sentiment eller konfidens
- Kräva schemafält som kanske saknas
- Tyst undertryckning av fel och noggrannhetsmått som endast aggregeras
När ett alternativ motsvarar något av dessa är det nästan säkert fel svar. Betrakta listan som en snubbeltråd.
Varningssignal: tolka inte text för att stoppa loopen
Den agentiska loopen avslutas med stop_reason – aldrig genom att söka igenom modellens text efter ord som ”done” eller ”finished”. Alla alternativ som fortsätter loopen så länge en sträng finns i resultatet är distraktorer som bygger på antimönster.
Rätt mekanism är att skicka hela historiken i varje tur, kontrollera stop_reason, köra verktyg vid tool_use och stoppa vid end_turn.
# ANTI-PATTERN (a distractor you should eliminate):
while "done" not in response.content[0].text.lower():
response = client.messages.create(...)
# CORRECT: terminate on the structured stop_reason
while response.stop_reason == "tool_use":
tool_results = run_tools(response.content)
messages.append({"role": "user", "content": tool_results})
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=messages,
tools=tools,
)
# loop exits when stop_reason == "end_turn"Varningssignal: iterationsgränser som primär stoppmekanism
En nära släkting till den föregående fällan. En iterationsgräns ("stoppa efter 10 varv") är ett legitimt säkerhetsnät — men den är aldrig den primära stoppmekanismen. Beslut styrs av modellen; reservera hårdkodade gränser för garantier, inte för styrning av kontrollflödet.
Så när två alternativ båda nämner en loopgräns ska du läsa noggrant: det felaktiga alternativet gör gränsen till det huvudsakliga avslutningsvillkoret. Det rätta stoppar vid end_turn och använder gränsen enbart som skydd mot skenande loopar.
MAX_TURNS = 25 # safety net ONLY — not how we normally stop
turns = 0
while response.stop_reason == "tool_use":
if turns >= MAX_TURNS:
raise RuntimeError("runaway loop guard tripped") # rare escape hatch
turns += 1
messages.append({"role": "user", "content": run_tools(response.content)})
response = client.messages.create(model="claude-sonnet-4-5",
max_tokens=1024, messages=messages, tools=tools)
# normal, expected exit: stop_reason == "end_turn"Röd flagga: Prompter för kritiska affärsregler
När en fråga gäller pengar, juridik eller säkerhetskonsekvenser (återbetalningsgränser, policyöverträdelser) är ett alternativ som säger "instruera modellen i systemprompten att aldrig återbetala mer än 500 dollar" en distraktion. Prompter är ungefär 90 % probabilistiska. Hooks är 100 % deterministiska.
Det korrekta svaret tillämpar regeln med en PostToolUse- eller utgående anrops-hook eller ett programmatiskt förvillkor — kod som modellen inte kan prata sig runt.
# Distractor: "Add 'never refund more than $500' to the system prompt."
# Correct: deterministic enforcement outside the model.
def on_pre_tool_use(tool_name, tool_input):
if tool_name == "process_refund" and tool_input["amount"] > 500:
return {"block": True,
"reason": "Refunds over $500 require human approval."}
# precondition: identity must be verified first
if tool_name == "process_refund" and not customer_verified():
return {"block": True, "reason": "Verify customer identity first."}
return {"block": False}Röd flagga: Dålig verktygsdesign
Två distraktioner inom verktygsdesign dyker ständigt upp i frågor om scenario 4 och 8:
- "Förbättra urvalet genom att döpa om verktygen" — fel. Det är verktygens beskrivningar, inte namnen, som är den primära urvalsmekanismen.
- "Ge agenten alla 18 verktyg så att den aldrig saknar ett" — fel. 4–5 verktyg per agent är optimalt; 18 eller fler försämrar urvalets tillförlitlighet.
De korrekta svaren är att skriva utförliga beskrivningar (syfte, returvärden, indataformat med exempel, specialfall och begränsningar) och att avgränsa verktygen strikt efter rollen enligt principen om minsta behörighet.
# Correct: a description that actually drives selection.
lookup_order = {
"name": "lookup_order",
"description": (
"Retrieve a customer's order by order_id. "
"Returns status, line items, and total. "
"order_id format: 'ORD-' + 8 digits, e.g. 'ORD-10293847'. "
"Use AFTER get_customer verifies identity. "
"Returns an empty result (not an error) if no order matches."
),
"input_schema": {"type": "object",
"properties": {"order_id": {"type": "string"}},
"required": ["order_id"]},
}Röd flagga: Generiska fel och tyst undertryckning
I scenarier med flera agenter och extrahering ska du se upp för två felaktiga mönster:
- Att returnera
"Operation failed"— en generisk status som förhindrar intelligent återställning. - Att tysta ned ett fel eller avbryta hela arbetsflödet för att en underagent misslyckades.
Det korrekta svaret returnerar strukturerade fel: isError, errorCategory (transient/validation/business/permission), isRetryable, den försökte frågan och partiella resultat. Det skiljer också ett åtkomstfel (kan kanske försöka igen) från ett giltigt tomt resultat (inga träffar — försök inte igen).
# Distractor: return {"status": "Operation failed"}
# Correct: structured, routable error
error = {
"isError": True,
"errorCategory": "transient", # vs validation/business/permission
"isRetryable": True,
"message": "Upstream timeout from inventory service",
"attempted_query": "SELECT * FROM stock WHERE sku='A91'",
"partial_results": [{"sku": "A91", "warehouse": "EU"}],
}Röd flagga: Granskning i samma session och i ett enda pass
I scenarier som gäller kodgranskning och CI/CD (scenario 2 och 5) ska du stryka alla alternativ som granskar i samma session som genererade koden — upphovspersonen behåller sitt eget resonemang och kommer inte att ifrågasätta sig själv. En oberoende granskning i en ny instans är alltid starkare.
Stryk också granskning av flera filer i ett enda pass: det splittrar uppmärksamheten. Den korrekta metoden med flera pass gör först ett lokalt pass per fil och därefter ett separat integrationspass över filer.
# Distractor: same chat asks itself "now review what you wrote."
# Correct (CI/CD): isolated, non-interactive review session.
# claude -p "Review this diff for correctness bugs only." \
# --output-format json \
# --append-system-prompt "Flag an issue ONLY when code contradicts intent."
#
# Multi-pass: pass 1 per-file, pass 2 cross-file integration —
# never one single pass across all files at once.Röd flagga: Batch API för blockerande kontroller
Message Batches API är 50 % billigare och har ett tidsfönster på upp till 24 timmar — men det har ingen SLA för svarstid och stöder inte verktygsanrop i flera turer. Därför är alla alternativ som använder Batch för en pre-merge-grind, en synkron användarkontroll eller en agentisk verktygsloop distraktioner.
Batch är rätt endast för jobb som inte blockerar: nattliga granskningar och massrapporter. Om scenariot innehåller ord som "blockerande", "pre-merge", "realtid" eller "användaren väntar" — stryk Batch omedelbart.
# Correct use of Batch: overnight, non-blocking audit.
batch = client.messages.batches.create(requests=[
{"custom_id": "doc-001", # custom_id correlates each result
"params": {"model": "claude-sonnet-4-5", "max_tokens": 1024,
"messages": [{"role": "user", "content": audit_prompt(d)}]}}
for d in nightly_documents
])
# WRONG: using this for a pre-merge CI gate (no latency SLA, no tool loop).Röd flagga: Dålig eskalering och dåliga scheman
Två andra vanliga distraktioner:
- Eskalering som utlöses av sentimentanalys eller ett självskattat konfidensvärde från modellen (1–10). Det här är dåliga utlösare. Bra utlösare är en uttrycklig begäran från en människa, luckor i policyn, uteblivna framsteg efter försök och överträdelser av tröskelvärden.
- Att markera ett fält som kanske saknas med
requiredi ett JSON-schema. Modellen kommer att hitta på det. Kräv ett fält ENDAST om det alltid finns; använd enum-värden med "other" samt en fritextdetalj för utbyggbarhet.
Om ett alternativ eskalerar vid "arg ton" eller kräver "middle_name" — stryk det.
# Distractor schema: requires a field that's often missing.
# Correct: only truly-always-present fields are required.
schema = {
"type": "object",
"properties": {
"invoice_id": {"type": "string"},
"category": {"type": "string",
"enum": ["goods", "services", "other"]},
"category_detail": {"type": "string"}, # free-text, NOT required
"po_number": {"type": "string"}, # may be absent -> NOT required
},
"required": ["invoice_id", "category"],
}Elimineringsövningen
Sammanför detta till en återanvändbar process för varje fråga:
- 1. Läs scenariot för att hitta den verkliga begränsningen — pengar/juridik (kräver en hook), blockerande kontra nattligt (Batch eller inte), en eller flera filer (pass), fält som finns kontra saknas (required eller inte).
- 2. Sök igenom alla 4 alternativ efter varningssignaler för felaktiga mönster och stryk varje träff. Vanligtvis faller 2–3 bort.
- 3. Välj bland de återstående det alternativ som ger en deterministisk garanti där det spelar roll — strukturerat framför generiskt, modellstyrt stopp framför texttolkning, oberoende granskning framför självgranskning.
- 4. Svara alltid. Det finns inget avdrag för att gissa — lämna aldrig ett svar tomt, inte ens när det är helt jämnt.
Att känna igen felaktiga mönster är inte en genväg förbi förståelsen; det är så en erfaren arkitekt läser en fråga snabbt och korrekt.
Snabbtest
Tillämpa elimineringsövningen på ett verklighetstroget scenario i provstil.
Sammanfattning: Läs begränsningen, stryk det felaktiga mönstret
Viktiga slutsatser för att eliminera felaktiga svar:
- Distraktioner är vanligtvis förklädda felaktiga mönster. Memorera katalogen och behandla varje sådant mönster som en varningssignal.
- Stryk direkt: texttolkning för att stoppa, iterationsgränser som primärt stopp, prompter för kritiska regler, generiska eller undertryckta fel, för många verktyg, verktygsurval baserat på namn, granskning i ett enda pass och i samma session, Batch för blockerande kontroller, eskalering baserad på sentiment eller konfidens och krav på fält som kan saknas.
- Det rätta svaret prioriterar deterministiska garantier när insatserna är höga: hooks och förvillkor, strukturerade fel, modellstyrd avslutning vid
end_turn, oberoende granskning och utförliga verktygsbeskrivningar. - Svara alltid — inget avdrag för att gissa. Stryk två distraktioner så blir en ren gissning ett välgrundat val.
Känn igen fällan, så väljer det korrekta alternativet i praktiken sig självt.
Lär dig Python 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
- 26
- Lektioner
- 104
Vanliga frågor
Är lektionen ”Eliminera felaktiga svar” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Claude Architect, inklusive ”Eliminera felaktiga svar”, 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 Claude Architect innehåller totalt 4 lektioner.
Vad lär jag mig i ”Eliminera felaktiga svar”?
Antimönster är vanligtvis distraktorerna – lär dig känna igen dem. Ni övar på Claude Architect 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 Claude Architect?
Du behöver inga förkunskaper. Utbildningen i Claude Architect 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 3 av 4.
Hur lång tid tar lektionen ”Eliminera felaktiga svar”?
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 Claude Architect-lektionen?
Ja. Varje Claude Architect-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
- Så poängsätts scenariefrågor
- Läsa en scenarioprompt
- Eliminera felaktiga svar
- Genomgång av ett helt övningsprov