Nyereség:
- Képes elmagyarázni, hogyan működik a kódoló asszisztens nyelvi modellként, valamint a token, a kontextusablak és a hallucináció fogalmai
- Mentális térkép segítségével képes megkülönböztetni a szoftveres feladatokat, ahol az AI erős és gyenge
- Képes a javaslat-előállítás-ellenőrzés alapvető munkaciklust saját feladataira alkalmazni
Egy szoftverfejlesztő napja ritkán telik azzal, hogy "a semmiből kódot ír". Valós idejű; Valaki más által írt kód beolvasása, hiba reprodukálása, a napló szkennelése (az alkalmazás által futás közben előállított naplósorok), tesztek írása, PR (pull request - összevonási kérelem, ahol a kódmódosítást csapatellenőrzésre küldik) magyarázata és a dokumentáció frissítése. A mesterséges intelligencia (AI) egy sebességsokszorozó, amely szinte az összes ilyen láthatatlan feladatot képes megérinteni. De a biztonságos használat első feltétele az, hogy helyesen megértsük, mi ez és mi nem.
Ebben az egységben először közérthető nyelven magyarázzuk el a kódolási asszisztens mögöttes technológiát; majd mentális térképet készítünk a modell erősségeiről és gyengeségeiről; Végül meghatározzuk az alapvető munkafegyelmet, amelyet a teljes modul során alkalmazni fogunk: javaslattétel, előállítás, ellenőrzés. Ez a három lépés képezi a következő tizenegy egység gerincét.
Megjegyzés: Ez a modul egy általános képzés. A biztonság szempontjából kritikus szoftverekben (fizetésfeldolgozás, egészségügyi ellátás, hitelesítés, kritikus infrastruktúra) az AI-kimenet nem helyettesíti a képzett mérnök általi felülvizsgálatot és jóváhagyást. Az AI egy asszisztens; Az aláíró a mérnök.
Mit csinál valójában egy kódolási asszisztens?
A legtöbb kódoló asszisztens egy nagy nyelvi modellre épül (LLM – egy hatalmas mennyiségű szövegre és kódra kiképzett mesterséges intelligencia, amely előrejelzi a következő legvalószínűbb „darabot”). A modell nem „érti” a kódot, mint egy ember; Ez generálja az Ön által megadott kontextus legvalószínűbb folytatását a példák hatalmas halmazából tanult minták alapján. Ez a látszólag egyszerű mechanizmus meglepően profi eredményeket hoz a gyakorlatban – mivel a legtöbb szoftver ismétlődő mintákból áll: HTTP kérés, hurok, null ellenőrzés, tesztminta.
Három kifejezés itt kritikus. A token a legkisebb egység, amelyet a modell a szöveg felosztásával dolgoz fel; Ez nagyjából néhány betű vagy egy szó egy része. A kontextusablak az a tokenek mennyisége, amelyet a modell egyszerre „láthat”; A kódnak, a hibaüzenetnek és az utasításnak bele kell férnie ebbe az ablakba. A prompt a modellhez adott összes utasítás és kontextus. A kapott kimenet minősége közvetlenül ettől a kettőtől függ: minél jobb kontextust és világosabb utasításokat ad a modellnek, annál jobb eredményt fog elérni. A rossz bemenet rossz kimenetet produkál, még ha intelligens modellről is van szó – a szoftver klasszikus „szemetet be, szemetet ki” szabálya az AI-ra is vonatkozik.
Erősségek és gyengeségek térképe
Ahhoz, hogy a mesterséges intelligencia a megfelelő munkákra irányítsa, tudnia kell, hol ragyog és hol botlik meg. Ennek a térképnek a memorizálása minden következő küldetésnél elgondolkodtat: "Kiszervezzem ezt a munkát az MI-nek, vagy magam csináljam meg?" Lehetővé teszi, hogy másodpercek alatt válaszoljon a kérdésre.
Erősségei: Boxplate kód generálása, fordítás egyik nyelvről a másikra, reguláris kifejezés (regex) írása, függvény leírása, tesztváz létrehozása, hibaüzenet értelmezése, dokumentáció készítése, változó/függvénynevek javaslata, kisebb átalakítások (a kód szerkezetének javítása a viselkedés megváltoztatása nélkül).
Gyengeségek: A cégspecifikus üzleti szabályok ismerete, a teljes kódbázis emlékezése, a kód tényleges futtatása és ellenőrzése, a legfrissebb könyvtári verziók biztos ismerete, a biztonsági rések felderítése száz százalékos garanciával. A legveszélyesebb a hallucináció: a modell egy nem létező függvényt, könyvtárat vagy API-t (az alkalmazások közötti adatcserét lehetővé tevő interfészt) talál ki nagyon meggyőző nyelven. Ezt a kockázatot tulajdonképpen a maga javára fordíthatja, mivel a kód, az egyszerű szöveggel ellentétben, tesztelhető, hogy „működik-e” – csak ne hagyja ki az ellenőrzési lépést.
Küldetés típusa
Az AI szerepe
férfi szerepe
Készítsen kazánlemezt/csontvázat
huzatot termel
Alkalmazkodik, felülvizsgálja
Kód leírása
Gyors összefoglalót ad
Ellenőrzi a kód kritikus részét
tesztek írása
Case azt sugallja
Megerősíti a lefedettséget és a pontosságot
Biztonságkritikus logika
hasznos ötlet
A döntés és a felelősség teljes mértékben az embereken múlik.
API/könyvtárhasználat
Minta generál
Ellenőrzi a létezést és a verziót
építészeti döntés
Különféle lehetőségek
A kontextus ismeretében kiválaszt és védekezik
Lépésről lépésre: Alap munkaciklus
- Tisztázza a feladatot. Ha nem tudod egy mondatban leírni, amit akarsz, akkor a modell sem. Minél korábban szivárog be a bizonytalanság az inputba, annál nagyobb lesz a kimenetben.
- Adjon kontextust. Adja hozzá a megfelelő kódot, a teljes hibaüzenetet, a nyelvi/keretrendszer-verziót és a megszorításokat a prompthoz. Ne azt mondja, hogy "javítsa ezt", hanem azt, hogy "Python 3.11, FastAPI 0.110; ez a függvény 500-as hibát ad, felrobban, ha a kérés törzse üres".
- Kivetési szerep és formátum. Egy olyan keretrendszer, mint például: „Ön vezető Go-fejlesztő; csak adja meg a kódot, és egy kétmondatos indoklás” összpontosítja a kimenetet.
- Kérj kicsiket. Bontsd le lépésekre, nem pedig egy óriási kérésre; Ellenőrizze az egyes lépéseket külön-külön. A nagyobb változtatások kockázatosak, mert nehezen ellenőrizhetők, és hajlamosak a hibák elrejtésére.
- Ellenőrizze. Futtassa, tesztelje, olvassa el vizuálisan. A nem ellenőrzött mesterséges intelligencia kód „vázlat”, nem „megoldás”. Ez a ciklus leginkább nem tárgyalható lépése.
Három mini tok
1. eset – Az időmegtakarítás valós, de szerény. Amikor egy csapat új CRUD (Létrehozás-Olvasás-Frissítés-Törlés) végpontokat vázolt fel mesterséges intelligencia segítségével, az első vázlat ideje körülbelül 40 percről 8 percre csökkent. Áttekintéssel és teszteléssel azonban a teljes idő 25 perc volt; így a valódi nyereség 40-25, körülbelül 38%. Ez az arány a „10-szeres gyorsulást” elvárás helyett mérve fenntartható nyereség.
2. eset – A hallucináció költséges. Egy fejlesztő az AI által javasolt requests.get_json() hívást érvényesítés nélkül használta; Nem volt ilyen módszer (precízen response.json()). 20 perc veszett el, amikor nem sikerült lefordítani a kódot. Egy egyszerű "valóban létezik ez a módszer?" az ellenőrzés visszaállítja a veszteséget.
3. eset – A jó kontextus megduplázza a kimenetet. Ugyanerre a hibára az egyik fejlesztő egyszerűen azt írta, hogy „Hibát kapok”, a másik pedig hozzáadta a teljes verem nyomkövetését, verzióját és bemeneti mintáját. Utóbbi első próbálkozásra megkapta a helyes megoldást; Az első három kört töltött. A különbség nem a modellben volt, hanem a bemenetben.
Négy másolható sablon
Általános célú, hatékony indítási prompt:
Szerep: Ön tapasztalt {{language}} fejlesztő.Feladat: {{what_want}}Környezet:- Keret/verzió: {{framework_and_version}}- Megszorítások: {{teljesítmény, stílus, függőségi szabályok}}Szabályok:- Ne használjon nem létező könyvtárat/függvényt; Ha nem biztos benne, jelölje be "ellenőrzésként". - Először adj egy rövid tervet, majd a kódot, majd 2 mondatos indoklást. - Tesztelhető, működő kód készítése.
A bizonytalanság visszaszűréséhez a modellbe:
Az alábbi feladat megoldása előtt kérdésként soroljon fel LEGALÁBB 3 pontot, amelyet hiányzónak vagy nem egyértelműnek talál. NE írjon kódot, mielőtt válaszolok. Feladat: {{feladat}}
A kimenet önellenőrzéséhez:
Ön elkészítette a következő kódot. Most változtassa meg szerepét, és bírálja ezt a kódot: - Soroljon fel 3 esetet (éles esetek), amelyek esetleg nem működnek. - Vannak olyan API-k/funkciók, amelyeket kitalálhatott volna? Mark.- Adja meg a javított verziót.Kód:{{code}}
A döntés opciókra bontása:
Javasoljon 2-3 megoldási megközelítést a következőre: {{problem}}. Mindegyikhez: rövid leírás, plusz/mínusz, mikor kell választani. Táblázatos formában adja meg. NE válassz nekem; csak tisztázza a lehetőséget.
Gyenge felszólítás / Erős felszólítás
Gyenge: "Javítsa ki a kód hibáját." (Melyik hiba? Melyik nyelv? Mi a várható viselkedés?)
Erős: "Python 3.11 / FastAPI 0.110. A következő végpont 500-at ad vissza KeyError-ral, amikor a kérés törzse üres; azt akarom, hogy 400-at adjon vissza, és értelmes üzenetet az üres törzsben. Először magyarázza el az okot, majd adja meg a javított függvényt, majd írjon tesztet ehhez a forgatókönyvhöz. [kód]"
Erőteljes változat; Megadja a nyelvet, a verziót, a tényleges hibát, a várható viselkedést és a kimeneti formátumot. A modellnek már nem kell előre jeleznie.
Gyakori hibák
- Bizalom ellenőrzés nélkül. A leggyakoribb és legdrágább hiba. Ne mondja azt, hogy „megoldva”, amíg a kódot le nem fordítják és tesztelik.
- Kontextus nélküli kérdések feltevése. A verzió, hibaszöveg és korlátozások nélküli válasz általános és gyakran rossz.
- Egy hatalmas kérés. Ha nem tud egyszerre kérni és felülvizsgálni egy 300 soros produkciót, az láthatatlanná teszi a hibákat.
- A modell önbizalmának félreértése bizonyítékként. Az AI magabiztosan tud rosszat mondani; A hangszín nem a pontosság mutatója.
- Véletlenszerűen beillesztve a cég titkát. A magánkulcsokat, az ügyféladatokat vagy a privát forráskódot nem szabad nem jóváhagyott eszközökbe bevinni (a témával a 10. részben foglalkozunk).
Tipp: Minden mesterséges intelligencia kimenetet „ez egy piszkozat”ként kezeljen. Ez az egyetlen mentális szokás kioltja a legtöbb kockázatot, amelyet a modul során látni fog.
Összefoglalva
A kódolási asszisztens egy olyan nyelvi modell, amely megjósolja a következő legvalószínűbb töredéket; Nem érti a kódot, mintákat gyárt. Ezért erős az ismétlődő, képletes munkákban; Óvatosan kell használni olyan munkákhoz, amelyek a kontextusnak megfelelő ellenőrzést igényelnek. A legnagyobb kockázatot a hallucináció jelenti, és az egyetlen ellenszer a verifikáció. A fegyelem, amelyet a teljes modul során követni fogunk, egyértelmű: tisztázza a feladatot, adja meg a kontextust, kérjen apróságot, érvényesítsen minden egyes teljesítést.
Pályázati feladat
Írjon le három szoftverfeladatot, amelyet az elmúlt héten végzett (pl. hibajavítás, teszt, README frissítés). Tekintse meg mindegyiknél az „erősségek és gyengeségek térképét”, és írja le egy mondatban, hogy mi lenne a te és a mesterséges intelligencia szerepe, ha ezt megtenné az MI. Ezután adja meg a fenti feladatok egyikét az AI-nak a fenti „start prompt” sablonnal, majd futtassa és ellenőrizze a kimenetet; Jegyezze fel, hány percet spórolt meg, és hány hibát kellett kijavítania.
ellenőrző lista
- [ ] Rájöttem, hogy az LLM mintákat állít elő, nem a kódot "érti".
- [ ] Egy mondatban el tudom magyarázni a token, a kontextusablak és a prompt fogalmát.
- [ ] Meg tudom különböztetni az olyan típusú feladatokat, ahol az AI erős és gyenge.
- [ ] Tudom, mi a hallucináció, és az egyetlen ellenszer a verifikáció.
- [ ] A "javaslat, előállítás, ellenőrzés" ciklust a saját feladatomhoz igazítottam.
- [ ] Konkrét példában meg tudom mutatni a különbséget az erős és a gyenge prompt között.