Uvod: Kodu nije briga za vaše vibracije
Evo u čemu je stvar s velikim jezičnim modelima i kodom: nevjerojatno su samouvjereni i potpuno ravnodušni prema tome hoće li se vaš program kompajlirati. Claude Haiku 4.5 će vam sretno napisati Python skriptu koja rješava vaš problem, plus dvije koje je izmislio iz zabave. Trik—jedini trik koji je bitan—je naučiti kako uputiti Claude Haiku 4.5 za točno generiranje koda na način koji ne ostavlja prostora za vibracije, a maksimalno prostora za istinu. Ne želite prozu koja zvuči kao kod. Želite kod koji se ponaša kao kod. Postoji razlika.
Ljudi se prema uputama odnose kao prema mističnim invokacijama—izgovorite prave riječi, dobijte savršenu aplikaciju. To je razmišljanje o kultu tereta. Kod je ugovor. Ako želite točnost od Claude Haiku, morate napisati ugovor. “Napravi web aplikaciju” nije ugovor. “Generiraj FastAPI endpoint u Pythonu 3.12 koji prihvaća JSON, validira shemu s Pydantic v2 i vraća 422 na pogreške sheme s određenim formatom payloada” je ugovor. Tako se upućuje Claude Haiku 4.5 za točno generiranje koda: definirate ugovor.
Što ovo jest (a što nije)
- To je vodič s uputama za dobivanje pouzdanog koda koji se može testirati od Claude Haiku 4.5.
- To nije propovijed o “AI koji zamjenjuje developere.” Alati ne zamjenjuju razmišljanje.
- Usredotočeno je na praktične upute, strukturu i zaštitne ograde: dosadne dijelove koji omogućuju da magija funkcionira.
Ako želite kod koji radi, morate Claudeu dati radnu definiciju “radi”. Ako želite točno generiranje koda, morate definirati točnost u jasnim, provjerljivim terminima. To je cijela igra.
Definirajte točnost kao odvjetnik, a ne kao pjesnik
“Točan” kod nije kod koji “izgleda vjerojatno”. Točnost je:
- Sintaktička valjanost: kompajlira se ili radi pod interpreterom.
- Semantička vjernost: radi ono što specifikacija kaže.
- Determinističko ponašanje: isti ulazi, isti izlazi, unutar definiranih granica pogreške.
- Ispravnost verzije: koristi prave SDK-ove, API verzije i značajke jezika.
Claude će vam dati ono što tražite. Ako tražite “funkciju koja sortira listu”, vjerojatno ćete je dobiti. Ako tražite “stabilno, in-place sortiranje koristeći Timsort semantiku s O(1) dodatnog prostora,” to je drugačije obećanje. “Kako uputiti Claude Haiku 4.5 za točno generiranje koda” počinje pisanjem tih obećanja u uputu.
Minimalna moguća uputa, nadograđena
Loše: “Napiši Node API za zadatke.”
Bolje: “Napiši Node 20 Express 4 API s /tasks POST rutom koja validira polja {title: string, dueDate: ISO 8601} i odgovara 201 s kreiranim objektom ili 400 s detaljima pogreške.”
Ispravno: “Generiraj Node 20 Express 4 server s jednim /tasks POST endpointom. Zahtjevi: 1) Validiraj body s [email protected]; 2) Polja: title (neprazan string, max 140), dueDate (ISO 8601 budući datum); 3) Uspješno: 201 s {id: ULID, title, dueDate}; 4) Neispravno: 400 s {error: 'VALIDATION', details: array}; 5) Bez baze podataka; in-memory Map; 6) Uključi Jest 29 test datoteku koja pokriva valjane, nevaljane (prazan title, prošli datum); 7) Osiguraj npm skripte za test i dev; 8) Koristi ESM; 9) Ne uključuj suvišne komentare.” Primijetite oblik: verzija jezika, biblioteke, ograničenja, izlazi, pogreške, testovi, pa čak i struktura paketa. Uklonili ste dvosmislenost. Claudeov posao je ispuniti kod, a ne zahtjeve.
Scaffolding Pattern: Sustav, Specifikacija, Testovi, Zatim Kod
Ako želite točno generiranje koda od Claude Haiku 4.5, morate mu dati pistu:
- Okvir sustava (kratka uzica)
- Vi: “Pišete TypeScript kvalitete za produkciju za Node 20. Ispišite samo blokove koda s nazivima datoteka i ništa drugo.”
- Zašto: Kontrolirate ton i format izlaza. Ne prepuštajte to slučaju.
- Uključite verzije jezika, odabire paketa, semantiku pogrešaka, I/O formate, ograničenja performansi i sigurnosna ograničenja.
- Recite Claudeu da prvo napiše unit testove. Testovi definiraju “točno” bolje od pridjeva. Ako linija koda ne služi testu, ukrasna je.
- Tek nakon testova. Da, ovo je u osnovi TDD, ali s robotom kojem nikad nije dosadno pisati boilerplate.
- Upute za ponovna pokretanja
- “Ako testovi ne uspiju ili se importi ne podudaraju, ažurirajte samo dijelove koji ne uspijevaju. Nemojte prepisivati cijeli projekt.”
Claude dobro radi kada ima kontekst i tračnice. Dajte mu tračnice.
Pinanje verzija nije opcionalno
Claudeovi podaci za obuku puni su starih i novih dokumenata. To je pristojan način da se kaže da je vidio mnogo proturječnih savjeta. “Koristite React Router” je nejasno. “Koristite [email protected] s data routerima” je smjer. Ne vjerujte zadanim postavkama: - Jezici: pinajte na Python 3.12, Node 20, Go 1.22, Java 21—što god zapravo pokrećete.
- Frameworkovi: specificirajte točne glavne verzije i sve zastavice koje mijenjaju promjene.
- Cloud SDK-ovi: pinajte verzije; aws-sdk v2 vs v3 je važno.
- Linteri/formateri: specificirajte pravila kako biste izbjegli “style ping-pong” prepisivanja.
Ako ne pinate, dobit ćete greatest-hits medley od pet godina blog postova. Točno generiranje koda alergično je na nostalgiju.
Shema prvo, uvijek
Ne tražite “strukture korisničkog profila”. Definirajte sheme u uputi i zahtijevajte validaciju:
- JSON Schema ili Zod/Yup tipovi u JS/TS
- Pydantic modeli u Pythonu
- Protobuf ili Avro za servise
Zatim natjerajte Claudea da primijeni sheme na granicama—API ulazi, pisanja u bazu podataka i redovi poruka. Tražite eksplicitne payloadove i kodove pogrešaka. Točnost voli sheme. Dvosmislenost ne voli.
Učinite to promatranim, ili se nemojte pretvarati da je stvarno
Recite Claudeu da doda logging, metrike i tragove gdje vam trebaju—i da ih drži tihima gdje ne trebaju. Dobra uputa uključuje:
- Politika zapisivanja: razine, redakcija PII, struktura (JSON logovi, molim)
- Metrike: vrijeme po zahtjevu, broj pogrešaka
- Health endpointi: /healthz koji dokazuje da su ovisnosti pokrenute
Claude će dodati ono što tražite. Ako ne tražite, dobit ćete print izjave—ako imate sreće.
Test-First upute pobjeđuju “Samo mi vjeruj”
Dobar način da uputite Claude Haiku 4.5 za točno generiranje koda je da testovi budu izvor istine. Primjer:
“Napišite pytest testove za funkciju normalize_email(s) koja:
- pretvara lokalni i domenski dio u mala slova;
- uklanja točke u lokalnom dijelu samo za gmail.com;
- uklanja podadrese (+tag) samo za gmail.com;
- odbija unose bez jedne @ ili s razmacima;
- zadržava unicode domenski punycode kakav jest.
Pokrijte rubne slučajeve. Nakon pisanja testova, implementirajte funkciju da ih prođe.”
Claude će često pisati bolji kod kada je prisiljen zadovoljiti testove koje ste opisali. Ako ne, imate konkretan neuspjeh, a ne argument o vibracijama.
Bez halucinacija po konstrukciji
Ne možete eliminirati halucinacije, ali ih možete ograditi:
- Tražite citate ili izvorne URL-ove samo kada izvori postoje. Za SDK metode, zahtijevajte doc linkove i zahtijevajte da se kod podudara s tim dokumentima.
- Za privatne API-je, zalijepite specifikaciju u uputu. Ne očekujte da Claude zna vaše interne endpointove.
- Za biblioteke sa zbunjujućim API-jima, uključite isječak primjera iz službenih dokumenata i recite Claudeu da ga se pridržava.
Točan kod je uglavnom točne reference. Dajte Claudeu reference.
Stilski vodiči: Najmanje seksi, najkorisnija stvar
Claude piše kod u kojem god stilu zaključi. To je recept za churn. Zalijepite svoj stilski vodič. Specificirajte:
- Formatiranje (Prettier, Black, gofmt default)
Također zahtijevajte kratki komentar s obrazloženjem za ne-očite odabire. Budući ćete vam zahvaliti, a trenutni Claude će proizvesti manje “popravnih” PR-ova.
Duge upute, kratki izlazi
Drugi način razmišljanja o tome kako uputiti Claude Haiku 4.5 za točno generiranje koda: potrošite svoje riječi na uputu, a ne na izlaz. Želite:
- Iscrpna ograničenja u uputi
- Minimalna suvišna naracija u izlazu
Recite mu da potisne objašnjenja i vrati samo blokove koda s nazivima datoteka i kratkim README-jem. Ako želite komentar, tražite ga u zasebnom pokretanju. Ispreplitanje proze i koda je način na koji se bugovi ušuljaju noseći monokl i cilindar.
Poboljšanje: Uski krug koji zapravo radi
Najbrži put do pouzdanog koda nije “dobiti ga odmah iz prvog pokušaja.” To su kratki, korektivni krugovi:
- Generirajte testove + kod.
- Pokrenite lokalno. Zalijepite izlaz testa koji ne uspijeva i pogreške kompajlera natrag u Claude doslovno.
- Uputa: “Izmijenite samo minimalni potrebni broj redaka; nemojte mijenjati potpise funkcija osim ako to zahtijevaju testovi koji ne uspijevaju.”
- Ponovite dok ne postane zeleno.
Claude je izvrstan u primjeni diffova kada mu točno kažete što se pokvarilo. Nemojte parafrazirati logove neuspjeha. Zalijepite ih. Logovi su istina.
Sigurnost je značajka, a ne postskriptum
Budući da su modeli obučeni na javnom kodu (dobrom, lošem i prokletom), želite da sigurnost bude prvoklasni zahtjev:
- Izričito zabranite eval, shell=True i SQL s jako upisanim nizovima
- Zahtijevajte parametrizirane upite, CSRF zaštitu i ograničavanje brzine
- Tražite pinanje ovisnosti plus lockfile
- Zahtijevajte rukovanje tajnama putem varijabli okruženja ili upravitelja tajnama
Sigurna prema zadanim postavkama uputa daje sigurniji kod. Uputa “zakrpat ćemo to kasnije” daje naslove.
Performanse: Recite što znači “Brzo”
“Učinite to brzim” prevodi se u “učinite što god”. Umjesto toga, specificirajte metrike:
- Ciljevi latencije (p95 < 50 ms za in-memory, p95 < 300 ms za DB operacije)
- Ograničenja memorije (RSS < 150 MB)
- Vremenska složenost (mora biti O(n log n), a ne O(n^2))
Claude će odabrati algoritme koji odgovaraju proračunu koji ste postavili. Dajte mu proračun.
Dokumentacija: Dovoljno za uvođenje stranca
Tražite od Claudea README koji uključuje:
- Upute za postavljanje s točnim verzijama
- Naredbe za test, lint, typecheck, run
- Primjeri zahtjeva/odgovora
- Ograničenja i poznati kompromisi
“Točan kod” uključuje točnu dokumentaciju. Oni su dio isporuke.
Konkretni predlošci uputa koje možete ukrasti
Predložak: Backend Endpoint
Sustav: Vi ste pedantan Python 3.12 inženjer. Ispišite samo blokove koda s nazivima datoteka.
Korisnik:
- Napravite FastAPI 0.111 aplikaciju s POST /convert endpointom.
- Zahtjev: {amount: Decimal kao string, from: 'USD'|'EUR', to: isto}.
- Validirajte s pydantic v2; vratite 422 oblik na pogreške sheme.
- Koristite čistu funkciju convert(amount, from, to) s fiksnim tečajevima {USD:1, EUR:1.1}.
- Vratite {amount: string, currency: string} s 200.
- Uključite pytest testove koji pokrivaju valjane, nevaljane (loš decimal, nepoznati kod) i rubne (0).
- Osigurajte pyproject.toml s pinanim ovisnostima; uključite ruff i mypy konfiguracije.
- Bez mrežnih poziva, bez komentara.
Predložak: CLI Utility
Sustav: Pišete Go 1.22. Ispišite samo blokove koda s nazivima datoteka.
Korisnik:
- Napravite CLI nazvan slugify koji čita stdin i ispisuje URL-sigurne slugove.
- Pravila: mala slova, samo ASCII, razdjelnici crticama, sažimanje razmaka, uklanjanje interpunkcije.
- Osigurajte main.go i slugify_test.go s tabličnim testovima.
- Koristite samo Go stdlib.
- Uključite Makefile s test i build ciljevima.
Predložak: Frontend Component
Sustav: Vi ste pragmatični React inženjer koji cilja React 18 + TypeScript.
Korisnik:
- Implementirajte <DebouncedInput> komponentu.
- Props: value: string, onChange(value): void, delay=300.
- Koristite useRef/useEffect; bez hookova treće strane.
- Uključite vitest testove s lažnim timerima.
- Osigurajte minimalnu Storybook priču.
Ovi predlošci demonstriraju kako uputiti Claude Haiku 4.5 za točno generiranje koda pinanjem verzija, definiranjem ponašanja i zahtijevanjem testova.
Odbijanje da budete pametni: Kada reći “Nemojte optimizirati”
Ako ne želite preuranjene mikro-optimizacije (a ne želite), recite to:
- “Preferirajte čitljivost nad pametnošću; bez bit-twiddlinga osim ako to testovi ne zahtijevaju.”
- “Bez rekurzije ako je iterativno jasnije.”
- “Bez metaprogramiranja; eksplicitno > implicitno.”
Claude voli impresionirati. Nemojte mu to dopustiti. Neka prođe testove i bude čitljiv. To je dovoljno impresivno.
Sider.AI u workflowu, gdje zapravo pomaže Vidio sam ljude kako žongliraju uputama u nasumičnim karticama za chat kao da je to ritual produktivnosti. Koristite radni prostor koji razumije kontekst koda. Sider.AI, na primjer, izgrađen je oko držanja vaše specifikacije, koda, diffova i logova testova na vidiku, tako da je krug “zalijepi pogrešku, popravi liniju” zapravo uski. To nije magija; to je dosadna skela koja vas sprječava da izgubite nit. Ako vaš alat drži ugovor, testove i kod u istom razgovoru—bez da vas gnjavi konfetima—koristite ga. Sider to radi. Kako otkloniti pogreške s Claudeom kao suigračem, a ne proročištem
- Zalijepite izlaz testa koji ne uspijeva točno onakav kakav jest. Nemojte sažimati.
- Tražite diff: “Odgovorite s unified diffom samo protiv datoteke X.”
- Za pogreške tijekom izvođenja, dodajte najmanji reproducibilni isječak i zahtijevajte objašnjenje plus zakrpu.
- Za pogreške biblioteke, zalijepite isječak dokumenta za koji mislite da se primjenjuje i pitajte: “Je li ovo ispravan API za verziju X? Ako nije, ažurirajte kod i citirajte ispravan isječak.”
Cilj je natjerati Claudea da se raspravlja s dokazima. Vi donosite dokaze.
Parada zamki (i kako ih izbjeći)
- Zamka “najnovijeg” API-ja: Nemojte reći “koristite najnovije”. Recite “koristite verziju X.Y” i držite se toga.
- Prazna test datoteka: Ako ne zahtijevate testove, nećete ih dobiti.
- Jednokratna zabluda: Planirajte dva ili tri kratka poboljšanja. To je brže od jedne napuhane upute.
- Dvosmislena politika pogrešaka: Definirajte kodove statusa i payloadove. “Vratite pogrešku” ne znači ništa.
- Neovlaštena ovisnost: Ako se kod oslanja na servis koji ne možete kontrolirati, stubirajte ga. Tražite lažne.
Vaš kontrolni popis uputa (zalijepite ovo blizu monitora)
- Verzija jezika i runtimea pinana
- Verzije biblioteka pinane
- Sheme podataka definirane
- Semantika pogrešaka definirana (kodovi, oblici)
- Sigurnosna ograničenja eksplicitna
- Navedeni proračuni performansi
- Specificiran stil i struktura
- Ograničen format izlaza (nazivi datoteka, blokovi koda, diffovi)
- Kratki krug poboljšanja s zalijepljenim logovima
Ako pogodite svih deset, Claude Haiku 4.5 općenito proizvodi točno generiranje koda koje preživi dnevno svjetlo.
Razrađen primjer: Od nejasnog do provjerenog
Nejasna uputa: “Napišite funkciju za sigurno parsiranje CSV-a.”
Rezultat: Vjerojatno u redu, moguće pogrešno, sigurno netestirano.
Precizna uputa:
“Pišete Python 3.12. Ispišite samo blokove koda s nazivima datoteka.
Napravite csvsafe/init.py i csvsafe/reader.py s funkcijom read_rows(path: Path) -> list[dict[str,str]]. Zahtjevi: koristite csv.DictReader s newline='' i encoding='utf-8'; zabranite null bajtove; odbijte datoteke >10MB; ograničite stupce na 100; uklonite BOM; tretirajte prazne ćelije kao prazne nizove; podignite ValueError s kodovima poruka {FILE_TOO_LARGE, NULL_BYTE, TOO_MANY_COLUMNS}. Uključite testove u tests/test_reader.py s pytest koji pokriva sretan put, null bajt, datoteku od 11MB, 101 stupac i rukovanje BOM-om. Osigurajte pyproject.toml s pinanim ovisnostima i black config.”
Dobit ćete kod, testove i rukovanje rubnim slučajevima. Zatim pokrenete testove, zalijepite neuspjehe i ponavljate s minimalnim diffovima. To je točno generiranje koda u praksi.
O “Kreativnosti” i drugim marketinškim riječima
Ne trebam “kreativan” kod. Trebam ispravan kod. Sačuvajte kreativnost za imenovanje svoje mačke. Kada upućujete Claudea, kreativnost je prirodni nusprodukt čvrstih ograničenja. Pravi testovi i jasne specifikacije proizvode elegantna rješenja. Pogrešna uputa proizvodi “reinvented base64 s emojijima.” Nemojte ga iskušavati.
Ne-tajna tajna
Način da uputite Claude Haiku 4.5 za točno generiranje koda je dosadan: zapišite što vam treba, pinajte verzije, definirajte sheme, zahtijevajte testove i ponavljajte sa stvarnim neuspjesima. To je to. Nema misticizma. Samo inženjerska disciplina, s modelom koji može tipkati vrlo brzo i ne smeta mu pisati petnaest gotovo identičnih testnih slučajeva.
I to je obrat: točnost je neglamurozna. Upute koje rade čitaju se kao TSA kontrolni popis. Kod koji se isporučuje čita se kao da ga je napisala osoba kojoj je stalo. Dobivate oboje tretirajući model kao mlađeg inženjera koji napreduje pod jasnim zahtjevima i vene pod nejasnim smjerom. Dajte mu ugovor. Neka prođe testove. Onda, možda, mu možete vjerovati—s vrstom povjerenja koju dajete alatu, a ne proroku.
Zaključak: Manje čarobnjaštva, više jamstva
Ako želite čarobnjaštvo, idite na mađioničarsku predstavu. Ako želite softver koji se kompajlira i ponaša, pišite upute koje funkcioniraju kao jamstva. Kako uputiti Claude Haiku 4.5 za točno generiranje koda ne radi se o cvjetnom fraziranju ili tajnim ključnim riječima. Radi se o ograničenjima, testovima, verzijama i povratnim petljama. Učinite te četiri stvari i dobit ćete kod koji radi. Preskočite ih i dobit ćete lijepo formatiranu fikciju.
Kodu nije briga za tvoje osjećaje. Srećom, ni testovima.
Često postavljana pitanja (FAQ)
P1: Koji je najjednostavniji način da se Claude Haiku 4.5 potakne na točno generiranje koda?
Tretirajte ga kao ugovor: fiksirajte verzije, definirajte sheme, specificirajte formate pogrešaka i prvo zahtijevajte testove. Što su jasnija ograničenja, točniji je i kod.
P2: Kako smanjiti halucinacije kada Claude piše kod?
Zalijepite vjerodostojnu dokumentaciju ili specifikacije i zahtijevajte strogo pridržavanje tih API-ja. Za privatne krajnje točke, uključite vlastitu specifikaciju – nemojte očekivati da će pogađati.
P3: Trebam li tražiti od Claudea da generira testove ili ih pisati sam?
Zatražite od Claudea da prvo generira testove, a zatim implementirajte kod koji će ih zadovoljiti. Testovi definiraju točnost bolje od pridjeva i održavaju model iskrenim.
P4: Koliko specifično bi trebalo biti fiksiranje verzija u upitima?
Vrlo specifično: runtime jezika, glavna/sporedna verzija frameworka i verzije SDK-ova. "Najnovija" poziva na sukobljene obrasce; točnost ovisi o stabilnim ciljevima.
P5: Gdje se Sider.AI uklapa u poticanje točnog koda?
Koristite Sider.AI da biste zadržali specifikacije, kod, razlike i zapise testova u jednoj petlji. Ne radi se o magiji – samo čuva kontekst tako da Claudeove ispravke prate vaše stvarne pogreške.