Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
post

Az új kódolási paradigma

MEGOSZTÁS

A nagy nyelvi modellek (LLM) által működtetett generatív MI sok programozó megélhetését felboríthatja. Egyes szakértők szerint azonban a mesterséges intelligencia nem fogja helyettesíteni az emberi programozókat - legalábbis nem azonnal.

(Kiemelt kép: Unsplash)

A komoly pletykák közepette, miszerint a GPT-4 kódolási képességei veszítenek pontosságukból, amint azt a Stanford és a Berkeley egyetemek is bizonyították, a Meta bejelentette a Code LLaMa, a kódkiegészítésre specializálódott LLM-család kiadását. A lenyűgöző teljesítmény mellett egy sor olyan izgalmas funkciót is beépítettek, melyek a Code LLaMa-t a legtöbb programozó számára alapértelmezett választássá teszik. És ami a legjobb az egészben, hogy teljesen ingyenesen használható mind kutatási, mind kereskedelmi célokra. Open-Source to Rule Them All? Amióta a Meta beleugrott a Generatív MI őrületbe, úgy döntöttek, hogy másképp csinálják a dolgokat, mint a többi „nagy tech“ cég. Ennek a sava és borsát a nyílt forráskódú megközelítés jelenti elsősorban. Míg a Microsoft 10 milliárdot fektetett be az OpenAI-ba, hogy előnyben részesüljön a modelljeikhez való hozzáféréshez, és gyakorlatilag minden létező Microsoft-szoftverbe beágyazza a ChatGPT-t, a Meta sokkal merészebb álláspontot választott.

Az új kódolási paradigma
A lenyűgöző teljesítmény mellett egy sor olyan izgalmas funkciót is beépítettek, melyek a Code LLaMa-t a legtöbb programozó számára alapértelmezett választássá teszik. És ami a legjobb az egészben, hogy teljesen ingyenesen használható mind kutatási, mind kereskedelmi célokra (Fotó: Unsplash+)

Yann LeCun, a vállalat vezető mesterséges intelligencia kutatóját nemcsak, hogy úgy tűnt, egyáltalán nem zavarják az LLM-ek képességei, de rendkívül sóvárogva nyilatkozott az ezen eszközökre és az általuk szuperintelligenciának nevezett képességükre vonatkozó előrejelzésekről. Sőt meg van győződve arról is, hogy a nyílt forráskódú megoldások végül győzni fognak az olyan magán megoldások felett, mint a ChatGPT. Következésképpen a Meta megközelítése a mesterséges intelligenciával kapcsolatban az, hogy az MI-val kapcsolatos munkájuk nagy részét közzéteszik. A hivatalos indok? Mert úgy érzik, hogy egy ilyen „bomlasztó“ technológiának nyílt forráskódúnak kell lennie. A valószínű valódi ok? Biztosítani akarják, hogy a Földön egyetlen vállalat se alakítson ki „várárkot“ az MI körül, azáltal, hogy az ilyen csúcstechnológiai megoldások létrehozásához szükséges tudás nyilvánossá válik (és állítólag marad is).

Ha például a Microsoft vagy az OpenAI a zárt forráskódú új modelljét elindítja, és három héttel később a Meta piacra dob egy nyílt forráskódú verziót, mely teljesítményét tekintve „elég közel van hozzá“, így akkor a technológiai árkot már nem lehet használni. Természetesen más módon is kialakíthatnak várárkokat (kulcsfontosságú saját adatok, nagyszerű UI/UX-élményt nyújtó termékek vagy hálózati hatások), de egy dolog biztos: nem lesz elég, ha kiváló mesterséges intelligenciával rendelkezik egy cég, mert a legtöbb versenytársadnak is lesz valami hasonló „találmánya“. És most, az LLaMa 2 kiadása után egy lépéssel tovább vitték ezt a megközelítést: az LLaMa 2 modelleket új, kifejezetten a kódolásra szánt nagy nyelvi modellekké (Large Language Models, LLM) finomhangolják. Az eredmények pedig igencsak lenyűgözőek.

