zisky:
- Schopnosť vysvetliť, ako kódovací asistent funguje ako jazykový model a pojmy token, kontextové okno, halucinácia
- Schopnosť rozlíšiť softvérové úlohy, kde je AI silná a slabá, pomocou mentálnej mapy
- Schopnosť aplikovať základný pracovný cyklus navrhnúť-vyrobiť-overiť na vlastné úlohy
Deň vývojára softvéru málokedy strávi „písaním kódu od začiatku“. V reálnom čase; Čítanie kódu napísaného niekým iným, pokus o reprodukovanie chyby, skenovanie logu (riadky denníka vytvorené aplikáciou počas behu), písanie testov, písanie PR (pull request – žiadosť o zlúčenie, kde sa zmena kódu odošle na kontrolu tímu) vysvetlenie a aktualizácia dokumentácie. Umelá inteligencia (AI) je multiplikátor rýchlosti, ktorý sa môže dotknúť takmer všetkých týchto neviditeľných úloh. Ale prvou podmienkou bezpečného používania je správne pochopiť, čo to je a čo nie.
V tejto časti najprv vysvetlíme základnú technológiu asistenta kódovania v jednoduchom jazyku; potom vytvoríme mentálnu mapu silných a slabých stránok modelu; Nakoniec si stanovíme základnú pracovnú disciplínu, ktorú budeme používať počas celého modulu: navrhnúť, vyrobiť, overiť. Tieto tri kroky sú chrbticou nasledujúcich jedenástich jednotiek.
Poznámka: Tento modul je všeobecným školením. V softvéri kritickom z hľadiska bezpečnosti (spracovanie platieb, zdravotná starostlivosť, autentifikácia, kritická infraštruktúra) výstup AI nenahrádza kontrolu a schválenie kvalifikovaným inžinierom. AI je asistent; Signatár je inžinier.
Čo vlastne robí asistent kódovania?
Väčšina asistentov kódovania je postavená na veľkom jazykovom modeli (LLM – AI vyškolená na obrovské množstvo textu a kódu, ktorá predpovedá ďalší najpravdepodobnejší „kus“). Model „nerozumie“ kódu ako človek; Vygeneruje najpravdepodobnejšie pokračovanie kontextu, ktorý mu zadáte, na základe vzorov, ktoré sa naučí z veľkého množstva príkladov. Tento zdanlivo jednoduchý mechanizmus prináša v praxi prekvapivo zdatné výsledky – pretože väčšina softvéru pozostáva z opakujúcich sa vzorov: požiadavka HTTP, slučka, kontrola nuly, testovací vzor.
Tri termíny sú tu kritické. Token je najmenšia jednotka, ktorú model spracováva delením textu; Je to zhruba niekoľko písmen alebo časť slova. Kontextové okno predstavuje množstvo tokenov, ktoré môže model „vidieť“ naraz; Váš kód, chybové hlásenie a inštrukcie sa musia zmestiť do tohto okna. Výzvou sú všetky pokyny a kontext, ktoré modelu dáte. Kvalita výstupu, ktorý získate, závisí priamo od týchto dvoch: čím lepší kontext a jasnejšie pokyny modelu dáte, tým lepší výsledok získate. Zlý vstup vytvára zlý výstup, aj keď ide o inteligentný model – klasické softvérové pravidlo „odpadky dovnútra, odpadky“ sa vzťahuje aj na AI.
Mapa silných a slabých stránok
Na nasmerovanie AI na tie správne úlohy je potrebné vedieť, kde svieti a kde sa potáca. Zapamätanie si tejto mapy vás pri každej ďalšej misii prinúti premýšľať: "Mám túto prácu zadať AI alebo to urobiť sám?" Umožňuje vám odpovedať na otázku v priebehu niekoľkých sekúnd.
Jeho silné stránky sú: Generovanie štandardného kódu, preklad z jedného jazyka do druhého, písanie regulárneho výrazu (regex), popis funkcie, vytvorenie testovacej kostry, interpretácia chybového hlásenia, vypracovanie dokumentácie, navrhovanie názvov premenných/funkcií a drobné refaktoringy (zlepšenie štruktúry kódu bez zmeny jeho správania).
Slabé stránky: Znalosť podnikových pravidiel špecifických pre vašu spoločnosť, zapamätanie si celej kódovej základne, skutočné spustenie a overenie kódu, s istotou poznať najnovšie verzie knižníc, so stopercentnou zárukou odhaľovať bezpečnostné slabiny. Najnebezpečnejšia je halucinácia: model vymyslí neexistujúcu funkciu, knižnicu alebo API (rozhranie, ktoré umožňuje výmenu dát medzi aplikáciami) vo veľmi presvedčivom jazyku. Toto riziko sa dá v skutočnosti premeniť vo váš prospech, pretože kód, na rozdiel od obyčajného textu, možno otestovať, aby ste zistili, či „funguje“ – jednoducho nepreskočte krok overenia.
Typ misie
Úloha AI
mužská rola
Vyrobte kotol/kostru
vytvára prievan
Prispôsobuje sa, recenzie
Popis kódu
Poskytuje rýchle zhrnutie
Overí kritickú časť v kóde
písanie testov
Prípad naznačuje
Potvrdzuje pokrytie a presnosť
Logika kritická z hľadiska bezpečnosti
užitočný nápad
Rozhodnutie a zodpovednosť spočíva výlučne na ľuďoch.
Použitie API/knižnice
Generuje vzorku
Overuje existenciu a verziu
architektonické rozhodnutie
Druhy možností
Vyberá a obhajuje poznajúc kontext
Krok za krokom: Základný pracovný cyklus
- Ujasnite si úlohu. Ak neviete napísať čo chcete jednou vetou, nedokáže to ani modelka. Čím skôr neistota prenikne do vstupu, tým viac rastie na výstupe.
- Dajte kontext. Do výzvy pridajte príslušný kód, úplné chybové hlásenie, verziu jazyka/rámca a obmedzenia. Nehovorte „opravte to“, povedzte „Python 3.11, FastAPI 0.110; táto funkcia dáva chybu 500, exploduje, keď je telo požiadavky prázdne“.
- Úloha a formát uloženia. Rámec ako „Ste senior vývojár Go; stačí zadať kód a zdôvodniť dve vety“ zameriava výstup.
- Požiadajte o malé. Rozdeľte to na kroky a nie na jednu obrovskú požiadavku; Overte každý krok samostatne. Veľké zmeny sú riskantné, pretože sa ťažko overujú a sú náchylné na skrývanie chýb.
- Overiť. Spustite to, otestujte to, prečítajte si to vizuálne. Neoverený kód AI je „náčrt“, nie „riešenie“. Toto je najnevyjednávateľný krok cyklu.
Tri mini puzdrá
Prípad 1 – Úspora času je skutočná, ale skromná. Keď tím vytvoril kostru nových koncových bodov CRUD (Create-Read-Update-Delete) pomocou AI, čas prvého návrhu klesol z približne 40 minút na 8 minút. Po preskúmaní a testovaní bol však celkový čas 25 minút; takže skutočný zisk je od 40 do 25, asi 38%. Táto miera, meraná namiesto očakávania „zrýchlili sme 10-krát“, predstavuje udržateľný zisk.
Prípad 2 – Halucinácie sú nákladné. Vývojár použil volanie request.get_json() navrhnuté AI bez overenia; Takáto metóda neexistovala (presne response.json()). Keď sa kód neskompiloval, stratilo sa 20 minút. Jednoduché "existuje táto metóda naozaj?" overenie by vynulovalo stratu.
Prípad 3 – Dobrý kontext zdvojnásobuje výstup. Pre tú istú chybu jeden vývojár jednoducho napísal „dostávam chybu“ a druhý pridal úplnú stopu zásobníka, verziu a vzorku vstupu. Ten dostal správne riešenie na prvý pokus; Prvý strávil tri otáčky. Rozdiel nebol v modeli, ale vo vstupe.
Štyri kopírovateľné šablóny
Všeobecná a výkonná výzva na spustenie:
Úloha: Ste skúsený vývojár v jazyku {{language}}. Úloha: {{what_want}}Kontext:- Rámec/verzia: {{framework_and_version}}- Obmedzenia: {{výkon, štýl, pravidlá závislosti}}Pravidlá:- Nepoužívajte neexistujúcu knižnicu/funkciu; Ak si nie ste istý, označte ho ako „overiť“. - Najprv uveďte krátky plán, potom kód a potom 2 vety odôvodnenia. - Vytvorte testovateľný, funkčný kód.
Ak chcete filtrovať neistotu späť do modelu:
Pred vyriešením úlohy nižšie uveďte aspoň 3 body, ktoré vám chýbajú alebo sú nejasné ako otázky. NEPÍŠTE kód skôr, ako odpoviem. Úloha: {{úloha}}
Ak chcete nechať výstup samokontrolovať:
Vytvorili ste nasledujúci kód. Teraz zmeňte svoju rolu a kritizujte tento kód:- Uveďte 3 prípady (okrajové prípady), ktoré nemusia fungovať.- Existujú nejaké API/funkcie, ktoré by ste mohli vymyslieť? Mark.- Uveďte opravenú verziu. Kód:{{code}}
Rozdelenie rozhodnutia na možnosti:
Navrhnite 2-3 prístupy k riešeniu {{problem}}. Ku každému: krátky popis, plus/mínus, kedy si vybrať. Uveďte v tabuľkovej forme. NEVYBERAJTE za mňa; len si ujasnite možnosť.
Slabá výzva / Silná výzva
Slabé: "Opravte chybu v tomto kóde." (Ktorá chyba? Ktorý jazyk? Aké je očakávané správanie?)
Strong: "Python 3.11 / FastAPI 0.110. Nasledujúci koncový bod vráti 500 s KeyError, keď je telo požiadavky prázdne; chcem, aby vrátilo 400 a zmysluplnú správu na prázdne telo. Najprv vysvetlite dôvod, potom uveďte opravenú funkciu a potom napíšte test pre tento scenár. [kód]"
Výkonná verzia; Poskytuje jazyk, verziu, skutočnú chybu, očakávané správanie a výstupný formát. Model už nemusí predvídať.
Časté chyby
- Dôverovať bez overovania. Najčastejšia a najdrahšia chyba. Nehovorte „vyriešené“, kým nie je kód skompilovaný a otestovaný.
- Kladenie otázok bez kontextu. Odpoveď bez verzie, textu chyby a obmedzení je všeobecná a často nesprávna.
- Jedna obrovská prosba. Neschopnosť vyžiadať si a skontrolovať 300-linkovú produkciu naraz robí chyby neviditeľnými.
- Pomýliť si sebavedomie modelky ako dôkaz. AI môže s istotou povedať niečo nesprávne; Tón nie je indikátorom presnosti.
- Náhodné prilepenie firemného tajomstva. Súkromné kľúče, údaje o zákazníkoch alebo súkromný zdrojový kód by sa nemali zadávať do neschválených nástrojov (tejto téme sa budeme venovať v časti 10).
Tip: S každým výstupom AI zaobchádzajte ako s „toto je koncept“. Tento jediný mentálny návyk uhasí väčšinu rizík, ktoré uvidíte v celom module.
V súhrne
Asistent kódovania je jazykový model, ktorý predpovedá ďalší najpravdepodobnejší fragment; Nerozumie kódu, vytvára vzory. Preto je silný v opakujúcich sa, vzorových úlohách; Mal by sa používať opatrne pri práci, ktorá vyžaduje overenie špecifické pre váš kontext. Najväčším rizikom sú halucinácie a jediným protijedom je overenie. Disciplína, ktorú budeme dodržiavať počas celého modulu, je jasná: objasniť úlohu, poskytnúť kontext, požiadať o malé, overiť každý výstup.
Aplikačná úloha
Zapíšte si tri softvérové úlohy, ktoré ste vykonali za posledný týždeň (napr. oprava chyby, test, aktualizácia README). Prezrite si „mapu silných a slabých stránok“ každého z nich a opíšte jednou vetou, aká by bola vaša a AI úloha, keby ste to AI nechali urobiť. Potom zadajte jednu z týchto úloh AI pomocou šablóny „výzva na spustenie“ uvedenej vyššie a spustite a overte výstup; Všimnite si, koľko minút ste ušetrili a koľko chýb ste museli opraviť.
kontrolný zoznam
- [ ] Uvedomil som si, že LLM vytvára vzory, nie „rozumie“ kódu.
- [ ] Dokážem vysvetliť pojmy token, kontextové okno a výzva jednou vetou.
- [ ] Dokážem rozlíšiť typy úloh, kde je AI silná a slabá.
- [ ] Viem, čo je to halucinácia a jediný protijed je overenie.
- [ ] Cyklus „navrhni, vyrob, over“ som prispôsobil vlastnej úlohe.
- [ ] Dokážem ukázať rozdiel medzi silnou a slabou výzvou na konkrétnom príklade.