Introduktion: Koden bryr sig inte om dina vibbar
Grejen med stora språkmodeller och kod är att de är förvånansvärt självsäkra och fullständigt likgiltiga inför om ditt program kompileras eller inte. Claude Haiku 4.5 kommer gärna att skriva ett Python-skript som löser ditt problem, plus två till som den hittat på för skojs skull. Tricket – det enda tricket som spelar någon roll – är att lära sig hur man Claude Haiku 4.5 för korrekt kodgenerering på ett sätt som inte lämnar något utrymme för vibbar och maximalt utrymme för sanning. Du vill inte ha prosa som låter som kod. Du vill ha kod som beter sig som kod. Det är skillnad.
Folk behandlar prompting som en mystisk besvärjelse – säg rätt ord, få en perfekt app. Det är en slags vidskeplighet. Kod är ett kontrakt. Om du vill ha noggrannhet från Claude Haiku måste du skriva kontraktet. "Bygg en webbapp" är inte ett kontrakt. "Generera en FastAPI-slutpunkt i Python 3.12 som accepterar JSON, validerar schemat med Pydantic v2 och returnerar 422 vid schemafel med ett specifikt nyttolastformat" är ett kontrakt. Det är så du Claude Haiku 4.5 för korrekt kodgenerering: du spikar fast kontraktet.
Vad detta är (och inte är)
- Det är en praktisk guide för att få pålitlig, testbar kod från Claude Haiku 4.5.
- Det är inte en predikan om att "AI ersätter utvecklare." Verktyg ersätter inte tänkande.
- Det är fokuserat på praktiska , struktur och skyddsräcken: de tråkiga delarna som får magin att fungera.
Om du vill ha kod som körs måste du ge Claude en fungerande definition av "körs". Om du vill ha korrekt kodgenerering måste du definiera noggrannhet i tydliga, testbara termer. Det är hela grejen.
Definiera noggrannhet som en advokat, inte en poet
"Noggrann" kod är inte kod som "ser rimlig ut". Noggrannhet är:
- Syntaktisk validitet: den kompileras eller körs under tolken.
- Semantisk överensstämmelse: den gör vad specifikationen säger.
- Deterministiskt beteende: samma indata, samma utdata, inom definierade felgränser.
- Versionskorrekthet: den använder rätt SDK:er, API-versioner och språkfunktioner.
Claude kommer att ge dig vad du ber om. Om du ber om "en funktion som sorterar en lista" kommer du troligen att få en sådan. Om du ber om "en stabil, in-place sortering med Timsort-semantik med O(1) extra utrymme" är det ett annat löfte. "Hur man Claude Haiku 4.5 för korrekt kodgenerering" börjar med att skriva in dessa löften i .
The Minimum Viable Prompt, Uppgraderad
Dåligt: "Skriv ett Node API för uppgifter."
Bättre: "Skriv ett Node 20 Express 4 API med en /tasks POST-rutt som validerar fälten {title: string, dueDate: ISO 8601} och svarar 201 med det skapade objektet eller 400 med feldetaljer."
Korrekt: "Generera en Node 20 Express 4-server med en enda /tasks POST-slutpunkt. Krav: 1) Validera body med [email protected]; 2) Fält: title (icke-tom sträng, max 140), dueDate (ISO 8601 framtida datum); 3) Vid lyckad: 201 med {id: ULID, title, dueDate}; 4) Vid ogiltig: 400 med {error: 'VALIDATION', details: array}; 5) Ingen databas; in-memory Map; 6) Inkludera Jest 29 testfil som täcker giltiga, ogiltiga (tom titel, tidigare datum); 7) Tillhandahåll npm-skript för test och dev; 8) Använd ESM; 9) Inkludera inte irrelevant kommentar." Lägg märke till formen: språkversion, bibliotek, begränsningar, utdata, fel, tester och till och med paketstrukturen. Du har tagit bort tvetydighet. Claudes jobb är att fylla i koden, inte kraven.
The Scaffolding Pattern: System, Spec, Tests, Then Code
Om du vill ha korrekt kodgenerering från Claude Haiku 4.5 måste du ge den en startsträcka:
- System framing (det korta kopplet)
- Du: "Du skriver TypeScript av produktionskvalitet för Node 20. Mata endast ut kodblock med filnamn och inget annat."
- Varför: Du kontrollerar ton och utdataformat. Lämna det inte åt slumpen.
- Inkludera språkversioner, paketval, felsemantik, I/O-format, prestandagränser och säkerhetsbegränsningar.
- Säg till Claude att skriva enhetstester först. Tester definierar "noggrann" bättre än adjektiv. Om en kodrad inte tjänar ett test är den dekorativ.
- Först efter testerna. Ja, detta är i princip TDD, men med en robot som aldrig tröttnar på att skriva boilerplate.
- Instruktioner för omkörningar
- "Om tester misslyckas eller import inte matchar, uppdatera endast de felande delarna. Skriv inte om hela projektet."
Claude fungerar bra när den har kontext och räls. Ge den räls.
Versionspinning är inte valfritt
Claudes träningsdata är full av gamla och nya dokument. Det är ett artigt sätt att säga att den har sett många motstridiga råd. "Använd React Router" är vagt. "Använd [email protected] med dataroutrar" är en riktning. Lita inte på standardvärden: - Språk: fäst till Python 3.12, Node 20, Go 1.22, Java 21 – vad du än faktiskt kör.
- Ramverk: ange exakta huvudversioner och alla flaggor för brytande ändringar.
- Cloud SDK:er: fäst versioner; aws-sdk v2 vs v3 spelar roll.
- Linters/formatters: ange regler för att undvika "stil-ping-pong"-omskrivningar.
Om du inte fäster versioner får du en greatest-hits-medley från fem år av blogginlägg. Korrekt kodgenerering är allergisk mot nostalgi.
Schema First, Always
Be inte om "användarprofil"-strukturer. Definiera scheman i och kräv validering:
- JSON Schema eller Zod/Yup-typer i JS/TS
- Pydantic-modeller i Python
- Protobuf eller Avro för tjänster
Se sedan till att Claude tillämpar scheman vid gränserna – API-indata, databas skriver och meddelandeköer. Be om explicita fellaster och koder. Noggrannhet älskar scheman. Tvetydighet gör det inte.
Make It Observable, or Don’t Pretend It’s Real
Säg till Claude att lägga till loggning, mätvärden och spårningar där du behöver dem – och att hålla dem tysta där du inte gör det. En bra inkluderar:
- Loggningspolicy: nivåer, redigering av PII, struktur (JSON-loggar, tack)
- Mätvärden: tid per förfrågan, antal fel
- Hälso-slutpunkter: /healthz som bevisar att beroenden är uppe
Claude kommer att lägga till det du ber om. Om du inte frågar får du print-satser – om du har tur.
Test-First Prompts Beat “Just Trust Me”
Ett bra sätt att Claude Haiku 4.5 för korrekt kodgenerering är att göra tester till källan till sanning. Exempel:
"Skriv pytest-tester för en funktion normalize_email(s) som:
- gör lokala och domändelar till små bokstäver;
- tar bort punkter i den lokala delen endast för gmail.com;
- tar bort underadresser (+tag) endast för gmail.com;
- avvisar indata utan ett enda @ eller med mellanslag;
{- }behåller unicode domain punycode som det är.
Täck kantfall. Efter att ha skrivit tester, implementera funktionen för att klara dem."{
}Claude kommer ofta att skriva bättre kod när den tvingas uppfylla de tester du beskrev. Om den inte gör det har du ett konkret misslyckande, inte ett vibe-argument.
No Hallucinations by Construction
Du kan inte eliminera hallucinationer, men du kan hägna in dem:
- Be om citat eller käll-URL:er endast när källor finns. För SDK-metoder, kräv dokumentlänkar och kräv att koden matchar dessa dokument.
- För privata API:er, klistra in specifikationen i . Förvänta dig inte att Claude ska känna till dina interna slutpunkter.
- För bibliotek med förvirrande API:er, inkludera ett exempelutdrag från de officiella dokumenten och säg till Claude att följa det.
Korrekt kod är mestadels korrekta referenser. Ge Claude referenserna.
Style Guides: The Least Sexy, Most Useful Thing
Claude skriver kod i vilken stil den än drar slutsatser om. Det är ett recept för churn. Klistra in din stilguide. Ange:
- Formatering (Prettier, Black, gofmt default)
Kräv också en kort motiveringskommentar för icke-uppenbara val. Framtida du kommer att tacka dig, och nuvarande Claude kommer att producera färre "fix-up" PR:er.
Long Prompts, Short Outputs
Ett annat sätt att tänka på hur man Claude Haiku 4.5 för korrekt kodgenerering: spendera dina ord på , inte utdata. Du vill ha:
- Uttömmande begränsningar i
- Minimalt irrelevant berättande i utdata
Säg till den att undertrycka förklaringar och endast returnera kodblock med filnamn och en kort README. Om du vill ha kommentarer, be om det i en separat körning. Att varva prosa och kod är hur buggar smyger sig in med monokel och hög hatt.
Refinement: The Tight Loop That Actually Works
Den snabbaste vägen till pålitlig kod är inte "få det rätt första gången". Det är korta, korrigerande loopar:
- Kör lokalt. Klistra in misslyckade testutdata och kompileringsfel tillbaka till Claude ordagrant.
- Instruera: "Ändra endast de minsta nödvändiga raderna; ändra inte funktionssignaturer om det inte krävs av misslyckade tester."
- Upprepa tills det blir grönt.
Claude är utmärkt på att tillämpa diffar när du berättar exakt vad som gick sönder. Omformulera inte felloggar. Klistra in dem. Loggarna är sanningen.
Security Is a Feature, Not a Postscript
Eftersom modeller tränas på offentlig kod (bra, dålig och förbannad) vill du göra säkerhet till ett förstklassigt krav:
- Förbjud explicit eval, shell=True och stringly-typed SQL
- Kräv parametriserade frågor, CSRF-skydd och hastighetsbegränsning
- Be om versionspinning plus en lockfile
- Kräv hantering av hemligheter via miljövariabler eller en hemlighets hanterare
En säker-som-standard- ger säkrare kod. En "vi kommer att patcha det senare"- ger rubriker.
Performance: Say What “Fast” Means
"Gör det snabbt" översätts till "gör vad som helst." Ange istället mätvärden:
- Latensmål (p95 < 50 ms för in-memory, p95 < 300 ms för DB-åtgärder)
- Minnesgränser (RSS < 150 MB)
- Tidskomplexitet (måste vara O(n log n), inte O(n^2))
Claude kommer att välja algoritmer som passar den budget du anger. Ge den en budget.
Documentation: Enough to Onboard a Stranger
Be Claude om en README som inkluderar:
- Installationsanvisningar med exakta versioner
- Kommandon för test, lint, typecheck, run
- Exempelförfrågningar/svar
- Begränsningar och kända kompromisser
"Noggrann kod" inkluderar noggrann dokumentation. De är en del av leveransen.
Concrete Prompt Templates You Can Steal
Mall: Backend Endpoint
System: Du är en noggrann Python 3.12-ingenjör. Mata endast ut kodblock med filnamn.
Användare:
- Bygg en FastAPI 0.111-app med en POST /convert-slutpunkt.
- Begäran: {amount: Decimal as string, from: 'USD'|'EUR', to: same}.
- Validera med pydantic v2; returnera 422 form vid schemafel.
- Använd en ren funktion convert(amount, from, to) med fasta kurser {USD:1, EUR:1.1}.
- Returnera {amount: string, currency: string} med 200.
- Inkludera pytest-tester som täcker giltiga, ogiltiga (dålig decimal, okänd kod) och kant (0).
- Tillhandahåll pyproject.toml med beroenden fästa; inkludera ruff- och mypy-konfigurationer.
- Inga nätverksanrop, inga kommentarer.
Mall: CLI Utility
System: Du skriver Go 1.22. Mata endast ut kodblock med filnamn.
Användare:
- Skapa ett CLI med namnet slugify som läser stdin och skriver ut URL-säkra slugs.
- Regler: små bokstäver, endast ASCII, bindestreckseparatorer, kollapsa blanksteg, ta bort skiljetecken.
- Tillhandahåll main.go och slugify_test.go med tabeltester.
- Inkludera Makefile med test- och build-mål.
Mall: Frontend Component
System: Du är en pragmatisk React-ingenjör som riktar sig till React 18 + TypeScript.
Användare:
- Implementera en <DebouncedInput>-komponent.
- Props: value: string, onChange(value): void, delay=300.
- Använd useRef/useEffect; inga tredjepartskrokar.
- Inkludera vitest-tester med falska timers.
- Tillhandahåll minimal Storybook-berättelse.
Dessa mallar visar hur man Claude Haiku 4.5 för korrekt kodgenerering genom att fästa versioner, definiera beteende och kräva tester.
Refusing to Be Clever: When to Say “Don’t Optimize”
Om du inte vill ha för tidiga mikrooptimeringar (och det vill du inte), säg det:
- "Föredra läsbarhet framför smarthet; ingen bit-twiddling om inte testerna kräver det."
- "Ingen rekursion om iterativ är tydligare."
- "Ingen metaprogrammering; explicit > implicit."
Claude älskar att imponera. Låt den inte göra det. Få den att klara tester och vara läsbar. Det är imponerande nog.
{}Sider.AI{} i arbetsflödet, där det faktiskt hjälper Jag har sett folk jonglera i slumpmässiga chattflikar som om det vore en produktivitetsritual. Använd en arbetsyta som förstår kodkontext. {}Sider.AI{}, till exempel, är byggd kring att hålla din specifikation, kod, diffar och testloggar i sikte, så loopen "klistra in felet, fixa raden" är faktiskt tät. Det är inte magi; det är tråkig byggnadsställning som hindrar dig från att tappa bort handlingen. Om ditt verktyg håller kontraktet, testerna och koden i samma konversation – utan att tjata på dig med konfetti – använd det. Sider gör det. How to Debug With Claude as a Teammate, Not an Oracle
- Klistra in de misslyckade testutdata exakt som de är. Sammanfatta inte.
- Be om en diff: "Svara med enhetlig diff mot fil X endast."
- För runtime-buggar, lägg till det minsta reproducerbara utdraget och kräv en förklaring plus en patch.
- För biblioteksfel, klistra in det dokumentutdrag du tror gäller och fråga: "Är detta rätt API för version X? Om inte, uppdatera koden och citera rätt utdrag."
Målet är att få Claude att argumentera med bevis. Du tar med bevisen.
The Pitfall Parade (and How to Dodge It)
- Fällan med det "senaste" API:et: Säg inte "använd senaste". Säg "använd version X.Y" och håll dig till det.
- Den tomma testfilen: Om du inte kräver tester får du inga.
- Den enskotts-villfarelsen: Planera för två eller tre korta förfiningar. Det är snabbare än en uppblåst .
- Den tvetydiga felpolicyn: Definiera statuskoder och nyttolaster. "Returnera ett fel" betyder ingenting.
- Det oägda beroendet: Om koden förlitar sig på en tjänst du inte kan kontrollera, stubba den. Be om fejk.
Your Prompt Checklist (Tape This Near Your Monitor)
- Språk- och runtime-version fäst
- Biblioteksversioner fästa
- Felsemantik definierad (koder, former)
- Säkerhetsbegränsningar explicita
- Prestandabudgetar angivna
- Stil och struktur specificerade
- Utdataformat begränsat (filnamn, kodblock, diffar)
- Kort förfiningsloop med inklistrade loggar
Om du träffar alla tio producerar Claude Haiku 4.5 i allmänhet korrekt kodgenerering som överlever dagsljuset.
A Worked Example: From Vague to Verified
Vag : "Skriv en funktion för att parsa CSV säkert."
Resultat: Förmodligen okej, möjligen fel, säkert otestat.
Precise prompt:
{}"Du skriver Python 3.12. Mata endast ut kodblock med filnamn.
Skapa csvsafe/{}init{}.py och csvsafe/reader.py med en funktion read_rows(path: Path) -> list[dict[str,str]]. Krav: använd csv.DictReader med newline='' och encoding='utf-8'; förbjud null bytes; avvisa filer >10MB; begränsa kolumner till 100; ta bort BOM; behandla tomma celler som tomma strängar; höj ValueError med meddelandekoder {FILE_TOO_LARGE, NULL_BYTE, TOO_MANY_COLUMNS}. Inkludera tester i tests/test_reader.py med pytest som täcker happy path, null byte, 11MB fil, 101 kolumner och BOM-hantering. Tillhandahåll pyproject.toml med beroenden fästa och svart konfiguration."{
}Du får kod, tester och kanthantering. Sedan kör du tester, klistrar in fel och itererar med minimala diffar. Det är korrekt kodgenerering i praktiken.
On “Creativity” and Other Marketing Words
Jag behöver inte "kreativ" kod. Jag behöver korrekt kod. Spara kreativiteten för att namnge din katt. När du Claude är kreativitet den naturliga biprodukten av solida begränsningar. Rätt tester och tydliga specifikationer ger eleganta lösningar. Fel producerar "återuppfunnet base64 med emojis." Fresta den inte.
The Non-Secret Secret
Sättet att Claude Haiku 4.5 för korrekt kodgenerering är tråkigt: skriv ner vad du behöver, fäst versionerna, definiera scheman, kräv tester och iterera med faktiska misslyckanden. Det är allt. Ingen mysticism. Bara ingenjörsdisciplin, med en modell som kan skriva väldigt snabbt och inte har något emot att skriva femton nästan identiska testfall.
Och det är vändningen: noggrannhet är oglamoröst. De som fungerar läser som en TSA-checklista. Koden som levereras läser som om den var skriven av en människa som brydde sig. Du får båda genom att behandla modellen som en junioringenjör som trivs under tydliga krav och vissnar under vag vägledning. Ge den ett kontrakt. Få den att klara testerna. Då, kanske, kan du lita på den – med den typ av förtroende du ger ett verktyg, inte en profet.
Conclusion: Less Wizardry, More Warranty
Om du vill ha trolldom, gå till en trollerishow. Om du vill ha programvara som kompileras och beter sig, skriv som fungerar som garantier. Hur man Claude Haiku 4.5 för korrekt kodgenerering handlar inte om blommiga formuleringar eller hemliga nyckelord. Det handlar om begränsningar, tester, versioner och feedbackloopar. Gör dessa fyra saker, och du får kod som körs. Hoppa över dem, och du får vackert formaterad fiktion.
Koden bryr sig inte om dina vibbar. Som tur är gör inte testerna det heller.
FAQ
F1: Vad är det enklaste sättet att prompta Claude Haiku 4.5 för korrekt kodgenerering?
Behandla det som ett kontrakt: lås versioner, definiera scheman, specificera felformat och kräv tester först. Ju tydligare begränsningarna är, desto mer korrekt blir koden.
F2: Hur minskar jag hallucinationer när Claude skriver kod?
Klistra in auktoritativa dokument eller specifikationer och kräv att de exakta API:erna följs. För privata endpoints, inkludera din egen specifikation – förvänta dig inte att den ska gissa.
F3: Ska jag be Claude om tester eller skriva dem själv?
Be Claude att generera tester först och implementera sedan kod för att uppfylla dem. Tester definierar noggrannhet bättre än adjektiv och håller modellen ärlig.
F4: Hur specifik bör versionslåsningen vara i prompterna?
Mycket specifik: språkets runtime, framework major/minor och SDK-versioner. "Senaste" bjuder in till motstridiga mönster; noggrannheten beror på stabila mål.
F5: Var passar Sider.AI in i prompting för korrekt kod?
Använd Sider.AI för att hålla specifikationer, kod, diffs och testloggar i en och samma loop. Det gör ingen magi – det bevarar bara sammanhanget så att Claudes fixar spårar dina faktiska fel.