Az új kódolási paradigma
Amióta a Meta beleugrott a Generatív MI őrületbe, úgy döntöttek, hogy másképp csinálják a dolgokat, mint a többi „nagy tech“ cég (Fotó: Unsplash+)

Hogyan maradhatnak életben a kódolók egy ChatGPT által ural világban?

A nagy nyelvi modellek (LLM) által működtetett generatív MI sok programozó megélhetését felboríthatja. Egyes szakértők szerint azonban a mesterséges intelligencia nem fogja helyettesíteni teljesen (és kiváltani) az emberi programozókat (legalábbis nem azonnal). Hogyan tehetik tehát a szoftverfejlesztők magukat hasznosabbá és relevánsabbá az LLM-központú kódolás eljövendő korszakának időszakában? Íme néhány tipp és technika a programozók számára, hogy túléljenek és boldoguljanak a generatív mesterséges intelligencia világában.

Maradjunk az alapoknál

Bár a számtalan MI-alapú kódolási asszisztens segíthet a kódkiegészítésben és kódgenerálásban, a programozás alapjai továbbra is megmaradnak: a saját és mások kódjának olvasása és értelmezése, valamint annak megértése, hogy az általunk írt kód hogyan illeszkedik egy nagyobb rendszerbe. Az egyik leglényegesebb programozási készség továbbra is az emberi programozók területe: a problémamegoldás. Egy probléma elemzése és annak elegáns megoldása még mindig nagyra becsült kódolási szakértelem. Ennek van egy kreatív aspektusa, és a probléma megközelítésének sok ilyen készsége fontosabb, mint a tényleges nyelv vagy eszköz. Ne essünk abba a csapdába, hogy összehasonlítjuk magunkat a mesterséges intelligenciával, mely többé-kevésbé egy nagy modell statisztikai kimenete. Különbségek vannak abban, amit egy fejlesztő csinál, szemben azzal, amit a modell kiad, fejlesztőnek lenni mindig több, mint tetszőleges kódsorok írása.

Emellett a jó szoftverfejlesztői gyakorlatok még értékesebbnek bizonyulnak, mint korábban. Ezek közé a gyakorlatok közé tartozik a rendszertervezés és a szoftverarchitektúra megtervezése, ami jó kontextusként szolgál az MI-alapú eszközök számára, hogy hatékonyabban megjósolhassák, milyen kódra van szükség a következőkben. Még mindig az emberi kódoló az, akinek ki kell találnia egy kódrészlet szerkezetét, a megfelelő absztrakciókat, melyek köré szervezni kell, és a különböző interfészek követelményeit. Mindezek központi szerepet játszanak a szoftvermérnöki gyakorlatban, és nem fognak egyhamar eltűnni.

Az új kódolási paradigma
A jó szoftverfejlesztői gyakorlatok még értékesebbnek bizonyulnak, mint korábban. Ezek közé a gyakorlatok közé tartozik a rendszertervezés és a szoftverarchitektúra megtervezése, ami jó kontextusként szolgál az MI-alapú eszközök számára, hogy hatékonyabban megjósolhassák, milyen kódra van szükség a következőkben (Fotó: Unsplash+)

Találjuk meg az igényeinknek megfelelő eszközt

