Įvadas: Kodui nesvarbūs tavo jausmai
Didieji kalbos modeliai ir kodas turi vieną keistą savybę: jie yra nepaprastai užtikrinti savimi ir visiškai abejingi, ar tavo programa kompiliuojasi. Claude Haiku 4.5 mielai parašys Python skriptą, kuris išspręs tavo problemą, o dar pridės dvi pačios sugalvotas papildomai. Svarbiausias triukas – vienintelis, kuris tikrai svarbus – yra išmokti, kaip tinkamai formuluoti užklausą Claude Haiku 4.5, kad sukurtas kodas būtų tikslus, nepaliekant jokios erdvės užuominoms ar interpretacijoms, bet suteikiant daug aiškumo ir tiesos. Tau nereikia prozos, kuri skambėtų kaip kodas. Tau reikia kodo, kuris elgtųsi kaip kodas. Tai du skirtingi dalykai.
Žmonės kartais laiko užklausų rašymą tarsi mistinę formulę – pasakyk teisingus žodžius, ir gausi tobulą programą. Tai prietaras. Kodas yra sutartis. Jei nori gauti tikslius rezultatus iš Claude Haiku, turi aiškiai suformuluoti sutartį. „Parašyk internetinę programėlę“ nėra sutartis. „Sugeneruok FastAPI endpointą Python 3.12, kuris priima JSON, patikrina schemą naudojant Pydantic v2 ir grąžina 422 klaidos būseną su tam tikra klaidos struktūra“ jau yra sutartis. Taip formuluojamos užklausos Claude Haiku 4.5, kad gautum tikslius kodus – reikia įvardyti ir apibrėžti sutartį.
Kas tai yra (ir kas nėra)
- Tai praktiškas gidas, kaip iš Claude Haiku 4.5 gauti patikimą ir testuojamą kodą.
- Tai ne pamokslas apie „dirbtinį intelektą, kuris pakeis programuotojus“. Įrankiai nepakeičia mąstymo.
- Dėmesys orientuotas į praktines užklausas, struktūrą ir taisykles – varginančias, bet būtinas detales, kurios leidžia magijai veikt.
Jei nori, kad kodas veiktų, turi Claude pateikti veiksnių apibrėžimą, ką reiškia „veikia“. Jei nori tikslumo, turi tiksliai apibrėžti, ką reiškia „tikslumas“ aiškia, testuojama kalba. Tai visa žaidimo esmė.
Apibrėžk Tikslumą Kaip Teisininkas, Ne Poetas
„Tikslus“ kodas nėra tas, kuris „atrodo įtikinamai“. Tikslumas reiškia:
- Sintaksės teisingumas: kodas kompiliuojasi arba veikia interpretuojant.
- Semantinė atitiktis: kodas atlieka tai, ką nurodo specifikacija.
- Deterministinis elgesys: tie patys įėjimai duoda tuos pačius rezultatus per nustatytas paklaidų ribas.
- Versijos teisingumas: naudojamos tinkamos SDK, API versijos ir kalbos ypatybės.
Claude duos tau tai, ko paprašysi. Jei paprašysi „funkcijos, kuri rūšiuoja sąrašą“, greičiausiai ją gausi. Jei paprašysi „stabilios, vietoje veikiančios rūšiavimo funkcijos su Timsort semantika ir O(1) papildoma atmintimi“, tai jau kokybiškai kita sutartis. „Kaip pateikti užklausą Claude Haiku 4.5 tiksliai kodo generacijai“ prasideda nuo tokių pažadų įtraukties į užklausą.
Minimumo Užklausa, Patobulinta
Blogai: „Parašyk Node API užduotims.“
Geriau: „Parašyk Node 20 Express 4 API su /tasks POST maršrutu, kuris tikrina laukus {title: string, dueDate: ISO 8601} ir grąžina 201 su sukurta objekto informacija arba 400 su klaidų detalėmis.“
Tiksliai: „Sukurk Node 20 Express 4 serverį su vienu /tasks POST endpointu. Reikalavimai: 1) Validuoti body su [email protected]; 2) Laukai: title (ne tuščias stringas, max 140 simbolių), dueDate (ISO 8601 ateities data); 3) Sėkmės atveju: 201 su {id: ULID, title, dueDate}; 4) Klaidos atveju: 400 su {error: 'VALIDATION', details: masyvas}; 5) Nenaudoti duomenų bazės; laikyti duomenis atminties Map; 6) Pridėti Jest 29 testų failą validžiams ir invalidžiams (tuščias title, praeities data); 7) Pateikti npm testų ir dev skriptus; 8) Naudoti ESM; 9) Nerašyti nereikalingų komentarų.“ Atkreipk dėmesį į užklausos struktūrą: kalbos versija, bibliotekos, apribojimai, išėjimai, klaidos, testai, net projekto struktūra. Tai pašalina neaiškumus. Claude darbas – užpildyti kodą, o ne reikalavimus.
Šablono Modelis: Sistema, Specifikacija, Testai, Tada Kodas
Jei nori tikslaus kodo iš Claude Haiku 4.5, suteik jam aiškią kryptį:
- Sistemos rėmai (trumpas pavadėlis)
- Tu: „Tu rašai gamybos kokybės TypeScript Node 20 versijai. Rezultate pateik tik kodo blokus su failų pavadinimais ir nieko daugiau.“
- Kodėl: Tu kontroliuoji toną ir išėjimo formatą. Neužleisk šito sėkmei.
- Nurodyk kalbos versijas, bibliotekų pasirinkimus, klaidų tvarkymą, įėjimo/išėjimo formatus, našumo ribas ir saugumo apribojimus.
- Prašyk Claude pirmiau parašyti vienetinius testus. Testai tiksliau apibrėžia „tikslumą“. Jei eilutė nekreipiama į testų sėkmę – ji tik dekoracija.
- Tik po testų. Taip, tai praktiškai TDD, bet su robotu, kuris nesikankina rašydamas boilerplate.
- „Jeigu testai nepraeina arba yra importų neatitikimų, pataisyk tik klaidą lemiančias vietas. Nekurk viso projekto iš naujo.“
Claude gerai veikia, kai turi kontekstą ir ribas. Duok jam jas.
Versijų Fiksavimas – Privalomas
Claude mokymosi duomenys yra pilni ir senų, ir naujų dokumentacijų, tai elegantiškas būdas pasakyti, kad jis matė daug prieštaringos informacijos. „Naudok React Router“ – abstraktu. „Naudok [email protected] su data routers“ – tiksliau. Neužtikėk numatytais parametrais: - Kalbos: fiksuok Python 3.12, Node 20, Go 1.22, Java 21 – ką tu tikrai naudoji.
- Frameworkai: nurodyk tikslias pagrindines versijas ir visus lūžius galinčius keisti flagus.
- Debesų SDK: fiksuok versijas; aws-sdk v2 ir v3 yra skirtingi.
- Linters/formateriai: nurodyk taisykles, kad išvengtum nuolatinio „stiliaus ping-pong“.
Jei neužfiksuosi versijų, gausi „didžiausius hitus“ iš penkerių metų tinklaraščių. Tikslus kodas nemėgsta nostalgijos.
Schema Pirmiausia, Visada
Neklausk dėl „vartotojo profilio“ struktūrų. Apibrėžk schemas užklausoje ir reikalauk validacijos:
- JSON Schema ar Zod/Yup tipai JS/TS
- Protobuf arba Avro servisams
Tada liepk Claude privalyti schemas ribose – API įėjimuose, duomenų bazės įrašymuose ir žinučių eilėse. Prašyk aiškiai apibrėžtų klaidų kodų ir atsakymų formos. Tikslumas myli schemas. Neaiškumas ne.
Padaryk, Kad Būtų Stebima, Arba Nesigūdyk Kad Tai Tikra
Prašyk Claude pridėti žurnalavimą, metrikas ir sekančias funkcijas ten, kur jų reikia – ir tylėti ten, kur nereikia. Geros užklausos elementai:
- Žurnalavimo politika: lygiai, PII slėpimas, struktūra (geriausia JSON formatu)
- Metrikos: užklausos trukmė, klaidų skaičius
- Sveikatos endpointai: /healthz patvirtinantys, kad priklausomybės veikia
Claude pridės tai, ko paprašysi. Jei nepaprašysi, gali gauti įprastus print išvedimus – jei pasiseks.
Testų Pirmumas Įveikia „Tiesiog Patikėk Manim“
Geras būdas pateikti užklausą Claude Haiku 4.5 tiksliam kodui yra laikyti testus tiesos šaltiniu. Pavyzdys:
„Parašyk pytest testus funkcijai normalize_email(s), kuri:
- paverčia į mažąsias vietinę ir domeno dalis;
- pašalina taškus vietinėje dalyje tik gmail.com;
- pašalina subadresavimą (+tag) tik gmail.com;
- neneša įvesties be vienintelio @ arba su tarpais;
- palieka unicode domeno punykodą. Apimk kraštutinius atvejus. Po testų rašymo įgyvendink funkciją taip, kad praeitų testus.”
Claude dažnai rašo geresnį kodą, kai jį verčia tenkinti aprašytus testus. Jei nepraeina, turi konkretų klaidos atvejį, o ne ginčą dėl nuotaikos.
Be Hallucinacijų Konstruojant
Negali visiškai panaikinti hallucinacijų, bet gali jas suvaržyti:
- Prašyk cituoti arba pateikti šaltinių URL tik jei jie egzistuoja. SDK metodams reikalauk dokumentacijos nuorodų ir reikalauk, kad kodas atitiktų tuos dokumentus.
- Privatiems API įklijuok specifikaciją į užklausą. Nesižadėk, kad Claude žinos tavo vidinius endpointus.
- Bibliotekoms su painiomis API pridėk oficialių dokumentų pavyzdžio fragmentą ir liepk Claude jo laikytis.
Tikslus kodas daugiausia yra tikslūs šaltiniai. Duok Claude šiuos šaltinius.
Stiliaus Vadovai: Mažiau Seksualu, Bet Labai Naudinga
Claude rašo kodą stiliumi, kurį įtaria. Tai sukelia chaotiškumą. Įklijuok savo stiliaus gaires. Nurodyk:
- Formatavimą (Prettier, Black, gofmt numatytasis)
Taip pat reikalauk trumpų paaiškinimų dėl neaiškių sprendimų. Ateitis ačiū tave, o dabarties Claude pagamins mažiau taisymų PR'uose.
Ilgos Užklausos, Trumpi Išeities Rezultatai
Kitas požiūris, kaip pateikti užklausą Claude Haiku 4.5 tiksliam kodui: išeik žodžius užklausoje, o ne gamintoje išvestyje. Tu nori:
- Išsamius apribojimus užklausoje
- Minimaliai nereikalingos įžvalgos išvestyje
Liepk slopinti paaiškinimus ir grąžinti tik kodų blokus su failų pavadinimais ir trumpu README. Jei nori komentarų, prašyk atskirai. Įterptinė proza kartu su kodu – tai kaip klaidos, pasipuošusios monocle ir cilindru.
Tobulinimas: Tikras, Veiksmingas Ciklas
Greičiausias kelias į patikimą kodą nėra „pirmas kartas tiksliai“. Tai trumpi korekciniai ciklai:
- Sugeneruok testus ir kodą.
- Paleisk vietoje. Įklijuok klaidų išvedimą ir kompiliatoriaus pranešimus tiksliai į Claude.
- Nurodyk: „Pakeisk tik minimaliai reikalingas eilutes; nekeisk funkcijų parašų, nebent testai reikalauja.“
- Kartok, kol bus žalias signalas.
Claude puikiai imsis pakeitimų, kai tiksliai pasakysi, kas sugriuvo. Nekomentuok klaidų apibendrinimais. Įklijuok juos. Klaidos žurnalai yra tikrovė.
Saugumas yra Funkcija, Ne Pridėtinis Tekstas
Kadangi modeliai mokomi viešo kodo (gero, blogo ir keisto), saugumas turi būti pirmojo lygio reikalavimas:
- Aiškiai uždrausk eval, shell=True ir plaučius SQL užklausas per eilutes
- Reikalauk parametrizuotų užklausų, CSRF apsaugos ir užklausų ribojimo
- Prašyk priklausomybių fiksavimo kartu su užraktu (lockfile)
- Reikalauk slaptųjų duomenų valdymo per aplinkos kintamuosius arba slaptojo tvarkyklę
Numatytuoju saugiu požiūriu gauni saugesnį kodą. „Mes taisysim vėliau“ požiūris baigiasi antraštėmis žiniasklaidoje.
Našumas: Pasakyk, Ką Reiškia „Greitas“
„Padaryk greitą“ gali reiškia bet ką. Vietoje to, nurodyk metrikas:
- Vėlavimo tikslus (p95 < 50ms atminties operacijoms, p95 < 300ms duomenų bazės operacijoms)
- Atminties limitus (RSS < 150MB)
- Laiko sudėtingumą (privalo būti O(n log n), ne O(n^2))
Claude parinks algoritmus pagal tavo biudžetą. Duok jam biudžetą.
Dokumentacija: Pakankama, Kad Naujas Galėtų Imtis Darbo
Prašyk Claude sukurti README, kuris apimtų:
- Diegimo instrukcijas su tiksliomis versijomis
- Komandas testams, tikrinimams, tipo patikrinimui, paleidimui
- Pavyzdinius užklausimus/atsakymus
- Apribojimus ir žinomas kompromisus
„Tikslus kodas“ apima ir tikslią dokumentaciją. Ji yra dalis galutinio produkto.
Konkrečios Užklausų Šablonai, Kuriuos Gali Pasiimti
Šablonas: Užpakalinio Galo Endpointas
Sistema: Tu esi kruopštus Python 3.12 programuotojas. Rezultate pateik tik kodo blokus su failų pavadinimais.
Vartotojas:
- Sukurk FastAPI 0.111 aplikaciją su POST /convert endpointu.
- Užklausa: {amount: Decimal kaip string, from: 'USD'|'EUR', to: tas pats}.
- Validuok su pydantic v2; grąžink 422 struktūrą klaidoms.
- Naudok gryną funkciją convert(amount, from, to) su fiksuotais kursais {USD:1, EUR:1.1}.
- Grąžink {amount: string, currency: string} su 200 sėkmės kodu.
- Įtrauk pytest testus validžiam, invalidžiam (blogas decimal, nežinomas kodas) ir ribiniam (0) atvejams.
- Pateik pyproject.toml su užfiksuotomis priklausomybėmis; pridėk ruff ir mypy konfigus.
- Nenurodyk tinklo skambučių ar komentarų.
Šablonas: CLI Įrankis
Sistema: Rašai Go 1.22. Rezultate pateik tik kodo blokus su failų pavadinimais.
Vartotojas:
- Sukurk CLI pavadinimu slugify, kuris nuskaito stdin ir atspausdina URL saugius slug'us.
- Taisyklės: mažosios raidės, tik ASCII, brūkšnių atskyrimai, baltųjų simbolių sutraukimas, skyrybos ženklų šalinimas.
- Pateik main.go ir slugify_test.go su lentelinių testų rinkiniu.
- Naudok tik Go standartinę biblioteką.
- Pridėk Makefile su testų ir build tikslų aprašymais.
Šablonas: Priekinės Suvestinės Komponentas
Sistema: Tu esi pragmatiškas React programuotojas, taikantis React 18 + TypeScript.
Vartotojas:
- Įgyvendink komponentą <DebouncedInput>.
- Props: value: string, onChange(value): void, delay=300.
- Naudok useRef/useEffect; nekomplektuok trečiųjų šalių hookų.
- Įtrauk vitest testus su netikromis laikrodžio funkcijomis.
- Pridėk minimalų Storybook istorijos pavyzdį.
Šie šablonai rodo, kaip pateikti užklausą Claude Haiku 4.5 tiksliam kodo generavimui, fiksuojant versijas, apibrėžiant elgesį ir reikalaujant testų.
Nebūk Gudrus: Kada Sakyt „Neoptimizuok“
Jei nenori ankstyvų mikroskopinių optimizacijų (ir gerai, kad nenori), pasakyk:
- „Prioritetas – aiškumas, o ne gudrumas; be bitų manipuliacijų, jei testai nereikalauja.“
- „Nerekurencija, jei iteracinis sprendimas aiškesnis.“
- „Nereikia metaprogramavimo; aiškumas svarbiau už magiją.“
Claude mėgsta įspūdingumą. Neleisk jam. Leisk tiesiog praeiti testus ir būti suprantamu. Tai jau yra įspūdinga.
Sider.AI Darbo Procese, Kur Tai Iš Tikrųjų Veikia Matau, kaip žmonės svarsto užklausas atsitiktiniuose pokalbių languose tarsi produktyvumo ritualą. Naudok darbo aplinką, kuri supranta kodo kontekstą. Pavyzdžiui, Sider.AI yra sukurta tam, kad tavo specifikacijos, kodas, pakeitimai ir testų žurnalai būtų visada matomi, todėl „įklijuok klaidą, pataisyk problemą“ ciklas tampa tikrai efektyvus. Tai nėra magija – tai nuobodus karkasas, kuris padeda neprarasti siužeto. Jei tavo įrankis vienoje vietoje laikys sutartį, testus ir kodą – be švenčių ar blaškymosi – naudok jį. Sider taip veikia. Kaip Derinti Su Claude Kaip Komandos Nariu, O Ne Orakulu
- Įklijuok nepraeinančių testų išvedimą tiksliai kaip yra. Nesivyniok į santraukas.
- Prašyk pateikti difą: „Atsakyk tik su unified diff, tik failui X.“
- Rantų klaidoms pateik mažiausią atkartojamą fragmentą ir reikalauk paaiškinimo bei pataisos.
- Bibliotekų klaidoms įklijuok dokumentacijos ištrauką, kuri, tavo manymu, tinka, ir paklausk: „Ar tai tinkama API versijai X? Jei ne, atnaujink kodą ir pateik teisingą ištrauką.“
Tikslas – versti Claude argumentuoti su įrodymais. Tu atneši įrodymus.
Spąstų Paradas (ir Kaip jų Vengti)
- „Naujausios“ API spąstai: Nesakyk „naudok naujausią“. Sakyk „naudok versiją X.Y“ ir prisilaikyk.
- Tuščias testų failas: Jei nereikalauji testų, jų negausi.
- Vienkartinis nesusipratimas: Planuok du ar tris trumpus tobulinimus. Tai greičiau nei vienas didelis užklausimas.
- Neaiški klaidų politika: Apibrėžk statuso kodus ir klaidų struktūras. „Grąžinti klaidą“ – tai nieko nesakantis nurodymas.
- Nevaldoma priklausomybė: Jei kodas priklauso nuo išorinės paslaugos, kurios nevaldei, sukurk fiksuotas imituojančias versijas.
Tavo Užklausos Patikros Sąrašas (Pasikabink Prie Monitoriaus)
- Kalbos ir vykdymo versijos fiksuotos
- Bibliotekų versijos fiksuotos
- Duomenų schemos apibrėžtos
- Klaidų semantika apibrėžta (kodai, struktūros)
- Testai pirmiau, tada kodas
- Saugumo apribojimai aiškiai nurodyti
- Stilius ir struktūra apibrėžti
- Išvesties formatas ribojamas (failų pavadinimai, kodo blokai, difai)
- Trumpas tobulinimo ciklas su įklijuotais žurnalais
Jei įvykdysi visus dešimt punktų, Claude Haiku 4.5 paprastai generuos tikslius, patikimus kodus, kurie veiks dienos šviesoje.
Praktinis Pavyzdys: Nuo Neaiškios Užklausos Iki Patikrintos
Neaiški užklausa: „Parašyk funkciją, kuri saugiai nuskaito CSV.“
Rezultatas: tikriausiai veikia, gal neteisinga, tikrai netestuota.
Tiksliai suformuluota užklausa:
„Tu rašai Python 3.12. Rezultate pateik tik kodo blokus su failų pavadinimais.
Sukurk csvsafe/init.py ir csvsafe/reader.py su funkcija read_rows(path: Path) -> list[dict[str,str]]. Reikalavimai: naudok csv.DictReader su newline='' ir encoding='utf-8'; drausk null baitus; atmink failus didesnius nei 10MB; ribok stulpelius iki 100; pašalink BOM; tuščius langelius traktuoju kaip tuščius stringus; kelk ValueError su klaidų kodais {FILE_TOO_LARGE, NULL_BYTE, TOO_MANY_COLUMNS}. Įtrauk testus tests/test_reader.py su pytest, apimančius sėkmės atvejį, null baitus, 11MB failą, 101 stulpelį ir BOM tvarkymą. Pateik pyproject.toml su užfiksuotomis priklausomybėmis ir black konfigūracija.”
Gauni kodą, testus ir ribų valdymą. Tada paleidi testus, įklijuoji klaidas ir tobulini su minimaliais pakeitimais. Taip praktikuojama tiksli kodo generacija.
Apie „Kūrybiškumą“ ir Kitas Rinkodaros Frazes
Man nereikia „kūrybiško“ kodo. Man reikia teisingo kodo. Kūrybiškumą palik savo katei. Pateikdamas užklausą Claude, kūrybiškumas yra natūralus tvirtų apribojimų šalutinis produktas. Tinkami testai ir aiškūs reikalavimai duoda elegantiškus sprendimus. Netinkama užklausa sukuria „perrašytą base64 su emocijomis“. Nesiūlyk to.
Ne paslaptis, Bet Esminis Patarimas
Kaip pateikti užklausą Claude Haiku 4.5 tiksliam kodo generavimui: nusirašyk, ko reikia, fiksuok versijas, apibrėžk schemas, reikalauk testų ir tobulink pagal tikrus klaidų atvejus. Tai viskas. Jokios mistikos. Tiesiog inžinerinė disciplina su modeliu, kuris gali greitai rašyti ir nenusibosta daryti penkiolika beveik identiškų testų atvejų.
Ir štai posūkis: tikslumas nėra įspūdingas. Veikiančios užklausos atrodo kaip TSA kontrolinis sąrašas. Pristatytas kodas atrodo taip, tarsi jį rašė žmogus, kuriam rūpi. Abu pasiekiami laikantis modelio kaip jaunesnio inžinieriaus, kuris puikiai dirba aiškiai apibrėžtų reikalavimų sąlygomis, o ne klumpa neaiškiu vadovavimu. Duok jam sutartį. Leisk praeiti testus. Tada galbūt galėsi pasitikėti – taip, kaip pasitikima įrankiu, o ne pranašu.
Išvada: Mažiau Magijos, Daugiau Garantijos
Jei nori magijos, eik į magijos šou. Jei nori programinę įrangą, kuri kompiliuojasi ir veikia, rašyk užklausas kaip garantijas. Kaip pateikti užklausą Claude Haiku 4.5 tiksliam kodui nėra apie poetišką įžvalgą ar slaptus žodžius. Tai apie apribojimus, testus, versijas ir atsiliepimų ciklus. Atlik tuos keturis dalykus – ir gausi kodą, kuris veikia. Jei jų nepaisysi – gausi gražiai suformatuotą fikciją.
Kodui nerūpi jūsų nuotaikos. Laimei, testams irgi.
DUK (Dažniausiai užduodami klausimai)
K1: Koks yra paprasčiausias būdas paraginti Claude Haiku 4.5 generuoti tikslų kodą?
Elkitės su juo kaip su sutartimi: prisegkite versijas, apibrėžkite schemas, nurodykite klaidų formatus ir pirmiausia reikalaukite testų. Kuo aiškesni apribojimai, tuo tikslesnis kodas.
K2: Kaip sumažinti haliucinacijas, kai Claude rašo kodą?
Įklijuokite autoritetingus dokumentus ar specifikacijas ir reikalaukite tiksliai laikytis tų API. Privatiems galiniams taškams įtraukite savo specifikaciją – nesitikėkite, kad jis atspės.
K3: Ar turėčiau prašyti Claude parašyti testus, ar rašyti juos pačiam?
Prašykite Claude pirmiausia sugeneruoti testus, tada įgyvendinkite kodą, kad jie būtų patenkinti. Testai apibrėžia tikslumą geriau nei būdvardžiai ir neleidžia modeliui meluoti.
K4: Koks konkretus turėtų būti versijų prisegimas raginimuose?
Labai konkretus: kalbos vykdymo aplinka, pagrindinė / papildoma sistemos versija ir SDK versijos. „Naujausia“ skatina prieštaringus modelius; tikslumas priklauso nuo stabilių tikslų.
K5: Kur Sider.AI įsipaišo į raginimus generuoti tikslų kodą?
Naudokite Sider.AI, kad specifikacijos, kodas, skirtumai ir testų žurnalai būtų viename cikle. Tai nedaro stebuklų – tiesiog išsaugo kontekstą, kad Claude pataisymai atitiktų jūsų faktines klaidas.