Njësia 1 / 12

Inteligjenca artificiale për ekipet e softuerit: Modeli i punës dhe kufijtë

Fitimet:

  • Aftësia për të shpjeguar se si funksionon një asistent kodimi si një model gjuhësor dhe konceptet e shenjës, dritares së kontekstit, halucinacionit
  • Aftësia për të dalluar detyrat e softuerit ku AI është i fortë dhe i dobët me një hartë mendore
  • Aftësia për të zbatuar ciklin bazë të punës të propozoj-prodhoj-verifikoj në detyrat e veta

Dita e një zhvilluesi të softuerit rrallë shpenzohet "duke shkruar kodin nga e para". Në kohë reale; Leximi i kodit të shkruar nga dikush tjetër, përpjekja për të riprodhuar një gabim, skanimi i regjistrit (linjat e logit të prodhuara nga aplikacioni gjatë ekzekutimit), shkrimi i testeve, shkrimi i një PR (kërkesë për tërheqje - një kërkesë për bashkim ku një ndryshim kodi paraqitet për shqyrtim të ekipit) shpjegim dhe përditësimi i dokumentacionit. Inteligjenca artificiale (AI) është një shumëzues shpejtësie që mund të prekë pothuajse të gjitha këto punë të padukshme. Por kushti i parë për ta përdorur atë në mënyrë të sigurt është të kuptoni saktë se çfarë është dhe çfarë nuk është.

Në këtë njësi, ne fillimisht shpjegojmë teknologjinë themelore të një asistenti kodues në gjuhë të thjeshtë; pastaj krijojmë një hartë mendore të pikave të forta dhe të dobëta të modelit; Së fundi, ne vendosim disiplinën bazë të punës që do të përdorim gjatë gjithë modulit: propozojmë, prodhojmë, verifikojmë. Këto tre hapa janë shtylla kurrizore e njëmbëdhjetë njësive të ardhshme.

Shënim: Ky modul është një trajnim i përgjithshëm. Në softuerin kritik për sigurinë (përpunimi i pagesave, kujdesi shëndetësor, vërtetimi, infrastruktura kritike) prodhimi i AI nuk është një zëvendësim për rishikimin dhe miratimin nga një inxhinier i kualifikuar. AI është një asistent; Nënshkruesi është inxhinieri.

Çfarë bën në të vërtetë një Asistent Kodimi?

Shumica e asistentëve të kodimit janë ndërtuar në një model të madh gjuhësor (LLM - një AI i trajnuar në sasi të mëdha teksti dhe kodi që parashikon "pjesën" e ardhshme më të mundshme). Modeli nuk e “kupton” kodin si njeriu; Ai gjeneron vazhdimin më të mundshëm të kontekstit që i jepni, bazuar në modelet që mëson nga një grup i madh shembujsh. Ky mekanizëm në dukje i thjeshtë jep rezultate çuditërisht të aftë në praktikë – sepse shumica e softuerëve përbëhet nga modele të përsëritura: një kërkesë HTTP, një lak, një kontroll null, një model testimi.

Tre terma janë kritikë këtu. Token është njësia më e vogël që modeli përpunon duke e ndarë tekstin; Është afërsisht disa shkronja ose pjesë e një fjale. Dritarja e kontekstit është sasia e shenjave që modeli mund të "shohë" menjëherë; Kodi juaj, mesazhi i gabimit dhe udhëzimi duhet të përshtaten në këtë dritare. Një kërkesë është të gjitha udhëzimet dhe konteksti që i jepni modelit. Cilësia e rezultatit që merrni varet drejtpërdrejt nga këto dy: sa më mirë kontekst dhe udhëzime më të qarta t'i jepni modelit, aq më i mirë do të merrni rezultat. Hyrja e keqe prodhon rezultate të këqija, edhe nëse është një model i zgjuar - rregulli klasik i softuerit "mbeturinat brenda, mbeturinat jashtë" zbatohet gjithashtu për AI.

Harta e pikave të forta dhe të dobëta

Për të drejtuar AI në punët e duhura, është e nevojshme të dini se ku shkëlqen dhe ku pengohet. Mësimi përmendësh i kësaj harte do t'ju bëjë të pyesni veten me çdo mision tjetër: "A duhet ta transferoj këtë punë tek AI apo ta bëj vetë?" Kjo ju lejon t'i përgjigjeni pyetjes në sekonda.

Pikat e tij të forta janë: Gjenerimi i kodit të kazanit, përkthimi nga një gjuhë në tjetrën, shkrimi i një shprehjeje të rregullt (regex), përshkrimi i një funksioni, krijimi i një skeleti testimi, interpretimi i një mesazhi gabimi, hartimi i dokumentacionit, sugjerimi i emrave të variablave/funksioneve dhe rifaktorizim i vogël (përmirësimi i strukturës së kodit pa ndryshuar sjelljen e tij).