A megfelelő MI-alapú eszköz megtalálása alapvető fontosságú. Minden eszköznek megvannak a maga módszerei a vele való interakcióra, és különböző módjai vannak az egyes eszközöknek a fejlesztési munkafolyamatba való beépítésére (legyen szó akár a unit tesztek létrehozásának automatizálásáról, a tesztadatok generálásáról vagy a dokumentáció megírásáról). A GitHub Copilot és más MI-kódolási asszisztensek például kiegészíthetik a programozást, javaslatokat kínálva kódolás közben. A ChatGPT és a Google Bard viszont inkább beszélgető MI-programozóként viselkedik, és az API-kkal (alkalmazásprogramozási interfészekkel) kapcsolatos kérdésekre való válaszadásra vagy kódrészletek generálására használható. A trükk a kísérletezésben rejlik. Játsszunk az MI-eszközzel, szerezzünk gyakorlatot a működésében, mérlegeljük a kimenetek minőségét, de maradjunk nyitottak más eszközökre is. A mesterséges intelligencia gyorsan változó terület. Nem akarhatunk csak úgy megállapodni egy eszköz mellett, és aztán egész életünkben csak azt használni, ezért gyorsan kell alkalmazkodnunk az újakhoz. Gondoljunk a megfelelő felhasználási esetekre is. A generatív MI-eszközök gyors utat biztosíthatnak az új programozási nyelvek vagy keretrendszerek elsajátításához, és gyorsabb módot jelenthetnek a kisebb projektek elindításához és prototípusok létrehozásához is.

Az új kódolási paradigma
A trükk a kísérletezésben rejlik. Játsszunk az MI-eszközzel, szerezzünk gyakorlatot a működésében, mérlegeljük a kimenetek minőségét, de maradjunk nyitottak más eszközökre is (Fotó: Unsplash+)

Az egyértelmű diskurzus kulcsfontosságú

Az MI kódolási asszisztensek használatakor részletesen fogalmazzuk meg, hogy mire van szükségünk, és tekintsünk rá iteratív folyamatként. Írjunk egy megjegyzést, melyben elmagyarázzuk, milyen kódot szeretnénk, hogy az asszisztensek releváns javaslatokat tudjanak generálni, melyek megfelelnek az igényeinknek. A beszélgető MI-programozóknak tudniuk kell, hogyan lehet a legjobban megfogalmazni a kéréseket. Itt jön a képbe a prompt engineering. Az egyik megközelítés, melyet sokan javasolnak, ez a gondolatlánc-alapú prompting. Ez egy olyan oszd meg és uralkodj stratégiát foglal magában, ahol egy problémát több lépésre bontunk, és az egyes lépésekkel a teljes probléma megoldása érdekében foglalkozunk. Ha a modelltől egyszerre túl sokat kérünk, az katasztrófához vezethet. Azt akarjuk, hogy a modell képes legyen kezelhető mennyiségű információval dolgozni és kezelhető mennyiségű kódot előállítani.

Ahelyett, hogy például egy MI-programozót arra kérnénk, hogy a semmiből kódoljon le egy teljes programot, vegyük figyelembe a különböző feladatokat, melyeket a program el akar végezni. Osszuk tovább ezeket a feladatokat, és kérjük meg a modellt, hogy mindegyikhez írjon konkrét funkciókat. Előfordulhat, hogy érvelnünk kell a modellnek a feladat eléréséhez szükséges lépésekről, ami oda-vissza beszélgetést eredményez. Kezeljük majdnem úgy, mint egy okos gyakornokot, aki sokat tud egy témáról, de nem annyira tapasztalt. A pontosság és az egyértelműség elengedhetetlen a prompt mérnöki munka során. Nagyon világosan meg kell kérdezni a modelltől, hogy mit szeretne, nagyon pontosan meg kell határoznia, hogy mit kérünk tőle, és gondoskodni kell arról, hogy nyomon is kövessen mindent. Az is értékes lehet, ha megtanuljuk a mesterséges intelligencia és a gépi tanulás alapfogalmait, valamint ráérezzünk a nagy nyelvi modellek működésére, erősségeire és gyengeségeire. Nem kell mélyre merülni, de némi általános ismeret birtokában fontos kontextust kaphatunk az eredményekkel kapcsolatban.

Az új kódolási paradigma
A pontosság és az egyértelműség elengedhetetlen a prompt mérnöki munka során. Nagyon világosan meg kell kérdezni a modelltől, hogy mit szeretne, nagyon pontosan meg kell határoznia, hogy mit kérünk tőle, és gondoskodni kell arról, hogy nyomon is kövessen mindent (Fotó: Unsplash+)

Éljünk kritikával és értsük meg a kockázatokat

