Del 3 av 8

Prompt Engineering — Grunderna

En välformulerad prompt är skillnaden mellan ett svar du kan använda och ett svar du måste skriva om. Lär dig anatomin bakom effektiva prompts.

Lektion 2 — V1 dag 2 Vi dissekerar promptens delar och tränar på att formulera frågor som ger förutsägbara, användbara svar — direkt i Copilot Chat.

Varför spelar prompt-formuleringen roll?

En LLM svarar på exakt det du frågar — inte vad du menar. Om din prompt är vag får du ett vagt svar. Om den är specifik, ger rätt kontext och anger önskat format får du ett svar du kan använda direkt.

I en Copilot Chat-kontext försvinner gamla konversationer när du stänger ner sessionen. Det innebär att varje ny chatt börjar från noll. Väl konstruerade prompts — och ännu bättre: sparade prompt-filer — kompenserar för detta.

Promptens fyra delar

DelVad den görExempel
Roll / kontext Talar om för AI vem den är och vilket sammanhang som gäller "Du är en senior C#-arkitekt med djup erfarenhet av DDD"
Uppgift Preciserar exakt vad du vill ha gjort "Granska följande klass och peka ut brott mot Single Responsibility Principle"
Kontext / data Ger AI:n den information den behöver för att svara rätt Bifogad kod, filnamn, projektstruktur, felmeddelande
Format / begränsningar Styr svarsformatet och sätter gränser "Svara med en numrerad lista. Max 5 punkter. På svenska."

Dålig vs. bra prompt — ett C#-exempel

Dålig prompt

DÅLIG PROMPT: Förbättra den här klassen.

AI:n vet inte vad "förbättra" innebär i ditt sammanhang — prestanda? läsbarhet? testbarhet? Den gissar och ger ett generellt svar som ofta inte matchar dina faktiska krav.

Bra prompt

BRA PROMPT: Du är en senior C#-utvecklare med fokus på Clean Architecture och DDD. Granska klassen nedan och identifiera: 1. Brott mot Single Responsibility Principle 2. Direkta beroenden som borde abstraheras bakom interface 3. Saknad felhantering på public-metoder Svara med en numrerad lista per kategori. Förklara varje punkt i max 2 meningar. Peka ut exakt rad eller metodnamn. Ge ett konkret förslag på hur man åtgärdar punkt 1. #file:OrderService.cs
Vad gjorde vi rätt?

Few-shot prompting

Few-shot innebär att du ger AI:n ett eller flera exempel på önskat format eller beteende innan du ber den lösa din uppgift. Det är särskilt effektivt för att styra kodstil och namnkonventioner.

FEW-SHOT EXEMPEL: Jag vill att du genererar C# Value Objects enligt detta mönster: Exempel 1 — EmailAddress: public sealed record EmailAddress { public string Value { get; } private EmailAddress(string value) => Value = value; public static Result<EmailAddress> Create(string raw) { ... } } Exempel 2 — Money: public sealed record Money { public decimal Amount { get; } public string Currency { get; } private Money(decimal amount, string currency) { ... } public static Result<Money> Create(decimal amount, string currency) { ... } } Skapa nu ett Value Object för PhoneNumber med samma mönster. Validera: E.164-format, inte null/tom. Returnera Result<PhoneNumber>.

Chain-of-thought för arkitekturproblem

Chain-of-thought (CoT) uppmanar AI:n att resonera steg-för-steg innan den svarar. Det är ovärderligt vid komplexa arkitekturvgledningar och passar utmärkt med Claude Sonnet 4.6 (extended thinking).

CHAIN-OF-THOUGHT PROMPT: Tänk steg för steg innan du svarar. Jag bygger ett e-handelssystem i C# med DDD. Jag behöver välja mellan: A) Publicera domänhändelser synkront via MediatR i samma transaktion B) Spara händelser i en outbox-tabell och processa asynkront Resonera kring: 1. Vilka garantier ger respektive alternativ? 2. Vad händer om applikationen kraschar mitt i scenariot? 3. Hur påverkar valet testbarheten? 4. Vilka trade-offs accepterar man med valt alternativ? Avsluta med en tydlig rekommendation och en mening om när det andra alternativet är att föredra.
När använder du CoT? Chain-of-thought är bäst när frågan har flera korrekta svar beroende på kontext, eller när du vill att AI:n ska väga alternativ. Det är inte nödvändigt för enkla kodgenereringsfrågor — det ökar bara svarstiden.

Tokenoptimering — vad tar plats?

Allt i kontextfönstret kostar tokens: din prompt, bifogade filer, konversationshistorik och modellens svar. Att optimera tokenanvändning handlar om att ge rätt information — inte mer.

