Ievads: kodam nav svarīgas jūsu izjūtas
Lielie valodas modeļi un kods ir pārliecināti un vienaldzīgi pret to, vai jūsu programma kompilējas. Claude Haiku 4.5 labprāt uzrakstīs Python skriptu, kas risinās jūsu problēmu, un vēl divas, kuras tas izgudro sporta pēc. Galvenais - vienīgā svarīgā prasība - ir iemācīties, kā uzdot pareizos prasījumus Claude Haiku 4.5, lai ģenerētu precīzu kodu bez jebkādām «vibes» un ar maksimālu patiesumu. Jums nevajag prozu, kas izklausās pēc koda. Jums vajag kodu, kas darbojas kā kods. Tāpat kā ir atšķirība.
Cilvēki uzskata, ka prasījumu uzdošana ir it kā maģisks burvestības incantācija — pateikt īsos pareizos vārdus un iegūt perfektu lietotni. Tā ir fantāzija. Kods ir līgums. Ja vēlaties precizitāti no Claude Haiku, jums ir jāuzraksta līgums. “Izveido tīmekļa lietotni” nav līgums. “Ģenerē FastAPI galapunktu Python 3.12, kas pieņem JSON, validē shēmu ar Pydantic v2 un atgriež 422 shēmas kļūdu gadījumā ar noteiktu atbildes formātu” ir līgums. Tā ir pareiza prasījuma uzdošana Claude Haiku 4.5 precīzam kodam: precīzi noformulēt līgumu.
Kas šis ir (un kas nav)
- Tas ir praktisks ceļvedis, kā iegūt uzticamu un pārbaudāmu kodu no Claude Haiku 4.5.
- Tas nav nekāda runa par “AI aizstās izstrādātājus.” Rīki neaizstāj domāšanu.
- Tas koncentrējas uz praktiskiem prasījumiem, struktūru un drošības pasākumiem — garlaicīgajām detaļām, kas padara visu darboties.
Ja vēlaties, lai kods darbotos, jums Claude jādefinē, kas nozīmē “darbosies.” Ja vēlaties precīzu kodu, nepieciešams skaidri un pārbaudāmi definēt precizitāti. Tas ir viss.
Definējiet precizitāti kā jurists, nevis dzejnieks
“Precīzs” kods nav “izskatās ticami” kods. Precizitāte nozīmē:
- Sintaktiska derīguma pārbaude: kods kompilējas vai darbojas interpretatorā.
- Semantiska atbilstība: kods dara to, ko paredz specifikācija.
- Deterministiska uzvedība: vienādi ievadi dod vienādus rezultātus, noteiktās kļūdu robežās.
- Versiju pareizība: tiek lietotas pareizās SDK, API versijas un valodas funkcijas.
Claude jums iedos to, ko lūgsiet. Ja prasāt “funkciju, kas šķiro sarakstu,” jūs, visticamāk, saņemsiet tieši to. Ja prasāt “stabilu, vietējā atmiņā veicamu šķirošanu ar Timsort semantiku un O(1) papildus vietu,” tā jau ir cita saistība. “Kā uzdot prasījumu Claude Haiku 4.5 precīzam kodam” sākas ar šo solījumu ierakstīšanu prasījumā.
Minimālais dzīvotspējīgais prasījums, uzlabots
Slikti: “Uzraksti Node API uzdevumiem.”
Labāk: “Uzraksti Node 20 Express 4 API ar /tasks POST maršrutu, kas validē laukus {title: string, dueDate: ISO 8601} un atbild 201 ar izveidoto objektu vai 400 ar kļūdu detaļām.”
Pareizi: “Ģenerē Node 20 Express 4 serveri ar vienu /tasks POST galapunktu. Prasības: 1) Validēt ķermeni ar [email protected]; 2) Lauki: title (nepustošs teksts, max 140), dueDate (ISO 8601 nākotnes datums); 3) Veiksmes gadījumā: 201 ar {id: ULID, title, dueDate}; 4) Kļūdas gadījumā: 400 ar {error: 'VALIDATION', details: array}; 5) Nav datubāzes; izmanto atmiņas Map; 6) Iekļauj Jest 29 testa failu ar validiem un nevalidiem gadījumiem (tukšs nosaukums, pagātnes datums); 7) Sniedz npm skriptus testēšanai un izstrādei; 8) Izmanto ESM; 9) Neiekļauj lieku komentāru.” Pievērsiet uzmanību struktūrai: valodas versija, bibliotēkas, ierobežojumi, izvadi, kļūdas, testi un pat pakotnes struktūra. Jūs esat novācis neskaidrības. Claude uzdevums ir aizpildīt kodu, ne prasības.
Balsta modelis: sistēma, specifikācija, testi, pēc tam kods
Lai saņemtu precīzu kodu no Claude Haiku 4.5, tam jādod starts:
- Sistēmas ietvars (īss pavads)
- Jūs: “Jūs rakstāt produkcijas kvalitātes TypeScript priekš Node 20. Izvadiet tikai koda blokus ar failu nosaukumiem, nekā cita.”
- Kāpēc: jūs kontrolējat toni un izvades formātu. Nelieciet to nejaušībai.
- Iekļaujiet valodas versijas, bibliotēku izvēli, kļūdu semantiku, I/O formātus, veiktspējas ierobežojumus un drošības prasības.
- Pasakiet Claude vispirms uzrakstīt vienību testus. Testi nosaka “precizitāti” labāk nekā īpašības vārdi. Ja koda rinda neveicina testa izpildi, tā ir dekoratīva.
- Tikai pēc testiem. Jā, tas būtībā ir TDD, bet ar robotu, kuram nekad nenāk garlaicīgi rakstīt vienkāršs uzdevumus.
- Instrukcijas atkārtotām reizēm
- “Ja testi neiziet vai importi nesakrīt, labojiet tikai cietušās daļas. Nelietojiet pārrakstīt visu projektu.”
Claude labi strādā ar kontekstu un ierobežojumiem. Dodiet tam tos.
Versiju fiksēšana nav izvēle
Claudē ir gan veci, gan jauni mācību dati. Citiem vārdiem sakot, viņš ir redzējis daudz pretrunīgas informācijas. “Izmanto React Router” ir neskaidri. “Izmanto [email protected] ar datu maršrutiem” ir skaidri. Neticiet noklusējumiem: - Valodas: fiksējiet uz Python 3.12, Node 20, Go 1.22, Java 21 — to, ko jūs tiešām lietojat.
- Ietvari: norādiet precīzas galvenās versijas un jebkādas izmaiņu karodziņus.
- Mākonis SDK: fiksējiet versijas; aws-sdk v2 pret v3 atšķiras.
- Kods vai formatētāji: precizējiet noteikumus, lai izvairītos no “stila atgriešanās.”
Ja neveicat fiksēšanu, iegūsiet labākā gadījuma izlasi no piecu gadu blogiem. Precīzam kodam šāda nostalģija nepatīk.
Shēma vispirms, vienmēr
Nelūdziet “lietotāja profila” struktūras. Definējiet shēmas prasījumā un pieprasiet validāciju:
- JSON Schema vai Zod/Yup tipiem JS/TS
- Protobuf vai Avro servisiem
Pēc tam lieciet Claude apstiprināt shēmas galapunktos — API ievados, datubāzes ierakstos, ziņojumu rindās. Pieprasiet skaidras kļūdu atbildes un kodus. Precizitāte mīl shēmas. Neskaidrība ir ienaidnieks.
Padariet to novērojamu, vai nemēģiniet to simulēt kā īstu
Lūdziet Claude pievienot žurnālu, metriku un izsekošanu, kur nepieciešams — un saglabāt klusumu, kur nevajag. Labs prasījums ietver:
- Žurnālu politika: līmeņi, PII anonimizācija, struktūra (vēlamie JSON žurnāli)
- Metrika: laiks pieprasījumam, kļūdu skaits
- Veselības galapunkti: /healthz, kas apliecina atkarību pieejamību
Claude pievienos to, ko lūgsiet. Ja nelūgsiet, varat saņemt tikai vienkāršas drukas komandas — ja paveicas.
Testi vispirms pārspēj “Vienkārši uzticies man”
Labs veids, kā uzdot prasījumu Claude Haiku 4.5 precīzam kodam, ir padarīt testus par patiesības avotu. Piemērs:
“Uzraksti pytest testus funkcijai normalize_email(s), kas:
- pārvērš lokālo un domēna daļu uz mazajiem burtiem;
- noņem punktus lokālajā daļā tikai gmail.com;
- noņem apakšadreses (+tag) tikai gmail.com;
- atsakās no ievades, ja nav viena @ vai ir atstarpes;
- patur Unicode domēna punykodu kā ir.
Testē galējības. Pēc testu uzrakstīšanas izpildi funkciju, lai tie izietu.”
Claude bieži uzraksta labāku kodu, ja to liek izpildīt jūsu aprakstītos testus. Ja nē — jums ir konkrēts kļūmes pierādījums, nevis sajūtu strīds.
Bez halucinācijām pēc konstrukcijas
Jūs nevarat pilnīgi novērst halucinācijas, bet varat tās ierobežot:
- Pieprasiet atsauces vai avotu URL tikai tad, ja tie pastāv. SDK metodēm prasiet dokumentācijas saites un kodu, kas atbilst dokumentācijai.
- Privātajām API ielieciet specifikāciju prasījumā. Neuzticieties, ka Claude zinās jūsu iekšējos galapunktus.
- Bibliotēkām ar neskaidru API iekļaujiet piemēra fragmentu no oficiālās dokumentācijas un pasakiet, lai tās tiek ievērotas.
Precīzs kods nozīmē precīzas atsauces. Dodiet Claude atsauces.
Stila vadlīnijas: mazāk seksīgas, visnoderīgākās lietas
Claude raksta kodu pēc tā stila, ko viņš nojaust. Tas rada nekārtību. Ielīmējiet savu stila ceļvedi. Norādiet:
- Formatēšana (Prettier, Black, gofmt noklusējums)
Pieprasiet īsu pamatojuma komentāru neskaidrām izvēlēm. Nākotnes jūs būs pateicīgs un esošais Claude radīs mazāk “priekšlikumu labošanai.”
Garas prasības, īsi iznākumi
Vēl viens veids, kā domāt par to, kā uzdot prasījumu Claude Haiku 4.5 precīzam kodam: izšķērdējiet vārdus prasījumam, nevis izvadam. Jūs vēlaties:
- Prasībā izsmeļošus ierobežojumus
- Minimālu lieku skaidrojumu izvadā
Pasakiet apklusināt paskaidrojumus un atgriezt tikai koda blokus ar failu nosaukumiem un īsu README. Ja gribat komentārus, pieprasiet tos atsevišķi. Prozas un koda sajaukšana ir kā kļūdu maskēšana ar monocle un cilindru.
Uzlabojumi: īsa cilpa, kas patiesi strādā
Ātrākais ceļš uz uzticamu kodu nav “uztaisīt pirmo reizi pareizi.” Tas ir īsas labojumu cilpas:
- Palaist lokāli. Ielīmēt Claude pilnu kļūdu un testa rezultātu tekstu.
- Instruktēt: “Mainīt tikai nepieciešamās rindiņas; nemaini funkciju parakstus, ja testi to neprasa.”
- Atkārtot līdz zaļajam statusam.
Claude ir izcils, strādājot ar difu, kad tieši norādāt, kas salūza. Neparafrazējiet kļūdu žurnālus. Ielīmējiet tos. Tie ir patiesība.
Drošība ir funkcija, nevis pēctexts
Tā kā modeļi apmācīti no publiskā koda (laba, slikta un lāstēta), drošība jāpadara par pirmklasīgu prasību:
- Izslēgt eval, shell=True un tekstveida SQL
- Pieprasīt parametrizētus vaicājumus, CSRF aizsardzību, un ātruma ierobežošanu
- Pieprasīt atkarību fiksēšanu un bloķēšanas failu
- Prasīt slepeno datu apstrādi caur vidi vai slepeno pārvaldnieku
Drošs pēc noklusējuma prasījums sniedz drošāku kodu. “Mēs to salabosim vēlāk” prasījums beigsies ar sensācijām ziņās.
Veiktspēja: noteikt, ko nozīmē “ātrs”
“Padari to ātru” nozīmē “dariet kaut ko.” Tā vietā norādiet metriku:
- Aizkaves mērķi (p95 < 50ms atmiņā, p95 < 300ms datubāzes operācijām)
- Atmiņas ierobežojumi (RSS <150MB)
- Laika sarežģītība (jābūt O(n log n), ne O(n^2))
Claude izvēlēsies algoritmus, kas atbilst jūsu budžetam. Dodiet to.
Dokumentācija: pietiekama, lai iepazīstinātu svešinieku
Lūdziet Claude README ar:
- Uzstādīšanas instrukcijas ar precīzām versijām
- Komandas testiem, lintēšanai, tipa pārbaudei, palaišanai
- Piemēri pieprasījumiem un atbildēm
- Ierobežojumi un zināmie kompromisi
“Precīzs kods” ietver arī precīzu dokumentāciju. Tā ir daļa no piegādes.
Konkrētas prasību veidnes, ko varat pārņemt
Veidne: backend galapunkts
Sistēma: Jūs esat precīzs Python 3.12 inženieris. Izvadiet tikai koda blokus ar failu nosaukumiem.
Lietotājs:
- Izveidojiet FastAPI 0.111 lietotni ar POST /convert galapunktu.
- Pieprasījums: {amount: Decimal kā string, from: 'USD'|'EUR', to: tāds pats}.
- Validējiet ar pydantic v2; atgrieziet 422 formu shēmas kļūdu gadījumā.
- Izmantojiet tīru funkciju convert(amount, from, to) ar fiksētiem kursiem {USD:1, EUR:1.1}.
- Atgrieziet {amount: string, currency: string} ar 200 statusu.
- Iekļaujiet pytest testus ar validiem, nevalidiem (slikts decimālais, nezināma kodēšana) un galējības (0).
- Sniedziet pyproject.toml ar fiksētām atkarībām; iekļaujiet ruff un mypy konfigurācijas.
- Bez tīkla zvaniem, bez komentāriem.
Veidne: CLI rīks
Sistēma: Jūs rakstāt Go 1.22. Izvadiet tikai koda blokus ar failu nosaukumiem.
Lietotājs:
- Izveidojiet CLI rīku slugify, kas lasa no stdin un izdrukā URL drošus bezpeļņas vārdus.
- Prasības: mazie burti, tikai ASCII, domuzīmes kā atdalītāji, sapludināt atstarpes, noņemt pieturzīmes.
- Sniedziet main.go un slugify_test.go ar tabulas testiem.
- Izmantojiet tikai Go standarta bibliotēku.
- Iekļaujiet Makefile ar testu un būves mērķiem.
Veidne: frontend komponents
Sistēma: Jūs esat praktisks React inženieris ar React 18 + TypeScript.
Lietotājs:
- Izveidojiet <DebouncedInput> komponenti.
- Prop nosacījumi: value: string, onChange(value): void, delay=300.
- Izmantojiet useRef/useEffect; bez trešās puses hookiem.
- Iekļaujiet vitest testus ar mākslīgiem taimeriem.
- Sniedziet minimālu Storybook stāstu.
Šīs veidnes demonstrē, kā uzdot prasījumu Claude Haiku 4.5 precīzam kodam, fiksējot versijas, definējot uzvedību un pieprasot testus.
Nevēlēšanās būt pārāk gudram: kad teikt “neoptimizēt”
Ja nevēlaties pāragras mikrooptimizācijas (un negribat to), pasakiet:
- “Dodiet priekšroku lasāmībai pār viltību; nē bitu manipulācijām, ja testi to neprasa.”
- “Nē rekursijai, ja iteratīvs risinājums ir skaidrāks.”
- “Nē metaprogrammēšanai; skaidrs pār netiešu.”
Claude grib pārsteigt. Neliedziet tam. Ļaujiet tam iziet testus un būt lasāmam. Tas jau ir pietiekami pārsteidzoši.
Sider.AI darba plūsmā, kur tas patiesi palīdz Es esmu redzējis cilvēkus, kas izmanto nejaušas tērzēšanas cilnes kā produktivitātes rituālu. Izmantojiet vidi, kas saprot koda kontekstu. Piemēram, Sider.AI ir veidots tā, lai jūs vienlaicīgi redzētu specifikāciju, kodu, atšķirības un testu žurnālus, tādējādi cilpa “ielīmē kļūdu, salabo rindiņu” ir cieša. Tas nav maģija; tas ir garlaicīgs balsts, kas novērš jūs no orientēšanas zuduma. Ja jūsu rīks glabā līgumu, testus un kodu tajā pašā sarunā — bez aizkaitinājuma ar konfetiem — izmantojiet to. Sider to dara. Kā atkļūdot ar Claude kā komandas biedru, nevis orākulu
- Ielīmējiet precīzi tā, kā ir, neveiksmīgo testu izvadi. Nesakārtojiet to.
- Pieprasiet diff: “Atbildiet ar apvienotu difu tikai pret failu X.”
- Palaides kļūdām pievienojiet vismazāko reproducējamo koda fragmentu un prasiet paskaidrojumu plus labojumu.
- Bibliotēku kļūdām ielīmējiet dokumentācijas fragmentu, ko domājat piemērojamo, un jautājiet: “Vai šī ir pareizā API versijai X? Ja ne, atjaunojiet kodu un atsaucieties uz pareizo fragmentu.”
Mērķis ir likt Claude argumentēt ar pierādījumiem. Jūs nesat pierādījumus.
Bīstamu situāciju parāde (un kā tās izvairīties)
- “Jaunākā” API slazds: Nesakiet “izmantojiet jaunāko.” Sakiet “izmantojiet versiju X.Y” un pieturieties pie tā.
- Tukšs testa fails: ja neprasāt testus, tos nesaņemsiet.
- Viens mēģinājums maldība: plānojiet divus vai trīs īsus uzlabojumus. Tas ir ātrāk nekā viens garš prasījums.
- Neprecizēta kļūdu politika: definējiet statusa kodus un atbildes formu. “Atgriezt kļūdu” neko nenozīmē.
- Nepiederīga atkarība: ja kods balstās uz jūsu nekontrolētu servisu, aizstājiet to ar stabu. Pieprasiet viltus datus.
Jūsu prasību saraksts (pielīmējiet pie monitora)
- Fiksēta valoda un izpildlaika versija
- Fiksētas bibliotēku versijas
- Definēta kļūdu semantika (kodi, formas)
- Vispirms testi, pēc tam kods
- Skatāmas drošības prasības
- Norādīti veiktspējas budžeti
- Norādīts stils un struktūra
- Ierobežots izvades formāts (failu nosaukumi, koda bloki, difi)
- Īsas labošanas cilpas ar ielīmētiem žurnāliem
Ja izpildāt visus desmit, Claude Haiku 4.5 parasti ģenerē precīzu kodu, kas darbojas arī reālās situācijās.
Strādājošs piemērs: no neskaidra līdz pārbaudītam
Neskaidrs prasījums: “Uzraksti funkciju, kas droši parsē CSV.”
Rezultāts: varētu būt kārtībā, iespējams nepareizi, noteikti netestēti.
Precīzs prasījums:
“Jūs rakstāt Python 3.12. Izvadiet tikai koda blokus ar failu nosaukumiem.
Izveidojiet csvsafe/init.py un csvsafe/reader.py ar funkciju read_rows(path: Path) -> list[dict[str,str]]. Prasības: izmantojiet csv.DictReader ar newline='' un encoding='utf-8'; aizliegts null baitus; noraidīt failus >10MB; ierobežot kolonnu skaitu līdz 100; noņemt BOM; tukšas šūnas tvert kā tukšas virknes; izmest ValueError ar ziņojumu kodiem {FILE_TOO_LARGE, NULL_BYTE, TOO_MANY_COLUMNS}. Iekļaut testus tests/test_reader.py ar pytest, kas pārbauda laimīgas situācijas, null baitus, 11MB failu, 101 kolonnu un BOM apstrādi. Sniedziet pyproject.toml ar fiksētām atkarībām un black konfigurāciju.”
Jūs saņemsiet kodu, testus un galējību apstrādi. Pēc tam palaižat testus, ielīmējat kļūdas un iterējat ar minimāliem difiem. Tas ir precīzs koda ģenerēšanas process praksē.
Par “radošumu” un citiem mārketinga terminiem
Man nevajag “radošu” kodu. Man vajag pareizu kodu. Radošumu atstājiet kaķa vārdam. Prasījumi ar stingriem ierobežojumiem dabiski rada radošumu. Pareizie testi un skaidras specifikācijas rada elegantus risinājumus. Nepareizs prasījums rada “atjaunotu base64 ar emocijzīmēm.” Nepārbaudiet Claude.
Ne tik slepens noslēpums
Veids, kā uzdot prasījumu Claude Haiku 4.5 precīzam kodam, ir garlaicīgs: pierakstiet, kas vajadzīgs, fiksējiet versijas, definējiet shēmas, pieprasiet testus un iterējiet ar realām kļūdām. Tas arī viss. Nav maģijas. Tikai inženieru disciplīna ar modeli, kas var ļoti ātri rakstīt un neiebilst rakstīt gandrīz identiskus testus piecpadsmit reizes.
Un tas ir ķīselis: precizitāte nav krāšņa. Tie prasījumi, kas strādā, izskatās pēc starptautiskās drošības pārbaudes saraksta. Kods, kas tiek piegādāts, izskatās kā cilvēka darbs, kas rūpējās. Jūs iegūstat abas puses, attiecinot modeli kā jaunāko izstrādātāju, kurš uzplaukst, saņemot skaidrus norādījumus un pacietībā kustom gadījumos. Dodiet tam līgumu. Lieciet iziet testus. Tad varbūt to var uzticēties — tādā uzticībā, kādu dāvina rīkam, ne pravietim.
Secinājums: mazāk burvestību, vairāk garantijas
Ja gribat burvestību, dodieties uz burvju šovu. Ja gribat programmatūru, kas kompilējas un darbojas, rakstiet prasījumus kā garantijas. Kā uzdot prasījumu Claude Haiku 4.5 precīzam kodam nav par ziedainu frāžu vai slepenām atslēgvārdām lietošanu. Tas ir par ierobežojumiem, testiem, versijām un atgriezeniskās saites cikliem. Dariet šīs četras lietas, un iegūsiet kodu, kas darbojas. Ja tās izlaidīsiet, iegūsiet skaisti formatētu daiļliteratūru.
Kods nerūpējas par jūsu noskaņojumu. Par laimi, testi arī ne.
BUJ
J1: Kā vienkāršākā veidā ieprogrammēt Claude Haiku 4.5 precīzai koda ģenerēšanai?
Apstrādājiet to kā līgumu: norādiet versijas, definējiet shēmas, precizējiet kļūdu formātus un pieprasiet vispirms testus. Jo skaidrāki ierobežojumi, jo precīzāks kods.
J2: Kā samazināt halucinācijas, kad Claude raksta kodu?
Ievietojiet autoritatīvus dokumentus vai specifikācijas un pieprasiet precīzu šo API ievērošanu. Privātām saskarnēm iekļaujiet pašu specifikāciju — negaidiet, ka Claude to uzminēs.
J3: Vai man pašam jāraksta testi vai jālūdz to Claude?
Vispirms lūdziet Claude ģenerēt testus, pēc tam izstrādājiet kodu, lai tos apmierinātu. Testi precizitāti nosaka labāk nekā īpašības vārdi un uztur modeli godīgu.
J4: Cik precīzi jānorāda versijas piesaiste promptos?
Ļoti precīzi: programmēšanas valodas izpildlaiks, ietvara lielā/mazāka versija un SDK versijas. “Latest” var radīt konfliktiem pilnus modeļus; precizitāte ir atkarīga no stabilām versijām.
J5: Kā Sider.AI iederas precīzu tekstu ģenerēšanas procesā?
Izmantojiet Sider.AI, lai glabātu specifikācijas, kodu, izmaiņas un testu žurnālus vienā ciklā. Tas neveic brīnumus — tas tikai saglabā kontekstu, lai Claude labojumi atbilstu jūsu faktiskajām kļūdām.