A szoftvermérnököknek kritikusnak kell lenniük a nagy nyelvi modellek kimeneteit illetően, mivel hajlamosak hallucinálni, és pontatlan vagy hibás kódot produkálni. Könnyű beleragadni egy hibakeresési nyúlüregbe, ha vakon használjuk az MI által generált kódot, és a finom hibákat nehéz lehet kiszúrni. Ezért kulcsfontosságú a generált kód ellenőrzése, bár ez egy plusz lépést jelent, ami inkább árthat, mint segíthet a termelékenységnek. Bizonyos esetekben könnyebb ellenőrizni a kódot, mint a nulláról megírni, és gyorsabb megközelítés a generálás, majd az ellenőrzés, mielőtt beépítjük bármilyen kódbázisba. Érdemes lehet perspektívába helyezni ezeknek a modelleknek a kimeneteit, és feltenni a következő kérdéseket: Milyen adatokon képezték ezt a modellt? Mit szűrtek ki és mit nem vettek bele ezekbe az adatokba? Milyen régi a képzési adat, és egy programozási nyelv, szoftvercsomag vagy könyvtár melyik verzióján képezték a modellt? Az ezekre a kérdésekre adott válaszok hatással lehetnek az eredményekre, és több kontextust adhatnak róluk.

Az új kódolási paradigma
Bizonyos esetekben könnyebb ellenőrizni a kódot, mint a nulláról megírni, és gyorsabb megközelítés a generálás, majd az ellenőrzés, mielőtt beépítjük bármilyen kódbázisba (Fotó: Unsplash+)

A fejlesztőknek óvakodniuk kell attól is, hogy saját kódot adjanak be ezekbe a modellekbe. Néhány vállalat, például a Tabnine, vállalati verziót kínál az MI kódolási asszisztenseiből, mely adatvédelmi lehetőséget biztosít, miközben megismeri a szervezet kódolási mintáit és stílusát. A szerzői jog egy másik tényező, melyet figyelembe kell venni, bár ez kevésbé aggasztó, ha ezeket az eszközöket néhány sor kód befejezésére vagy általános vagy triviális feladatok kódgenerálására használjuk, mintha nagyobb kóddarabokat készítenénk. A programozóknak valamilyen szinten érezniük kell, hogy mennyire eredeti az, amit tenni próbálnak, és milyen mértékben egyedi az adott kontextusban. Ha a modell egy némileg eredeti kóddarabot állít elő, fontos, hogy gyanakvóak és szkeptikusak legyünk, mielőtt azt a produktív kódbázisba helyezzük.

Az új kódolási paradigma
A programozóknak valamilyen szinten érezniük kell, hogy mennyire eredeti az, amit tenni próbálnak, és milyen mértékben egyedi az adott kontextusban (Fotó: Unsplash+)

Még nagyobb kérdés a biztonság, mivel ezek a modellek sebezhetőségeket tartalmazó kódot generálhatnak. A szoftverfejlesztés legjobb gyakorlatai, például a kódellenőrzések és az erős tesztelési csővezetékek segíthetnek megvédeni ezt a kockázatot. Az egyik dolog, amit a tapasztaltabb szoftvermérnökök az asztalra tesznek, hogy tisztában vannak a kód leggyakoribb sebezhetőségével és a kód sebezhetővé tételének leggyakoribb módjaival. Ők megérzik, hogy mire kell figyelni, és mi az, ami piros zászlót vet fel. A jövőben az ilyen jellegű technikák egyre fontosabb részévé válnak a szoftverfejlesztésnek. Ahhoz, hogy a programozók túlélhessenek a generatív mesterséges intelligencia világában, el kell fogadniuk a mesterséges intelligenciát mint eszközt, és be kell építeniük azt a munkafolyamatukba, miközben felismerik ezen eszközök lehetőségeit és korlátait és továbbra is az emberi kódolási képességeikre támaszkodva boldogulnak.

Az új kódolási paradigma

PODCAST

ICT Global News

VIDEOGALÉRIA
FOTÓGALÉRIA

Legnépszerűbb cikkek