VadUngefärlig tokenåtgångTips
En promptmening (40 tecken) ~10–15 tokens Var precis, inte verbose
En C#-metod (20 rader) ~150–200 tokens Bifoga bara relevanta metoder, inte hela filen
En hel C#-fil (200 rader) ~1 500–2 000 tokens Använd #file och låt Copilot välja ut vad den behöver
En .instructions.md (100 rader) ~700–1 000 tokens Håll instruktionsfiler fokuserade — de laddas automatiskt
Copilot-konversationshistorik (10 meddelanden) ~3 000–8 000 tokens Börja ny chatt för nya ämnen — gammal historia är sällan relevant

Vanliga misstag och hur du undviker dem

MisstagSymptomLösning
Vag uppgift Generellt svar som inte matchar ditt problem Specificera exakt vad du vill ha — verb + objekt + begränsning
Saknad kontext AI antar fel teknologistack eller mönster Ange alltid: språk, ramverk, arkitekturmönster, .NET-version
Klistra in för mycket kod Svar fokuserar på fel del av koden Bifoga med #file och ange vilket område du vill att AI:n tittar på
Ingen formatbegränsning Essäsvar när du ville ha en lista, eller vice versa Avsluta alltid prompten med önskat format ("svara som tabell / lista / kodexempel")
Fortsätta lång session AI tappar tråden, svar blir inkonsekvent Starta ny Copilot Chat-session för varje distinkt ämne

Prompts för research av ny teknik

En särskilt värdefull promptstruktur för research kombinerar din befintliga kunskapsram med det okända ämnet:

RESEARCH-PROMPTMALL: Jag är senior C#-utvecklare med djup erfarenhet av [KÄNT MÖNSTER/TEKNIK]. Förklara [NY TEKNIK/MÖNSTER] med hjälp av analogier till vad jag redan kan. Täck: 1. Kärnkonceptet — vad löser det och vad är grundmetaforen? 2. Hur det liknar respektive skiljer sig från [KÄNT MÖNSTER] 3. Tre konkreta trade-offs jag bör känna till innan jag väljer det 4. Ett minimalt C# .NET 8-kodexempel som visar det viktigaste konceptet 5. Vanligaste missförståndet bland C#-utvecklare som lär sig detta Svara på svenska.

Referenser

Elektroniska resurser

Böcker

Övningar

Lös övningarna självständigt. Det finns inget facit — lärandet sker i processen.

  1. Förbättra en dålig prompt
    Ta tre prompts du ställt till Copilot (eller ChatGPT) under den senaste månaden och som gav ett otillfredsställande svar. Omformulera dem med de fyra delarna: roll, uppgift, kontext och format. Jämför det nya svaret med det gamla. Dokumentera skillnaden.
  2. Few-shot för kodkonventioner
    Ta tre C#-klasser från ett befintligt projekt som representerar projektets kodstil. Använd dem som few-shot-exempel i en prompt och be Copilot generera en fjärde klass i samma stil. Bedöm: hur väl matchar resultatet stilmönstret? Vad saknas?
  3. Chain-of-thought på ett verkligt problem
    Välj ett arkitekturval du faktiskt ska göra (eller nyligen gjort) i ett C#-projekt. Formulera en chain-of-thought-prompt med minst tre alternativ att jämföra. Presentera resonemang och slutsats för en klasskamrat och diskutera om AI:n missat något.
  4. Promptmallsbibliotek
    Skapa en fil PROMPTS.md i ett projekt med minst fem återanvändbara promptmallar anpassade till ditt projekts teknologistack (C#, .NET version, arkitekturmönster). Mallarna ska ha platshållare ([VARIABEL]) för det som varierar mellan anropen.

Soloprojektor

Projekt 1 — Promptbibliotek för C#-arkitektur Bygg ett personligt promptbibliotek med minst åtta kategorier: (1) code review, (2) refaktorering, (3) research av ny teknik, (4) testgenerering, (5) ADR-skrivning, (6) namngivning, (7) felanalys, (8) dokumentation. Varje kategori ska ha minst en färdig prompt med rätt format. Biblioteket sparas som PROMPTS.md och versionshanteras i Git.
Projekt 2 — Promptoptimering med mätning (fördjupning) Välj en uppgift du gör regelbundet (t.ex. skriva enhetstester för en given klass). Mät: (a) tid utan AI, (b) tid med dålig prompt, (c) tid med optimerad prompt. Dokumentera resultaten och analysera var i prompt-iterationen den största vinsten uppstod.

← Föregående: LLM-modeller Nästa: Prompt-filer och Instructions-filer →