Dobici:
- Mogućnost mapiranja načina ćaskanja za ispravan tip zadatka sa inline dovršavanjem
- Sposobnost pisanja moćnih uputstava za proizvodnju koja uključuju ulazno/izlazne ugovore, rubne slučajeve i stilska ograničenja
- Sposobnost provjere generiranog koda i svih novih predloženih ovisnosti prije spajanja
Prva tačka kontakta programera sa AI često je autodovršavanje – funkcija koja predlaže sledeći red dok kucate – ili izgovaranje „unesite tu funkciju“ u prozor za ćaskanje. Obojica koriste isti motor, ali zahtijevaju različite discipline. U ovoj jedinici transformiramo generiranje koda iz nasumičnog "zapisivanja" u inženjerski korak čiji je izlaz predvidljiv i provjerljiv.
Cilj je pretvoriti AI iz alata koji ubrzava vašu mašinu za kucanje u pripravnika koji radi u okviru ograničenja koja ste postavili. Dobro vođeni pripravnik štedi vrijeme; Nevođeni šegrt stvara nered koji kasnije morate počistiti.
Dva načina korištenja: Inline Completion i Chat
Inline dovršavanje dolazi u igru dok kucate u uređivaču; Upisujete potpis funkcije ili red za komentare i on predlaže ostalo. Odličan je za brzinu, ali ima uzak kontekst: vidi samo kod u neposrednoj blizini. Zato je najbolje kada u komentaru jasno napišete svoju namjeru. Na primjer, //provjeri korisničku e-poštu, izbaci ValidationError ako nevažeći komentar značajno poboljšava prijedlog u nastavku.
Način ćaskanja je za veće i strukturirane zadatke: "Dodaj paginaciju ovoj klasi", "Izdvoji sučelje te usluge". Ovdje imate luksuz davanja uloge, konteksta i formata. Opšte pravilo je: završetak za male i tekuće zadatke, razgovor za zadatke koji zahtijevaju razmišljanje i strukturu.
Savjet: Nemojte slijepo prihvatiti prijedlog za dovršetak sa "Tab". Pročitajte predloženi red na sekundu; Odavde najčešće curi netačno ime varijable ili obrnuti uslov.
Koraci za prevođenje namjere u kod
- Definišite ugovor. Kakvo je ponašanje funkcije unosa, izlaza i greške? Kao "Dobij e-poštu, normaliziraj ako je važeća, izbaci grešku ako je nevažeća".
- Navedite ograničenja. Ne koristite eksternu zavisnost? Specifičan stilski vodič? Postoji li ograničenje performansi?
- Navedite primjer. Par ulaz-izlaz (“ali@x.com → validan, ali@ → greška”) pomera razumevanje namere modela od predviđanja do preciznosti.
- Zatražite male komade. Jedna funkcija, jedna odgovornost. Zatim pređite na sljedeću.
- Pročitajte i pokrenite generirani kod. Kompajliranje + brzi ručni pokušaj je najjeftiniji korak osiguranja.
Tri mini futrole
Slučaj 1 — Proizvodnja vođena komentarima povećava preciznost. Programer je prvo zatražio funkciju raščlanjivanja datuma s praznim tijelom i dobio je tačan rezultat u 3 runde. U drugom pokušaju, kada sam definisao funkciju sa komentarom od 4 reda (prihvaćeni formati, pravilo vremenske zone, stanje greške) i zatražio je, došao je kod koji je radio u prvom krugu. Isti model, isti dan; razlika je bila samo u jasnoći namjere.
Slučaj 2 — Nenavođenje verzije je skupo. Jedan tim se borio sa naslijeđenim API-jem zasnovanim na povratnom pozivu koji je zamijenio fs.promises u kodu proizvedenom za Node.js. Kada je linija "Koristi čvor 20, ESM, async/await" dodata u prompt, proizvodnja je pratila projekat prvi put; Prosjek od 12 minuta utrošenih na korekciju je resetovan.
Slučaj 3 — Stvarni dobitak u standardnom kodu. Mikroservis je zahtijevao 6 novih DTO (Objekat prijenosa podataka — jednostavna klasa podataka koja prenosi podatke između slojeva) i njihova pravila validacije. Ono što je nekada bilo otprilike 90 minuta ručnog rada smanjeno je na 35 minuta kada ga je proizvela i pregledala AI; Budući da je ponavljanje koda veliko i obrazac jasan, AI je ovdje radio u svom najefikasnijem području.
Četiri predloška koji se mogu kopirati
Generiranje funkcija na osnovu ugovora:
Uloga: Vi ste marljiv {{jezik}} programer. Ugovor o funkciji:- Ime: {{name}}- Ulaz: {{vrste i njihovo značenje}}- Izlaz: {{vrsta i značenje}}- Status greške: {{šta se baca/vraća kada}}Ograničenja: {{bez vanjskih ovisnosti / stilova/izvođenja {}}Primjer> {{output_1}}- {{entry_2}} -> {{error_2}}Prvo dajte potpis + kratki plan, a zatim kod. Pisanje testova, samo funkcija.
Da odgovara postojećem stilu (prilagodi bazi koda):
Ispod je primjer funkcije iz našeg projekta; Ovdje naučite imenovanje, rukovanje greškama i stil komentiranja. Napišite funkciju za {{new_task}} sa ISTIM stilom. Primjer: {{current_code}}
Od skeleta do punjenja (stub → implementacija):
Ispunite skelet funkcije ispod prema TODO-ima u komentarima. PROMIJENI potpis i tip povratka. Nemojte praviti pomoćnu funkciju koja ne postoji; ako je potrebno, javite mi "ovaj pomoćnik je potreban". {{skelet_kod}}
Alternativno poređenje aplikacija:
Dajte 2 različite implementacije za {{task}}: (a) davanje prioriteta čitljivosti, (b) davanje prioriteta performansama. Ispod svake napišite po jednu rečenicu "kada je poželjno".
Slaba prompt / Jaka prompt
Slabo: "Napišite mi funkciju potvrde e-pošte."
Jaka: "TypeScript 5, samo standardna biblioteka. Napišite isValidEmail(input: string): boolean. Skratite razmake, učinite ga neosjetljivim na velika i mala slova, a@b.co je važeći, a@, @b.co, prazan niz je nevažeći. Ako ćete koristiti regex, nemojte biti previše složeni; dodajte 2 reda komentara."
Moćna verzija; Vraća jezik, verziju, potpis, rubne slučajeve i stilsko ograničenje. Dakle, generirani kod radi i uklapa se u vaš projekat.
Pristup
Kada koristiti
Pažnja
Inline završetak
Mali umetci u toku
Nemojte prihvatiti prijedlog bez čitanja
Proizvodnja po ugovoru u chatu
Nova funkcija/klasa
Navedite primjer i rubni slučaj
Izrada po uzorku stila
Dodavanje postojećem kodu
Odaberite trenutni uzorak koda
punjenje kostura
Potpis fiksiran, tijelo prazno
Promjena potpisa
Dupliciranje koda i zamka zavisnosti
AI često preporučuje novu biblioteku kako bi olakšala svoj posao. Ponekad je to tačno, ponekad dodaje nepotrebnu zavisnost vašem projektu ili sugeriše paket koji ne postoji (halucinacija). Pravilo: potvrđujete svaku novu zavisnost. Nemojte ga dodavati u projekat bez potvrde da paket zaista postoji, da se održava i da ima odgovarajuću licencu. Većinu vremena je pomoćnik koji je već u projektu bolji od novog paketa.
Oprez: Pregledajte uvozne linije koje je predložila AI. Nepostojeći naziv paketa (koji takođe može da liči na lažne pakete koji se nazivaju "pogreška pri kucanju") i prekida kompilaciju i predstavlja bezbednosni rizik.
Uobičajene greške
- Imajući potpis određen modelom. Ako ne popravite tipove ulaza/izlaza, različiti potpis dolazi sa svakom proizvodnjom i integracija postaje teška.
- Da ne spominjemo rubne slučajeve. Prazan unos, null, negativan broj, vrlo velika vrijednost — ako ih ne navedete, model upisuje "sretan put", preskačući rubove.
- Kombiniranje prijedloga bez testiranja. Kod koji izgleda da radi ne znači da radi.
- Prihvatanje nepotrebne zavisnosti. Dodavanje cijele biblioteke za jedan redak stvara tehnički dug.
- Stilska nedosljednost. Različito imenovanje i rukovanje greškama od ostatka projekta čini bazu koda neujednačenom.
Ukratko
Generiranje koda je moćno kada namjeru prevedete u jasan ugovor. Koristite inline dovršavanje za male, in-stream zadatke i za zadatke koji uspostavljaju strukturu u razgovoru. Vi specificirate tipove ulaza/izlaza, rubne slučajeve, verziju i stil; Navedite primjer modela; provjeriti svaku novu ovisnost; i pokrenite i pročitajte svaki proizvedeni komad. AI se najbolje isplati u formulisanom kodu koji se ponavlja - pokrenite ga tamo, u granicama koje postavite.
Zadatak aplikacije
Odaberite stvarnu malu funkciju iz svog projekta koju trebate napisati. Prvo ga odštampajte na AI sa šablonom „generisanje funkcija zasnovano na ugovoru“, dajući tipove ulaza/izlaza, dva rubna slučaja i stilsko ograničenje. Kompajlirajte generirani kod i isprobajte ga s dva različita ulaza. Zatim ponovo pitajte istu funkciju, ovaj put „napišite mi ovo“ bez ikakvog konteksta, i uporedite dva izlaza red po red: koji rubni slučajevi su propušteni, koliko je ispravaka bilo potrebno?
kontrolna lista
- [ ] Znam gdje da koristim način ćaskanja sa inline dovršavanjem.
- [ ] Određujem ulaz/izlaz ugovor i rubne slučajeve u generiranju funkcije.
- [ ] Ušao sam u naviku da dodam informacije o jeziku i verziji u prompt.
- [ ] Sastavljam i testiram svaki proizvedeni komad prije sklapanja.
- [ ] Potvrđujem svaku novu zavisnost koju AI predlaže provjeravajući njeno postojanje i neophodnost.
- [ ] Provjeravam da li generirani kod odgovara stilu projekta.