Câștiguri:
- Abilitatea de a explica cum funcționează un asistent de codare ca model de limbaj și conceptele de simbol, fereastră de context, halucinație
- Abilitatea de a distinge sarcinile software în care AI este puternică și slabă cu o hartă mentală
- Capacitatea de a aplica ciclul de lucru de bază al propune-produce-verifica propriilor sarcini
Ziua unui dezvoltator de software este rareori petrecută „scriind cod de la zero”. În timp real; Citirea codului scris de altcineva, încercarea de a reproduce un bug, scanarea jurnalului (liniile de jurnal produse de aplicație în timpul rulării), scrierea de teste, scrierea unei explicații PR (pull request - o cerere de îmbinare în care o modificare a codului este trimisă pentru revizuirea echipei) și actualizarea documentației. Inteligența artificială (AI) este un multiplicator de viteză care poate atinge aproape toate aceste locuri de muncă nevăzute. Dar prima condiție pentru a-l folosi în siguranță este să înțelegeți corect ce este și ce nu este.
În această unitate, explicăm mai întâi tehnologia de bază a unui asistent de codificare într-un limbaj simplu; apoi creăm o hartă mentală a punctelor forte și a punctelor slabe ale modelului; În final, stabilim disciplina de lucru de bază pe care o vom folosi pe parcursul întregului modul: propune, produce, verifică. Acești trei pași sunt coloana vertebrală a următoarelor unsprezece unități.
Notă: Acest modul este o formare generală. În software-ul critic pentru securitate (procesarea plăților, asistența medicală, autentificarea, infrastructura critică) ieșirea AI nu înlocuiește revizuirea și aprobarea de către un inginer calificat. AI este un asistent; Semnatarul este inginerul.
Ce face de fapt un asistent de codificare?
Majoritatea asistenților de codare sunt construiți pe un model de limbă mare (LLM - o IA antrenată pe cantități uriașe de text și cod care prezice următoarea „buncătură”) cea mai probabilă. Modelul nu „înțelege” codul ca un om; Acesta generează cea mai probabilă continuare a contextului pe care i-l oferiți, pe baza tiparelor pe care le învață dintr-un număr imens de exemple. Acest mecanism aparent simplu dă rezultate surprinzător de competente în practică - deoarece majoritatea software-ului constă din modele repetate: o cerere HTTP, o buclă, o verificare nulă, un model de testare.
Trei termeni sunt critici aici. Tokenul este cea mai mică unitate pe care modelul o prelucrează prin împărțirea textului; Este aproximativ câteva litere sau o parte dintr-un cuvânt. Fereastra de context este cantitatea de jetoane pe care modelul le poate „vedea” simultan; Codul, mesajul de eroare și instrucțiunile dvs. trebuie să se încadreze în această fereastră. Un prompt reprezintă toate instrucțiunile și contextul pe care îi oferiți modelului. Calitatea rezultatelor pe care le obțineți depinde direct de acestea două: cu cât contextul mai bun și instrucțiunile mai clare îi oferiți modelului, cu atât veți obține un rezultat mai bun. Intrarea greșită produce rezultate proaste, chiar dacă este un model inteligent - regula clasică a software-ului „gunoi intră, gunoi afară” se aplică și AI.
Harta punctelor forte și slabe
Pentru a direcționa AI către locurile de muncă potrivite, este necesar să știi unde strălucește și unde se împiedică. Memorarea acestei hărți te va face să te întrebi cu fiecare misiune următoare: „Ar trebui să externalizez această slujbă către AI sau să o fac eu?” Vă permite să răspundeți la întrebare în câteva secunde.
Punctele sale forte sunt: generarea codului standard, traducerea dintr-o limbă în alta, scrierea unei expresii regulate (regex), descrierea unei funcții, crearea unui schelet de testare, interpretarea unui mesaj de eroare, redactarea documentației, sugerarea numelor de variabile/funcții și refactorizări minore (îmbunătățirea structurii codului fără a-i schimba comportamentul).
Puncte slabe: Cunoașterea regulilor de afaceri specifice companiei, amintirea întregii baze de coduri, rularea și verificarea codului, cunoașterea cu siguranță a celor mai recente versiuni ale bibliotecii, detectarea vulnerabilităților de securitate cu o garanție sută la sută. Cel mai periculos lucru este halucinația: modelul inventează o funcție inexistentă, bibliotecă sau API (interfață care permite schimbul de date între aplicații) într-un limbaj foarte convingător. Acest risc poate fi de fapt transformat în avantajul tău, deoarece codul, spre deosebire de textul simplu, poate fi testat pentru a vedea dacă „funcționează” – doar nu sări peste pasul de verificare.
Tipul de misiune
Rolul AI
rolul omului
Produceți boilerplate/schelet
produce draft
Adaptări, recenzii
Descrierea codului
Oferă un rezumat rapid
Verifică partea critică din cod
teste de scriere
Cazul sugerează
Confirmă acoperirea și acuratețea
Logica critică de securitate
idee utilă
Decizia și responsabilitatea revin în întregime oamenilor.
Utilizarea API/bibliotecă
Generează eșantion
Verifică existența și versiunea
decizie arhitecturală
Soiuri de opțiuni
Selectează și apără cunoscând contextul
Pas cu pas: Ciclul de lucru de bază
- Clarificați sarcina. Dacă nu poți scrie ceea ce vrei într-o singură propoziție, nici modelul nu poate. Cu cât incertitudinea se infiltrează mai devreme în intrare, cu atât crește mai mult în ieșire.
- Dați context. Adăugați codul relevant, mesajul de eroare complet, versiunea de limbă/cadru și constrângeri la prompt. Nu spuneți „remediați acest lucru”, spuneți „Python 3.11, FastAPI 0.110; această funcție dă o eroare 500, explodează când corpul solicitării este gol”.
- Rolul și formatul de impunere. Un cadru precum „Ești un dezvoltator senior Go; doar da codul și o rațiune în două propoziții” concentrează rezultatul.
- Cere mici. Împărțiți-l în pași, mai degrabă decât într-o cerere uriașă; Verificați fiecare pas separat. Schimbările majore sunt riscante, deoarece sunt greu de verificat și sunt predispuse la ascunderea erorilor.
- Verifica. Rulați-l, testați-l, citiți-l vizual. Codul AI neverificat este o „schiță”, nu o „soluție”. Acesta este pasul cel mai nenegociabil al ciclului.
Trei mini carcase
Cazul 1 — Economiile de timp sunt reale, dar modeste. Când o echipă a scheletizat noi puncte finale CRUD (Create-Read-Update-Delete) cu AI, timpul pentru prima schiță a scăzut de la aproximativ 40 de minute la 8 minute. Cu toate acestea, cu revizuire și testare, timpul total a fost de 25 de minute; deci câștigul real este de la 40 la 25, aproximativ 38%. Această rată, măsurată în locul așteptării „am accelerat de 10 ori”, este un câștig durabil.
Cazul 2 – Halucinația este costisitoare. Un dezvoltator a folosit apelul requests.get_json() sugerat de AI fără validare; Nu a existat o astfel de metodă (mai exact response.json()). S-au pierdut 20 de minute când codul nu a fost compilat. Un simplu „există cu adevărat această metodă?” verificarea ar reseta pierderea.
Cazul 3 – Un context bun dublează rezultatul. Pentru aceeași eroare, un dezvoltator a scris pur și simplu „Primesc o eroare”, iar celălalt a adăugat urmărirea stivei complete, versiunea și eșantionul de intrare. Acesta din urmă a primit soluția corectă la prima încercare; Primul a petrecut trei ture. Diferența nu a fost în model, ci în intrare.
Patru șabloane copiabile
Un prompt de pornire puternic, de uz general:
Rol: sunteți un dezvoltator {{limbă}} cu experiență. Sarcină: {{what_want}}Context:- Cadrul/versiunea: {{cadru_și_versiune}}- Constrângeri: {{performanță, stil, reguli de dependență}} Reguli:- Nu utilizați bibliotecă/funcție inexistentă; Dacă nu sunteți sigur, marcați-l ca „verificare”. - Mai întâi, dați un plan scurt, apoi codul, apoi 2 propoziții de justificare. - Produceți cod de lucru testabil.
Pentru a filtra incertitudinea înapoi în model:
Înainte de a rezolva sarcina de mai jos, enumerați cel puțin 3 puncte pe care le găsiți lipsă sau neclare ca întrebări. NU scrie cod înainte să răspund. Sarcină: {{sarcină}}
Pentru ca ieșirea să fie verificată automat:
Ați produs următorul cod. Acum schimbați-vă rolul și criticați acest cod:- Enumerați 3 cazuri (cazuri marginale) care ar putea să nu funcționeze.- Există API-uri/funcții pe care le-ați fi putut inventa? Marcați.- Dați versiunea corectată.Cod:{{code}}
Pentru a împărți o decizie în opțiuni:
Sugerați 2-3 soluții pentru {{problema}}. Pentru fiecare: descriere scurtă, plus/minus, când să alegeți. Dați sub formă tabelară. NU alegeți pentru mine; clarifica doar varianta.
Prompt slab / Prompt puternic
Slab: „Remediați eroarea din acest cod”. (Ce eroare? În ce limbă? Care este comportamentul așteptat?)
Puternic: „Python 3.11 / FastAPI 0.110. Următorul punct final returnează 500 cu KeyError când corpul cererii este gol; vreau să returneze 400 și un mesaj semnificativ pe corpul gol. Mai întâi explicați motivul, apoi dați funcția corectată, apoi scrieți un test pentru acest scenariu. [cod]"
Versiune puternică; Oferă limba, versiunea, eroarea reală, comportamentul așteptat și formatul de ieșire. Modelul nu mai trebuie să prezică.
Greșeli comune
- Încredere fără verificare. Cea mai frecventă și mai scumpă greșeală. Nu spuneți „rezolvat” până când codul nu este compilat și testat.
- Pune întrebări fără context. Răspunsul fără versiune, text de eroare și restricții este generic și adesea greșit.
- O cerere uriașă. Neputând solicita și revizui o producție de 300 de linii deodată face greșelile invizibile.
- Confundând încrederea în sine a modelului ca dovadă. AI poate spune cu încredere ceva greșit; Tonul nu este un indicator al preciziei.
- Lipirea aleatorie a secretului companiei. Cheile private, datele clienților sau codul sursă privat nu trebuie introduse în instrumente neaprobate (vom aprofunda acest subiect în unitatea 10).
Sfat: tratați fiecare ieșire AI ca „aceasta este o schiță”. Acest obicei mental unic stinge majoritatea riscurilor pe care le veți vedea pe parcursul modulului.
Pe scurt
Un asistent de codificare este un model de limbaj care prezice următorul fragment cel mai probabil; Nu înțelege codul, produce modele. De aceea este puternic în joburi repetitive, formulate; Ar trebui să fie utilizat cu prudență pentru lucrări care necesită o verificare specifică contextului dvs. Cel mai mare risc este halucinația, iar singurul antidot este verificarea. Disciplina pe care o vom urma pe parcursul întregului modul este clară: clarificați sarcina, oferiți context, cereți puțin, validați fiecare livrabil.
Sarcina de aplicare
Notați trei sarcini software pe care le-ați efectuat în ultima săptămână (de exemplu, o remediere a erorilor, un test, o actualizare README). Priviți „harta punctelor forte și a punctelor slabe” pentru fiecare și descrieți într-o singură propoziție care ar fi rolul dvs. și al AI dacă ați avea AI-ul să facă asta. Apoi dați una dintre aceste sarcini AI cu șablonul „prompt de pornire” de mai sus și rulați și verificați rezultatul; Observați câte minute ați salvat și câte greșeli a trebuit să remediați.
lista de verificare
- [ ] Mi-am dat seama că LLM produce modele, nu „înțelege” cod.
- [ ] Pot explica conceptele de token, fereastră de context și prompt într-o singură propoziție.
- [ ] Pot distinge între tipurile de sarcini în care AI este puternică și slabă.
- [ ] Știu ce este o halucinație și singurul antidot este verificarea.
- [ ] Am adaptat ciclul „propune, produce, verific” la propria mea sarcină.
- [ ] Pot arăta diferența dintre un prompt puternic și un prompt slab într-un exemplu concret.