Vage og spesifikke ledetekster sammenlignet
Eksempler side om side som viser hvor stor forskjell spesifisitet gjør.
Vage og spesifikke ledetekster sammenlignet er en gratis leksjon i AI-prompt engineering på CoddyKit. Dette er leksjon 4 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AI-prompt engineering, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AI-prompt engineering inneholder totalt 4 leksjoner.
Metoden med sammenligning side ved side
Den raskeste måten å lære seg hva som kjennetegner gode prompter, er å studere konkrete omskrivinger side ved side og analysere hvorfor hver forbedring fungerer.
I denne leksjonen ser vi på fem vage prompter og deres konkrete omskrivinger. For hvert par identifiserer vi de nøyaktige endringene som er gjort, og mekanismen som gjør at hver forbedring leder modellen mot et bedre resultat.
Par 1: Blogginnlegget
Vagt: 'Skriv et blogginnlegg om fjernarbeid.'
Spesifikt: 'Skriv et blogginnlegg på 600 ord med tittelen «De tre vanene ved fjernarbeid som ødela produktiviteten min (og hva jeg gjør nå)» for en målgruppe av programvareutviklere på mellomnivå. Skriv i førsteperson med en samtalepreget tone. Struktur: 1 innledende avsnitt, 3 deler med H2-overskrifter og 1 avsluttende CTA for å laste ned en gratis mal.'
Hvorfor det fungerer: Legger til ordantall, tittel (og dermed en innfallsvinkel), målgruppe, stemme, tone, struktur og et spesifikt avsluttende element. Ingenting overlates til tilfeldighetene.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=800,
messages=[{
'role': 'user',
'content': (
'Write a 600-word blog post titled '
'"The 3 Remote Work Habits That Killed My Productivity (And What I Do Now)" '
'for an audience of mid-level software developers. '
'First-person voice, conversational tone. '
'Structure: 1-paragraph intro, 3 H2 sections (one per habit), '
'1 closing paragraph with a CTA to download a free productivity template.'
)
}]
)
print(response.content[0].text[:400], '...')Par 2: Kodegjennomgangen
Vagt: 'Gå gjennom koden min.'
Spesifikt: 'Gå gjennom følgende Python-funksjon. Fokuser bare på: 1) feil som påvirker korrektheten, 2) ubehandlede kanttilfeller. IKKE kommenter stil, navngiving eller formatering. Resultatformat: nummerert liste over problemer, der hvert problem inneholder: problembeskrivelse (1 setning), berørte linjer, foreslått løsning (kodeutdrag).'
Hvorfor det fungerer: Definerer omfanget av gjennomgangen (korrekthet og kanttilfeller), utelukker uttrykkelig andre dimensjoner (stil og navngiving) og angir en presis resultatstruktur med tre felt for hvert funn.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
code = (
'def get_user(users, user_id):\n'
' for user in users:\n'
' if user["id"] == user_id:\n'
' return user["name"]\n'
' return users[0]["name"]\n'
)
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
'Review the following Python function.\n'
'Focus ONLY on: 1) correctness bugs, 2) unhandled edge cases.\n'
'Do NOT comment on style, naming conventions, or formatting.\n'
'Output format: numbered list. Each item: issue (1 sentence), '
'affected line, suggested fix as a code snippet.\n\n'
+ code
)
}]
)
print(response.choices[0].message.content)Par 3: E-postens emnelinje
Vagt: 'Skriv emnelinjer til e-post for nyhetsbrevet mitt.'
Spesifikt: 'Skriv 10 emnelinjer til e-post for et ukentlig nyhetsbrev om Python for dataforskere. Hver emnelinje må være på under 50 tegn, ha en krok som øker åpningsraten (nysgjerrighetsgap, nummerert liste eller overraskende påstand) og unngå ord som utløser spamfiltre, som FREE eller URGENT. Presenter resultatet som en nummerert liste, og merk kroktypen i hakeparenteser.'
Hvorfor det fungerer: Spesifiserer antall, lengdebegrensning, krav til krok, utelatelsesliste og et merket resultatformat – og gjør en vag kreativ oppgave til en regelstyrt genereringsoppgave.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=400,
messages=[{
'role': 'user',
'content': (
'Write 10 email subject lines for a weekly newsletter '
'about Python tips for data scientists. '
'Requirements:\n'
'- Each under 50 characters\n'
'- Must use one of these hooks: [CURIOSITY GAP], [NUMBER], or [SURPRISING CLAIM]\n'
'- No spam words: FREE, URGENT, ACT NOW, LIMITED TIME\n'
'- Output as numbered list with hook type in brackets at the end of each line'
)
}]
)
print(response.content[0].text)Par 4: Møtesammendraget
Vagt: 'Oppsummer dette møtereferatet.'
Spesifikt: 'Oppsummer dette møtereferatet med følgende format: 1) Møtets formål (1 setning), 2) Viktige beslutninger (punktliste, maks. 5), 3) Oppgaver (tabell med kolonnene: Oppgave, Ansvarlig, Frist), 4) Åpne spørsmål (nummerert liste). Hvis det mangler informasjon for et felt, skriver du N/A. Ikke ta med meninger – bare fakta og forpliktelser.'
Hvorfor det fungerer: Gir en nøyaktig mal, angir begrensninger for hver del, definerer tabellstrukturen, angir en standard for manglende data og legger til en tonebegrensning (bare fakta).
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
transcript = (
'John: We need to decide on the launch date. '
'Sarah: I think Q3 works. We need the API done first. '
'John: Agreed. Sarah, can you own the API? '
'Sarah: Yes, I can have it by July 15th. '
'John: Great. Who handles marketing? '
'Mike: I will, but I need the feature list first. '
'John: We still need to confirm pricing — tabled for next week.'
)
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
'Summarize this meeting transcript in this exact format:\n'
'1. Meeting Purpose: (1 sentence)\n'
'2. Key Decisions: (bullet list, max 5)\n'
'3. Action Items: (markdown table: Task | Owner | Deadline)\n'
'4. Open Questions: (numbered list)\n'
'Missing info: write N/A. Facts only, no opinions.\n\n'
'Transcript:\n' + transcript
)
}]
)
print(response.choices[0].message.content)Par 5: Forklaringen
Vagt: 'Forklar maskinlæring.'
Spesifikt: 'Forklar maskinlæring i 3 avsnitt for en produktansvarlig i et helseforetak som forstår statistikk, men aldri har skrevet kode. Avsnitt 1: hva det er, og hvordan det skiller seg fra tradisjonell programmering. Avsnitt 2: et konkret eksempel fra helsesektoren (diagnostisering eller legemiddelutvikling). Avsnitt 3: én vanlig misforståelse som bør unngås. Maks. 200 ord totalt.'
Hvorfor det fungerer: Definerer strukturen (3 avsnitt med tildelte temaer), målgruppen (spesifikk rolle, fagområde og bakgrunn), innholdskravene for hvert avsnitt og en samlet ordgrense.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=350,
messages=[{
'role': 'user',
'content': (
'Explain machine learning in exactly 3 paragraphs. '
'Audience: a product manager at a healthcare company who understands statistics '
'but has never written code.\n'
'Paragraph 1: what ML is and how it differs from traditional programming.\n'
'Paragraph 2: a specific real-world healthcare example (diagnosis or drug discovery).\n'
'Paragraph 3: one common misconception non-technical people have about ML.\n'
'Max 200 words total. No bullet points — flowing prose only.'
)
}]
)
print(response.content[0].text)Anatomien i en god omskriving
Når vi ser på alle de fem parene, gjør alle effektive omskrivinger de samme tingene:
- Erstatter et vagt verb («skriv», «gå gjennom», «forklar») med en strukturert oppgave
- Angir resultatformatet (liste, tabell eller avsnitt med tildelt innhold)
- Legger til målbare begrensninger (ordantall, antall elementer eller tegnbegrensninger)
- Spesifiserer målgruppen (rolle, bakgrunn og kontekst)
- Legger til minst én regel for utelatelse (hva som skal utelates)
# Pattern extractor: identify improvements between two prompts
def analyze_improvement(vague, specific):
improvements = []
words = specific.lower()
if any(str(n) in words for n in range(10, 10000)):
improvements.append('Quantitative constraint added')
if 'do not' in words or 'exclude' in words or 'avoid' in words or 'no ' in words:
improvements.append('Negative constraint added')
if 'audience' in words or 'for a' in words or 'targeting' in words:
improvements.append('Audience specified')
if 'format:' in words or 'table' in words or 'list' in words or 'paragraph' in words:
improvements.append('Output format defined')
if 'example' in words or 'such as' in words or 'like:' in words:
improvements.append('Example provided')
print('Improvements detected:')
for i in improvements:
print(f' + {i}')
vague = 'Write a blog post about remote work.'
specific = 'Write a 600-word blog post for mid-level developers with 3 H2 sections and a closing CTA. No bullet points. Avoid generic productivity advice.'
analyze_improvement(vague, specific)Hva skjer når bare én dimensjon legges til
Det hjelper å legge til bare én forbedring – men delvis spesifisering etterlater fortsatt store hull. Sammenlign:
- 'Skriv et blogginnlegg om fjernarbeid' – ingen begrensninger
- 'Skriv et blogginnlegg på 600 ord om fjernarbeid' – bare lengden er angitt; innfallsvinkel, målgruppe og struktur er fortsatt vage
- 'Skriv et blogginnlegg på 600 ord om fjernarbeid for utviklere, med en samtalepreget tone' – lengde, målgruppe og tone er angitt; struktur, CTA og overskriftsstil er fortsatt vage
Hver dimensjon du lar være uspesifisert, er et lotteri. Legg til så mange som du har informasjon om.
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
# Progressively more specific prompts
prompts = [
'Write about Python.',
'Write a 200-word article about Python.',
'Write a 200-word article about Python for beginners who know no programming.',
(
'Write a 200-word article about Python for beginners who know no programming. '
'Start with a real-world analogy. Use 3 short paragraphs. '
'End with one actionable first step they can take today.'
)
]
for i, p in enumerate(prompts, 1):
print(f'Prompt {i} ({len(p)} chars): {p[:80]}...' if len(p) > 80 else f'Prompt {i}: {p}')
print()Slik bruker du teknikken med sammenligningspar i praksis
Teknikken med sammenligningspar er et effektivt feilsøkingsverktøy. Når du får et dårlig resultat:
- Lagre den vage prompten som ga det dårlige resultatet
- Identifiser den ene dimensjonen som forårsaket problemet
- Skriv en spesifikk omskriving som bare retter seg mot denne dimensjonen
- Kjør begge promptene og sammenlign resultatene
- Identifiser hva som fortsatt må rettes – og legg deretter til den neste begrensningen
Denne vitenskapelige fremgangsmåten lærer deg raskt hvilke begrensninger som betyr mest for ditt bruksområde.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
def compare_prompts(prompt_a, prompt_b, label_a='A', label_b='B'):
client_ref = anthropic.Anthropic(api_key='sk-ant-your-key-here')
for label, prompt in [(label_a, prompt_a), (label_b, prompt_b)]:
response = client_ref.messages.create(
model='claude-opus-4-5',
max_tokens=150,
messages=[{'role': 'user', 'content': prompt}]
)
print(f'=== {label} ===')
print(prompt)
print('--- OUTPUT ---')
print(response.content[0].text)
print()
compare_prompts(
prompt_a='Explain APIs.',
prompt_b='Explain APIs in 3 sentences for a non-technical startup founder. Analogy required.',
label_a='VAGUE',
label_b='SPECIFIC'
)Den to minutter lange promptgjennomgangen
Før du sender en viktig prompt, bør du gjennomføre denne to minutter lange gjennomgangen. Hvis svaret på et spørsmål er «nei», legger du til den manglende detaljen:
- Er formatet angitt? (liste / tabell / avsnitt / JSON)
- Er lengden spesifisert? (ordantall / antall elementer)
- Er målgruppen beskrevet? (rolle og bakgrunn)
- Er målet tydelig? (hva resultatet skal brukes til)
- Finnes det minst én utelatelse? (hva som skal utelates)
- Finnes det et eksempel eller en mal? (hvis stil er viktig)
def two_minute_audit(prompt):
score = 0
checks = {
'Format specified': any(w in prompt.lower() for w in
['list', 'table', 'paragraph', 'json', 'bullet', 'sentence', 'word']),
'Length given': any(c.isdigit() for c in prompt),
'Audience named': any(w in prompt.lower() for w in
['for a', 'audience', 'targeting', 'developer', 'manager', 'beginner']),
'Exclusion added': any(w in prompt.lower() for w in
['do not', 'avoid', 'exclude', 'no ', 'without', 'never']),
'Goal stated': any(w in prompt.lower() for w in
['goal', 'purpose', 'so that', 'in order to', 'will be used']),
}
print('Prompt Audit:')
for check, passed in checks.items():
icon = 'PASS' if passed else 'FAIL'
print(f' [{icon}] {check}')
if passed: score += 1
print(f'Score: {score}/{len(checks)}')
two_minute_audit(
'Write 5 bullet-point suggestions for improving user onboarding '
'for a B2B SaaS app targeting first-time non-technical users. '
'Avoid suggestions that require engineering work. Each bullet: max 25 words.'
)Bygg promptbiblioteket ditt
Hver gang du skriver en prompt som gir et utmerket resultat, bør du lagre den. Bygg et personlig promptbibliotek organisert etter oppgavetype.
En god oppføring i promptbiblioteket inneholder:
- Promptmalen med plassholdere som
[AUDIENCE]og[WORD_COUNT] - Bruksområdet den er laget for
- Modellen og innstillingene som ble brukt
- En merknad om hva som gjør den effektiv
Med tiden blir biblioteket den mest verdifulle ressursen din for AI-produktivitet.
# Example prompt library entry
prompt_library = {
'meeting_summary': {
'template': (
'Summarize the following meeting transcript in this format:\n'
'1. Purpose: (1 sentence)\n'
'2. Decisions: (bullet list, max 5)\n'
'3. Action Items: (table: Task | Owner | Deadline)\n'
'4. Open Questions: (numbered list)\n'
'Missing info: N/A. Facts only.\n\nTranscript:\n[TRANSCRIPT]'
),
'use_case': 'Post-meeting automation for Slack or Notion',
'model': 'claude-opus-4-5',
'temperature': 0,
'notes': 'Works best with verbatim transcripts, not paraphrased notes'
}
}
# Use the template
def run_meeting_summary(transcript):
template = prompt_library['meeting_summary']['template']
return template.replace('[TRANSCRIPT]', transcript)
print(run_meeting_summary('Alice: We decided to ship v2 next Friday...')[:200])Kunnskapssjekk
Når du ser på de fem sammenligningsparene i denne leksjonen, hvilken enkeltendring forbedret promptkvaliteten mest konsekvent i alle de fem eksemplene?
Vagt vs. spesifikt – oppsummering
De fem sammenligningsparene viser et tydelig mønster i hva som gjør omskrivinger av prompter effektive:
- Resultatstruktur gir størst effekt – definer den alltid
- Antall ord eller elementer eliminerer all forhandling om lengde
- Beskrivelse av målgruppen tilpasser automatisk terminologi og dybde
- Regler for utelatelse hindrer forutsigbart, generisk innhold
- Delvis spesifisering etterlater fortsatt hull – hver uspesifiserte dimensjon blir en gjetning
- Promptbiblioteker tar vare på vellykkede maler slik at de kan brukes på nytt
Lær deg AI-prompt engineering med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 53
- Leksjoner
- 199
Ofte stilte spørsmål
Er leksjonen «Vage og spesifikke ledetekster sammenlignet» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien AI-prompt engineering, inkludert «Vage og spesifikke ledetekster sammenlignet», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i AI-prompt engineering inneholder totalt 4 leksjoner.
Hva lærer jeg i «Vage og spesifikke ledetekster sammenlignet»?
Eksempler side om side som viser hvor stor forskjell spesifisitet gjør. Du øver på AI-prompt engineering med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med AI-prompt engineering?
Ingen tidligere erfaring er nødvendig. AI-prompt engineering på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.
Hvor lang tid tar leksjonen «Vage og spesifikke ledetekster sammenlignet»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne AI-prompt engineering-leksjonen?
Ja. Alle AI-prompt engineering-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Hvorfor spesifisitet er viktig
- Fjerne tvetydighet fra ledetekster
- Legge til konkrete detaljer
- Vage og spesifikke ledetekster sammenlignet