Mønstre for selvkritik og revision
Prompting af modeller til at evaluere og omskrive deres eget output ud fra en konstitution.
Mønstre for selvkritik og revision er en gratis Promptteknik til AI-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Promptteknik til AI, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Promptteknik til AI-kurset indeholder 4 lektioner i alt.
Selvkritik som promptteknik
Selv uden en formel CAI-træningsproces kan du bede enhver kompetent LLM om at gennemgå og forbedre sine egne resultater. Dette mønster med selvkritik forbedrer kvaliteten markant i opgaver, hvor nøjagtighed, fuldstændighed eller sikkerhed er vigtig.
Den centrale indsigt er, at modeller har mere viden, end de viser i første gennemløb. En kritikprompt får denne viden frem.
Grundlæggende mønster for nøjagtighedskritik
Den enkleste form for selvkritik er at bede modellen gennemgå sit svar for faktuel korrekthed og rette eventuelle fejl.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
def generate_and_self_critique(question):
# Step 1: Generate
r1 = client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': question}]
)
initial = r1.content[0].text
# Step 2: Accuracy critique
critique_prompt = (
f'Question: {question}\n\n'
f'Your previous answer: {initial}\n\n'
'Review your previous answer for factual accuracy. '
'Identify any errors, unsupported claims, or missing important nuances. '
'Then provide a corrected, improved answer.'
)
r2 = client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': critique_prompt}]
)
return r2.content[0].text
result = generate_and_self_critique('What caused the fall of the Roman Empire?')
print(result[:300])Mønster for fuldstændighedstjek
Ved en fuldstændighedskritik skal modellen kontrollere, at dens svar besvarer alle dele af spørgsmålet fuldt ud. Det er især nyttigt til spørgsmål i flere dele, hvor svar i første gennemløb ofte overser underspørgsmål.
COMPLETENESS_CRITIQUE = (
'Original question: {question}\n\n'
'Your previous answer: {answer}\n\n'
'Check if your answer fully addresses the question:\n'
'1. List each part or sub-question in the original question.\n'
'2. For each part, indicate whether your answer addressed it.\n'
'3. If any parts were missed or incomplete, provide a revised answer '
'that covers everything.'
)
def check_completeness(question, initial_answer, client):
prompt = COMPLETENESS_CRITIQUE.format(
question=question,
answer=initial_answer
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=600,
messages=[{'role': 'user', 'content': prompt}]
)
return response.content[0].textMønster for kritik af skade og sikkerhed
En kritik af potentielle skader beder modellen gennemgå sit svar for mulige negative konsekvenser, før det vises til brugerne. Dette er kernen i at anvende CAI-principper i produktion.
HARM_CRITIQUE_PROMPT = (
'Review the following assistant response for potential harms:\n\n'
'User message: {user_message}\n'
'Assistant response: {response}\n\n'
'Consider:\n'
'- Could this response enable harmful actions?\n'
'- Could it be misused by someone with bad intentions?\n'
'- Does it respect the privacy and dignity of individuals?\n'
'- Could it cause psychological harm to vulnerable users?\n\n'
'If the response has issues, explain them and provide a revised '
'version that addresses the concerns while still being helpful. '
'If the response is fine, say "Response is appropriate" and quote it back.'
)
def safety_check(user_message, response, client):
prompt = HARM_CRITIQUE_PROMPT.format(
user_message=user_message,
response=response
)
result = client.messages.create(
model='claude-opus-4-5',
max_tokens=600,
messages=[{'role': 'user', 'content': prompt}]
)
return result.content[0].textKritik ud fra flere kriterier
For resultater med stor betydning kan du gennemgå dem ud fra flere kriterier i én enkelt gennemgang ved at angive kriterierne udtrykkeligt. Det er mere effektivt end separate kritik-kald for hvert kriterium.
MULTI_CRITERIA_CRITIQUE = (
'Evaluate this response on three criteria:\n\n'
'Question: {question}\n'
'Response: {response}\n\n'
'Criteria:\n'
'1. ACCURACY: Are all facts correct and claims well-supported?\n'
'2. COMPLETENESS: Does it fully address the question?\n'
'3. CLARITY: Is it easy to understand for the target audience?\n\n'
'For each criterion, rate it Good/Fair/Poor and explain why.\n'
'Then provide an improved response that scores Good on all three.'
)
def multi_criteria_check(question, response, client):
prompt = MULTI_CRITERIA_CRITIQUE.format(
question=question,
response=response
)
result = client.messages.create(
model='claude-opus-4-5',
max_tokens=800,
messages=[{'role': 'user', 'content': prompt}]
)
return result.content[0].textBedste praksis for revisionsprocessen
Revisionsprompten bør gøre tre ting:
- Minde modellen om den oprindelige anmodning (konteksten)
- Præsentere resultaterne af gennemgangen
- Bede om et revideret svar, der imødekommer problemerne
Bed ikke modellen om at forklare kritikken igen under revisionen — bed den bare rette det. En handlingsorienteret revisionsprompt giver bedre resultater.
# Good revision prompt: action-oriented
GOOD_REVISION = (
'Given this critique of your response, please write an improved version.\n\n'
'Original question: {question}\n'
'Critique: {critique}\n\n'
'Write only the improved response — no preamble, no meta-commentary:'
)
# Bad revision prompt: too passive
BAD_REVISION = (
'Here is a critique of your response. Can you maybe consider '
'revising it somewhat based on the feedback below?\n'
'Critique: {critique}'
# Missing original question context!
# Wishy-washy language reduces revision quality
)Kædning af flere revisionsrunder
Én runde med gennemgang og revision er ofte ikke nok til meget komplekse kvalitetskrav. Du kan kæde flere runder sammen, hvor hver runde anvender et andet princip eller kontrollerer resterende problemer.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
def multi_round_revision(question, n_rounds=2):
# Round 0: Initial generation
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': question}]
).content[0].text
principles = [
'factual accuracy and avoiding unsupported claims',
'completeness — ensuring all parts of the question are answered',
]
for i, principle in enumerate(principles[:n_rounds]):
critique_prompt = (
f'Question: {question}\n'
f'Current response: {response}\n\n'
f'Critique for {principle} and provide an improved version:'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': critique_prompt}]
).content[0].text
print(f'Round {i+1} complete')
return responseSelvkritik til kodegenerering
Selvkritik er især effektiv til kodegenerering. Modellen skriver først kode og gennemgår den derefter for fejl, kanttilfælde og sikkerhedsproblemer — og opdager ofte fejl, som den overså første gang.
CODE_CRITIQUE_PROMPT = (
'Review this Python code for correctness and security issues:\n\n'
'Task: {task}\n\n'
'Code:\n'
''''python\n'
'{code}\n'
''''\n\n'
'Check for:\n'
'1. Logic errors or off-by-one mistakes\n'
'2. Unhandled edge cases (empty input, None, division by zero)\n'
'3. Security issues (SQL injection, path traversal, etc.)\n\n'
'If issues exist, list them and provide a corrected version. '
'If the code is correct, say so and explain why it handles edge cases properly.'
)
def critique_code(task, code, client):
prompt = CODE_CRITIQUE_PROMPT.format(task=task, code=code)
result = client.messages.create(
model='claude-opus-4-5',
max_tokens=800,
messages=[{'role': 'user', 'content': prompt}]
)
return result.content[0].textSelvkonsistens som alternativ
Selvkonsistens er en anden tilgang: Generér det samme svar N gange, og foretag derefter en flertalsafgørelse, eller bed modellen sammenfatte det bedste svar ud fra flere udkast.
Brug selvkonsistens til spørgsmål med tydeligt korrekte svar. Brug gennemgang og revision, når kvaliteten har flere dimensioner (nøjagtighed + tone + sikkerhed).
import anthropic
from collections import Counter
client = anthropic.Anthropic(api_key='sk-ant-...')
def self_consistency(question, n=5):
"""Generate N responses and pick the most common answer."""
responses = []
for _ in range(n):
r = client.messages.create(
model='claude-haiku-4-5',
max_tokens=100,
temperature=0.7,
messages=[{'role': 'user', 'content': question}]
)
responses.append(r.content[0].text.strip())
# Pick most common answer
vote = Counter(responses)
winner, count = vote.most_common(1)[0]
print(f'Consensus ({count}/{n}): {winner}')
return winner
result = self_consistency('What is the sum of angles in a triangle?')Når kritik skader: Risikoen ved overdreven kritik
Selvkritik er ikke altid en fordel. Hold øje med disse fejltilstande:
- Smiskende kritik: Modellen siger, at dens svar er fremragende, selv når det er forkert
- Overforsigtighed: Modellen fjerner nyttige oplysninger under revisionen, fordi de virker risikable
- Hallucinerede rettelser: Revisionen introducerer nye fejl, som ikke fandtes i det oprindelige svar
Afhjælp det ved at bruge en anden model til kritikken, forankre kritikker i konkrete fakta og validere reviderede resultater mod kendte korrekte svar.
Måling af kritikkens effektivitet
Følg, om kritikken faktisk forbedrer resultaterne, ved at sammenligne de første og de reviderede svar med en guldstandard. Det viser dig, om de ekstra LLM-kald er omkostningen værd.
def measure_critique_lift(examples, generate_fn, critique_fn, metric_fn):
"""
Measure how much critique improves accuracy over initial generation.
"""
initial_scores = []
revised_scores = []
for ex in examples:
initial = generate_fn(ex.question)
revised = critique_fn(ex.question, initial)
initial_scores.append(metric_fn(ex.answer, initial))
revised_scores.append(metric_fn(ex.answer, revised))
avg_initial = sum(initial_scores) / len(initial_scores)
avg_revised = sum(revised_scores) / len(revised_scores)
print(f'Initial: {avg_initial:.1%}')
print(f'Revised: {avg_revised:.1%}')
print(f'Lift: +{avg_revised - avg_initial:.1%}')
return avg_revised - avg_initialVidenstjek: Tidspunkt for selvkritik
Hvilket mønster er mest velegnet til at fange faktuelle fejl i et svar, før det vises til brugerne?
Opsamling: Mønstre for selvkritik og revision
Selvkritikprompter beder modellen om at gennemgå sit eget resultat ud fra specifikke kriterier — nøjagtighed, fuldstændighed, sikkerhed eller klarhed — og derefter udarbejde en forbedret version. Effektive mønstre omfatter kritik af nøjagtighed (gennemgå for faktuelle fejl), fuldstændighedstjek (har du besvaret alle dele?), kritik af mulig skade (kan dette muliggøre skadelige handlinger?) og kodegennemgang (tjek for fejl og kanttilfælde). Kør flere runder for resultater med høj risiko. Mål den faktiske forbedring for at bekræfte, at de ekstra omkostninger er berettigede.
Lær Promptteknik til AI med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 53
- Lektioner
- 199
Ofte stillede spørgsmål
Er lektionen “Mønstre for selvkritik og revision” gratis?
Ja — alle 3 lektioner i læringssporet Promptteknik til AI, inklusive “Mønstre for selvkritik og revision”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Promptteknik til AI-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Mønstre for selvkritik og revision”?
Prompting af modeller til at evaluere og omskrive deres eget output ud fra en konstitution. Du øver dig i Promptteknik til AI med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Promptteknik til AI?
Der kræves ingen tidligere erfaring. Promptteknik til AI på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Mønstre for selvkritik og revision”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Promptteknik til AI-lektion?
Ja. Alle Promptteknik til AI-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- CAI-principper og kritikprompts
- Mønstre for selvkritik og revision
- Spændingen mellem ufarlighed og hjælpsomhed
- Implementering af CAI i applikationer