Pikat e dobëta: Njohja e rregullave specifike të biznesit të kompanisë suaj, kujtimi i të gjithë bazës së kodit, ekzekutimi dhe verifikimi i kodit në të vërtetë, njohja e versioneve më të fundit të bibliotekës me siguri, zbulimi i dobësive të sigurisë me një garanci njëqind për qind. Gjëja më e rrezikshme është halucinacioni: modeli shpik një funksion, bibliotekë ose API (ndërfaqe që mundëson shkëmbimin e të dhënave ndërmjet aplikacioneve) inekzistente në një gjuhë shumë bindëse. Ky rrezik në fakt mund të kthehet në avantazhin tuaj, pasi kodi, ndryshe nga teksti i thjeshtë, mund të testohet për të parë nëse "funksionon" - thjesht mos e kaloni hapin e verifikimit.

Lloji i misionit

Roli i AI

roli i njeriut

Prodhoni bojlerplate/skelet

prodhon draft

Përshtatet, rishikon

Përshkrimi i kodit

Jep një përmbledhje të shpejtë

Verifikon pjesën kritike në kod

teste me shkrim

Rasti sugjeron

Konfirmon mbulimin dhe saktësinë

Logjika kritike e sigurisë

ide e dobishme

Vendimi dhe përgjegjësia bien tërësisht tek njerëzit.

Përdorimi i API/bibliotekës

Gjeneron mostër

Verifikon ekzistencën dhe versionin

vendim arkitektonik

Llojet e opsioneve

Përzgjedh dhe mbron duke ditur kontekstin

Hap pas hapi: Cikli bazë i punës

  1. Sqaroni detyrën. Nëse ju nuk mund të shkruani atë që dëshironi në një fjali, as modelja nuk mundet. Sa më herët të depërtojë pasiguria në input, aq më e madhe rritet në output.
  2. Jepni kontekstin. Shtoni kodin përkatës, mesazhin e plotë të gabimit, versionin e gjuhës/kornizës dhe kufizimet në prompt. Mos thuaj "rregullo këtë", thuaj "Python 3.11, FastAPI 0.110; ky funksion jep një gabim 500, ai shpërthen kur trupi i kërkesës është bosh".
  3. Roli dhe formati i imponimit. Një kornizë si "Ju jeni një zhvillues i vjetër Go; thjesht jepni kodin dhe një arsyetim me dy fjali" fokuson rezultatin.
  4. Kërkoni të vogla. Zbërthejeni atë në hapa dhe jo në një kërkesë gjigante; Verifikoni secilin hap veç e veç. Ndryshimet e mëdha janë të rrezikshme sepse janë të vështira për t'u verifikuar dhe të prirur për të fshehur gabimet.
  5. Verifiko. Drejtojeni, provojeni, lexoni vizualisht. Kodi i paverifikuar i AI është një "skicë", jo një "zgjidhje". Ky është hapi më i panegociueshëm i ciklit.

Tre Mini Rastet

Rasti 1 — Kursimet e kohës janë reale, por modeste. Kur një ekip skeletoi pikat përfundimtare të reja CRUD (Krijo-Lexo-Përditëso-Fshi) me AI, koha e draftit të parë ra nga afërsisht 40 minuta në 8 minuta. Megjithatë, me rishikim dhe testim, koha totale ishte 25 minuta; pra fitimi real është nga 40 në 25, rreth 38%. Kjo normë, e matur në vend të pritshmërisë "ne jemi përshpejtuar 10 herë", është një fitim i qëndrueshëm.

Rasti 2 - Halucinacioni është i kushtueshëm. Një zhvillues përdori thirrjen e sugjeruar nga AI requests.get_json() pa validim; Nuk kishte asnjë metodë të tillë (përgjigje saktësisht.json()). 20 minuta humbën kur kodi nuk u përpilua. Një e thjeshtë "a ekziston vërtet kjo metodë?" verifikimi do të rivendoste humbjen.

Rasti 3 — Konteksti i mirë dyfishon rezultatin. Për të njëjtin gabim, një zhvillues thjesht shkroi "Po marr një gabim" dhe tjetri shtoi gjurmën e plotë të stivës, versionin dhe mostrën hyrëse. Ky i fundit mori zgjidhjen e duhur në provën e parë; I pari kaloi tre kthesa. Dallimi nuk ishte në model, por në hyrje.

Katër modele të kopjueshme

Një paralajmërim i fuqishëm për fillimin me qëllime të përgjithshme:

Roli: Ju jeni një zhvillues me përvojë në {{gjuhë}}. Detyra: {{what_want}}Konteksti:- Korniza/versioni: {{framework_and_version}}- Kufizimet: {{rregullat e performancës, stilit, varësisë}}Rregullat:- Mos përdorni bibliotekë/funksion që nuk ekziston; Nëse nuk jeni të sigurt, shënojeni si "verifiko". - Së pari, jepni një plan të shkurtër, pastaj kodin, pastaj 2 fjali justifikuese. - Prodhoni kod pune të testueshëm.

