Kasu:
- Võimalus vastendada vestlusrežiimi õigele ülesandetüübile koos sisemise lõpetamisega
- Võime kirjutada võimsaid tootmisviipasid, mis hõlmavad sisend-/väljundlepinguid, servajuhtumeid ja stiilipiiranguid
- Võimalus enne ühendamist kontrollida loodud koodi ja kõiki uusi pakutud sõltuvusi
Arendaja esimene kontakt tehisintellektiga on sageli automaatne täitmine – funktsioon, mis soovitab tippimisel järgmist rida – või vestlusaknasse käsk „tippige see funktsioon”. Mõlemad kasutavad sama mootorit, kuid nõuavad erinevaid distsipliine. Selles üksuses teisendame koodi genereerimise juhuslikust "üles kirjutamisest" insenerietapiks, mille väljund on prognoositav ja kontrollitav.
Eesmärk on muuta AI teie trükimasinat kiirendavast tööriistast praktikandiks, kes töötab teie seatud piirangute piires. Hästi juhendatud õpipoiss säästab aega; Juhimata õpipoiss tekitab segadust, mille peate hiljem ära koristama.
Kaks kasutusrežiimi: tekstisisene lõpetamine ja vestlus
Tekstisisene lõpetamine tuleb mängu redaktorisse tippimisel; Sisestate funktsiooni allkirja või kommentaarirea ja see soovitab ülejäänu. See on kiiruse jaoks suurepärane, kuid sellel on kitsas kontekst: see näeb koodi ainult vahetus piirkonnas. Sellepärast toimib kõige paremini, kui kirjutad oma kavatsusest kommentaaris selgelt kirja. Näiteks //validate kasutaja meiliaadress, visake ValidationError, kui kehtetu kommentaar parandab oluliselt allolevat soovitust.
Vestlusrežiim on mõeldud suuremate ja struktureeritud ülesannete jaoks: "Lisa sellesse klassi lehekülgede arv", "Selle teenuse liidese ekstraktimine". Siin on sul luksus anda roll, kontekst ja formaat. Üldreegel on: väikeste ja voolavate ülesannete puhul lõpetamine, mõtlemist ja ülesehitust nõudvate ülesannete puhul vestlus.
Nõuanne. Ärge nõustuge lõpetamissoovitusega "Tab". Lugege soovitatud rida sekundiks läbi; Siit lekib kõige sagedamini vale muutuja nimi või ümberpööratud tingimus.
Sammud kavatsuse koodiks tõlkimiseks
- Määratlege leping. Mis on funktsiooni sisend, väljund ja vea käitumine? Nagu "Hangi meilisõnum, normaliseerige, kui see on kehtiv, visake viga, kui see on kehtetu".
- Määrake piirangud. Kas te ei kasuta välist sõltuvust? Konkreetne stiilijuhend? Kas toimivuspiirang on olemas?
- Too näide. Sisend-väljund paar (“ali@x.com → kehtiv, ali@ → viga”) liigutab mudeli arusaama kavatsusest ennustamiselt täpsusele.
- Küsi väikseid tükke. Üks funktsioon, üks vastutus. Seejärel liikuge järgmise juurde.
- Lugege ja käivitage loodud kood. Kompileerimine + kiire käsitsi proovimine on odavaim kinnitusetapp.
Kolm miniümbrist
Juhtum 1 – kommentaaridel põhinev tootmine suurendab täpsust. Arendaja taotles esmalt tühja kehaga kuupäeva parsimise funktsiooni ja sai 3 vooruga õige tulemuse. Teisel katsel, kui defineerisin funktsiooni 4-realise kommentaariga (aktsepteeritud vormingud, ajavööndi reegel, veatingimus) ja seda taotlesin, tuli kood, mis töötas esimeses ringis. Sama mudel, samal päeval; erinevus seisnes vaid kavatsuse selguses.
Juhtum 2 – versiooni määramata jätmine on kallis. Üks meeskond oli hädas pärandkutsumispõhise API-ga, mis asendas faili Node.js jaoks loodud koodis faili fs.promises. Kui viipale lisati rida "Use Node 20, ESM, async/wait", järgnes tootmine esimest korda projektile; Parandusele kulunud keskmine 12 minutit nulliti.
Juhtum 3 – reaalne kasv katlakoodi koodis. Mikroteenus nõudis 6 uut DTO-d (Data Transfer Object – lihtne andmeklass, mis kannab andmeid kihtide vahel) ja nende valideerimisreegleid. See, mis varem oli umbes 90 minutit käsitsi tööd, vähenes 35 minutini, kui tehisintellekt koostas ja vaatas üle; Kuna koodi kordus on suur ja muster selge, töötas AI siin oma kõige tõhusamas valdkonnas.
Neli kopeeritavat malli
Lepingupõhise funktsiooni loomine:
Roll: olete usin keele {{keel}} arendaja. Funktsioonileping:- Nimi: {{nimi}}- Sisend: {{tüübid ja nende tähendus}}- Väljund: {{tüüp ja tähendus}}- Vea olek: {{mis visatakse/tagastatakse, kui}}Piirangud: {{väliseid sõltuvusi pole / stiil_ / jõudlus}} -sisendused: 1}-} {{output_1}}- {{entry_2}} -> {{error_2}}Esmalt andke allkiri + lühike plaan, seejärel kood. Testide kirjutamine, lihtsalt funktsioon.
Olemasoleva stiili sobitamiseks (kohandage koodi baasiga):
Allpool on näide meie projektist; Siit saate teada nimetamise, vigade käsitlemise ja kommenteerimisstiili kohta. Kirjutage funktsioon {{new_task}} jaoks SAMA stiiliga. Näide: {{praegune_kood}}
Skeletist täitmiseni (stub → teostus):
Täitke allolev funktsiooni skelett vastavalt kommentaarides olevatele ÜLESANNE-dele. MUUDA allkirja ja tagastustüüpi. Ärge tehke abifunktsiooni, mida pole olemas; vajadusel andke teada "seda abilist on vaja". {{skelet_kod}}
Alternatiivsete rakenduste võrdlus:
Andke {{ülesande}} jaoks 2 erinevat teostust: (a) loetavuse prioriteedi seadmine, (b) jõudluse tähtsuse järjekorda seadmine. Kirjutage igaühe alla 1 lause "millal on parem".
Nõrk viip / Tugev viip
Nõrk: "Kirjutage mulle meili kinnitamise funktsioon."
Tugev: "TypeScript 5, standardne teek. Kirjutage isValidEmail(sisend: string): tõeväärtus. Kärbi tühikuid, muutke see tõstutundlikuks, a@b.co on kehtiv, a@, @b.co, tühi string on kehtetu. Kui kavatsete kasutada regexit, ärge olge liiga keeruline; lisage 2 rida kommentaare."
Võimas versioon; Tagastab keele, versiooni, allkirja, servajuhtumite ja stiilipiirangu. Seega loodud kood nii töötab kui ka sobib teie projektiga.
Lähenemine
Millal kasutada
Tähelepanu
Tekstisisene täitmine
Väikesed vahetükid voolus
Ärge nõustuge soovitusega ilma seda lugemata
Lepingupõhine tootmine vestluses
Uus funktsioon/klass
Tooge näide ja äärejuhtum
Tootmine stiilinäidiste järgi
Olemasolevale koodile lisamine
Valige praegune näidiskood
skeleti täidis
Allkiri fikseeritud, keha tühi
Allkirja muutmine
Koodi dubleerimine ja sõltuvuslõks
AI soovitab oma töö hõlbustamiseks sageli uut raamatukogu. Mõnikord on see täpne, mõnikord lisab see teie projektile tarbetut sõltuvust või soovitab paketti, mida pole olemas (hallutsinatsioon). Reegel: kinnitate iga uue sõltuvuse. Ärge lisage seda projekti ilma, et oleksite kontrollinud, et pakett on tegelikult olemas, seda hooldatakse ja sellel on vastav litsents. Enamasti on juba projektis olev abimees parem kui uus pakett.
Ettevaatust: vaadake üle AI soovitatud impordiread. Olematu paketinimi (mis võib meenutada ka võltspakette, mida nimetatakse "kirjutusvigadeks") katkestab kompileerimise ja tekitab turvariski.
Levinud vead
- Modelli järgi määratud allkirja olemasolu. Kui te sisend-/väljundtüüpe ei paranda, tuleb iga tootmisega erinev signatuur ja integreerimine muutub keeruliseks.
- Äärejuhtudest rääkimata. Tühi sisend, null, negatiivne arv, väga suur väärtus – kui te neid ei määra, kirjutab mudel "õnneliku tee", jättes servad vahele.
- Soovituse kombineerimine ilma seda testimata. Kood, mis näib toimivat, ei tähenda, et see töötab.
- Tarbetu sõltuvusega leppimine. Terve teegi lisamine üheliinilisele loole tekitab tehnilise võla.
- Stiili ebaühtlus. Muust projektist erinev nimede andmine ja vigade käsitlemine muudab koodibaasi lünklikuks.
Kokkuvõttes
Koodi genereerimine on võimas, kui muudate kavatsuse selgeks lepinguks. Kasutage tekstisisest lõpetamist väikeste voosiseste ülesannete ja vestluse struktuuri loovate ülesannete jaoks. Määrate sisendi/väljundi tüübid, servajuhtumid, versiooni ja stiili; Tooge mudeli näide; kontrollige iga uut sõltuvust; jookske ja lugege iga toodetud tükki. Tehisintellekt tasub end kõige paremini ära valemiga korduvas koodis – käivitage see just seal, enda seatud piirides.
Rakenduse ülesanne
Valige oma projektist tegelik väike funktsioon, mille peate kirjutama. Esmalt printige see AI-sse "lepingupõhise funktsiooni genereerimise" malliga, andes sisend-/väljundtüübid, kaks servajuhtu ja stiilipiirangu. Kompileerige genereeritud kood ja proovige seda kahe erineva sisendiga. Seejärel küsige uuesti sama funktsiooni, seekord "kirjutage see mulle" ilma kontekstita ja võrrelge kahte väljundit rida-realt: millised servajuhtumid jäid vahele, kui palju parandusi oli vaja?
kontrollnimekiri
- [ ] Ma tean, kus kasutada tekstisisese lõpetamisega vestlusrežiimi.
- [ ] Määran funktsiooni genereerimisel sisend/väljundlepingu ja servajuhtumid.
- [ ] Olen võtnud harjumuseks lisada viipale keele- ja versiooniteavet.
- [ ] Koostan ja katsetan iga toodetud tükki enne kokkupanemist.
- [ ] Kinnitan iga uut AI pakutavat sõltuvust, kontrollides selle olemasolu ja vajalikkust.
- [ ] Kontrollin, kas loodud kood ühtib projekti stiiliga.