Për të filtruar përsëri pasigurinë në model:

Përpara se të zgjidhni detyrën e mëposhtme, rendisni TË PAKTËN 3 pika që ju mungojnë ose ju duken të paqarta si pyetje. MOS shkruaj kod para se të përgjigjem. Detyra: {{detyrë}}

Për të kontrolluar vetë daljen:

Ju keni prodhuar kodin e mëposhtëm. Tani ndryshoni rolin tuaj dhe kritikoni këtë kod: - Listoni 3 raste (raste të skajshme) që mund të mos funksionojnë.- A ka ndonjë API/funksion që mund të kishit krijuar? Shëno.- Jep versionin e korrigjuar. Kodi:{{code}}

Për të ndarë një vendim në opsione:

Sugjeroni 2-3 qasje zgjidhjesh për {{problem}}. Për secilën: përshkrim i shkurtër, plus/minus, kur të zgjidhni. Jepni në formë tabelare. MOS zgjidh për mua; thjesht sqaroni opsionin.

Prompt i dobët / Prompt i fortë

E dobët: "Fix defekt në këtë kod." (Cili gabim? Cila gjuhë? Cila është sjellja e pritur?)
Strong: "Python 3.11 / FastAPI 0.110. Pika fundore e mëposhtme kthen 500 me KeyError kur trupi i kërkesës vjen bosh; Unë dua që ai të kthejë 400 dhe mesazh kuptimplotë në trupin bosh. Së pari shpjegoni arsyen, më pas jepni funksionin e korrigjuar, më pas shkruani një test për këtë skenar. [kodi]"

Version i fuqishëm; Ai jep gjuhën, versionin, gabimin aktual, sjelljen e pritur dhe formatin e daljes. Modeli nuk ka më nevojë të parashikojë.

Gabimet e zakonshme

  • Besimi pa verifikim. Gabimi më i zakonshëm dhe më i shtrenjtë. Mos thoni "zgjidhet" derisa kodi të kompilohet dhe testohet.
  • Bërja e pyetjeve pa kontekst. Përgjigja pa version, tekst gabimi dhe kufizime është e përgjithshme dhe shpesh e gabuar.
  • Një kërkesë e madhe. Të mos jesh në gjendje të kërkosh dhe rishikosh një prodhim 300 rreshtash menjëherë, i bën gabimet të padukshme.
  • Gabimi i vetëbesimit të modeles si provë. AI mund të thotë me siguri diçka të gabuar; Toni nuk është një tregues i saktësisë.
  • Ngjitja e rastësishme e sekretit të kompanisë. Çelësat privatë, të dhënat e klientit ose kodi burimor privat nuk duhet të futen në mjete të pamiratuara (ne do të thellojmë këtë temë në njësinë 10).
Këshillë: Trajtoni çdo dalje të AI si "ky është një draft". Ky zakon i vetëm mendor shuan shumicën e rreziqeve që do të shihni përgjatë modulit.

Në përmbledhje

Një asistent kodimi është një model gjuhësor që parashikon fragmentin tjetër më të mundshëm; Nuk e kupton kodin, prodhon modele. Kjo është arsyeja pse ai është i fortë në punët e përsëritura dhe me formula; Duhet të përdoret me kujdes për punë që kërkojnë verifikim që është specifik për kontekstin tuaj. Rreziku më i madh është halucinacioni dhe i vetmi antidot është verifikimi. Disiplina që do të ndjekim gjatë gjithë modulit është e qartë: qartësoni detyrën, jepni kontekstin, kërkoni të vogla, vërtetoni çdo dorëzues.

Detyra e aplikimit

Shkruani tre detyra softuerike që keni bërë javën e fundit (p.sh. një rregullim i gabimeve, një test, një përditësim README). Shikoni "hartën e pikave të forta dhe të dobëta" për secilën dhe përshkruani me një fjali se cili do të ishte roli juaj dhe i AI nëse do ta kishit që AI ta bënte këtë. Më pas jepni një nga këto detyra AI me shabllonin "start prompt" më lart dhe ekzekutoni dhe verifikoni rezultatin; Vini re sa minuta keni kursyer dhe sa gabime ju është dashur të rregulloni.

listë kontrolli

  • [ ] Kuptova se LLM prodhon modele, jo "kupton" kodin.
  • [ ] Mund të shpjegoj konceptet e tokenit, dritares së kontekstit dhe promptit me një fjali.
  • [ ] Mund të dalloj midis llojeve të detyrave ku AI është i fortë dhe i dobët.
  • [ ] Unë e di se çfarë është një halucinacion dhe i vetmi antidot është verifikimi.
  • [ ] Unë e përshtata ciklin "propozoj, prodho, verifiko" me detyrën time.
  • [ ] Unë mund të tregoj ndryshimin midis një prompt të fortë dhe një prompt të dobët në një shembull konkret.