Az AI alkalmazásának 4 szintje a szoftverfejlesztésben

Milyen út vezet az AI felhasználástól az AI fejlesztésig?
Máriás Zsigmond

Máriás Zsigmond

CEO, IT fejlesztési specialista

A generatív chat eszközök megjelenése tette divatossá és központi témává az AI alkalmazását a szoftverekben. Szinte naponta találkozunk azzal az kérdéssel, hogy ha valaki létre akar hozni egy új szoftverterméket, akkor az AI "segítségével" vagy "beépítésével" mit tud elérni, és ehhez mire van ehhez szüksége. A LogiNetnél meghatároztunk 4 alkalmazási szintet, amely segít eligazodni ebben a kérdésben.


1. AI a gyártásban - a szoftver gyártástechnológiájának következő szintje

Ezen a szinten arról beszélünk, hogy AI eszközöket használunk a fejlesztői produktivitás növelése érdekében. Maga a fejlesztett szoftver bármi lehet, nem kerül bele szükségszerűen AI alapú funkció. Mivel a programozás végeredménye a kód, ami egy speciális szöveg, ezért logikus, hogy a gyártásnak ezt a részét gyorsítsuk AI eszközökkel. 

Mikor érdemes használni a fejlesztésben?

A kódolás bizonyos részei nagyon kreatívak, és a legnagyobb hozzáadott érték itt jön létre. Ezek a tervezési részek, amikor megtervezik hogyan épüljön fel a fejlesztett rendszer. Ezeket nem érdemes automatizálni. 

A kódolás bizonyos részei viszont ismétlődnek, nem különösebben kreatívak, sokszor csak "intelligens copy-paste"-ről van szó. Ilyen lehet például a boilerplate kódok előállítása, tesztelés, refaktoring, dokumentáció. A nagy nyelvi modell alapú generatív AI az ilyen félig kreatív szövegcentrikus feladatokhoz a legjobb, erre bátran használjunk AI segédeszközöket. Ezeket code assistantnak hívják, és jó pár elérhető a piacon, mint például a Github Copilot, Tabnine, Jetbrains AI Assistant. Ezek alkalmazása a szoftver gyártástechnológia kontextusában értelmezendő.

Mit érhetünk el vele? 

A rövid válasz a produktivitás növekedése, amely 20-50-100% lehet különböző tanulmányok szerint. “A LogiNet tapasztalatai szerint ez leginkább a feladat jellegétől függ. Az intelligens copy-paste feladatoknál hihetőnek tűnik a 100%, általánosságban azonban inkább 20-30% között mozog” - emelte ki Máriás Zsigmond, a LogiNet Systems Kft. ügyvezetője.

Milyen veszélyei lehetnek? 

Van azonban pár megfontolandó veszély is, amelyből a két legfontosabbat emelném ki.

A coding assistant segít abban, hogy a fejlesztő gyorsabban csinálja azt, amit csinál. Ennek következménye, hogy ha butaságot csinál, akkor azt is gyorsabban és produktívabban fogja csinálni, aminek beláthatatlan következményei lehetnek.

A másik probléma, hogy a kódkiegészítések, amelyeket ezek az eszközök generálnak, hibázhatnak. Nagyon veszélyes megértés nélkül elfogadni a javaslatot, még rosszabb, ha nem is értjük mit generált. Juniorok kezében mindez különösen veszélyes mind a projektre, mind a fejlesztőre nézve, ezért nem is szerencsés ezt a folyamatot junior fejlesztőkre bízni. 

Rengeteg egyéb tényező és lehetőség, például nyílt forrású asszisztensek vannak, de a lényeg, hogy ezeket az eszközöket megfelelően használva biztonságosan időt spórolhatunk, használatához semmilyen különösebb AI tudás nem kell.


2. szint - API-k és Prompt engineering használata

Az AI használatának második szintjén már a termékbe építjük az AI-t. Itt arról beszélünk, hogy egy digitális termék - pl. mobil app, webes szolgáltatás - fejlesztésében jól meghatározott részfeladatokra mások AI termékét API-n keresztül használjuk.

Mikor érdemes használni a fejlesztésben? 

Ezt a megközelítést akkor érdemes használni, ha a termékünk AI nélkül is teljes és életképes, gyors eredményre van szükségünk, de nincs komolyabb AI kompetenciánk, és nem várunk tanulást, javulást a rendszertől.

Az API szolgáltatások demokratizálják az AI alkalmazások fejlesztését a belépés egyszerűsítésével. Mindez jó, de ne várjuk, hogy egy-két API bekötésével és promptolásával egy komolyabb problémát konzisztensen megoldó alkalmazást csinálunk, ha mégis, akkor az eredmény könnyen reprodukálható.

Tudnunk kell, hogy korlátozott, amit elérhetünk ezzel. Talán a legfontosabb, hogy ebben az esetben az a tudás van a rendszerben, amelyet az eszköz gyártója a tanítás során "bele tett", a miénk csak korlátozottan, a promptra kiterjedően van jelen, amelynek a mérete egyébként az újabb termékekben növekszik.

Ehhez a szinthez általános fejlesztői tudás és prompt engineering tapasztalat szükséges, ami a józan észen, szisztematikus próbálgatáson és a használt eszköz kiismerésén alapszik. A legtöbb esetben ezt értik AI fejlesztés alatt.

Milyen veszélyei lehetnek? 

A legfontosabb a platform kockázat: az általunk igénybe vett modellek és a rá épülő szolgáltatás használati feltételei, tulajdonságai ugyanis hátrányosan megváltozhatnak. A másik a jogi kockázatok kérdése: akaratunkon kívül felhasználhatunk jogvédett anyagokat, és az adatainkat vagy ügyfeleink adatait tréning adatként használhatják az igénybe vett szolgáltatás fejlesztéséhez.


3. szint - AI stack kialakítása

Ha az előző szint korlátaiba beleütköztünk, és egy-egy API és prompt engineering már nem elég, akkor a következő szintre kell lépni.

Jellemzően az a cél, hogy egy digitális termék fejlesztésében több AI termék és technológia beépítésével, finomhangolásával és együttműködésük megteremtésével egy egyébként is életképes terméket AI funkciókkal szignifikánsan jobbá, többé tegyünk. Itt már célunk lehet, hogy szignifikáns specifikus tudást tegyünk a rendszerünkbe, valamint megjelenik a visszacsatolás, fejlődés, javulás lehetősége is. Összességében úgy fogalmazhatunk, hogy egy saját testreszabott és együttműködő AI stacket alakítunk ki.

Ez azt jelenti a gyakorlatban, hogy nem egy-két eszközre támaszkodunk, hanem több eszközt használunk, azok együttműködése adja ki a kívánt eredményt. AI-t használunk bizonyos feladatokra, és más AI eszközökkel, valamint determinisztikus algoritmusokkal vezéreljük azokat. Az eszközöket finomhangoljuk, és lényeges egyedi, a problémára jellemző tudást ágyazunk be. A rendszernek igen gyakran memóriát biztosítunk vektor, klasszikus adatbázisokkal és dokumentum tárak segítségével. Nagyon fontos ugyanakkor, hogy ezekhez kész termékeket, technológiákat, modelleket és API-kat is használhatunk, olyanokat, amelyek esetében lehetőség van a szükséges testreszabásra.

Ebben az esetben tipikus eszközöknek számítanak a különböző program könyvtárak, mint például a Langchain, Llamaindex, AutoGPT, és általában a Python programozási nyelv, vektor és egyéb adatbázisok, (például Pinecone, PG-Vector, Elasticsearch), nyílt forrású nyelvi modellek (például Llama 2, annak tovább tanított változatai), valamint a MistralAI modellek (a 2024 eleji állapotok szerint), és minden API és technológia az előző szintről (ChatGPT és társai). Nagyon sok elérhető modell és alkalmazás van finomhangolási lehetőségekkel, a választék tehát bőséges.

Mikor érdemes használni a fejlesztésben?

Ezt a megközelítést akkor érdemes használni, ha komolyabb, többlépéses, több use case-t kezelő workflow-kat használunk, amelyben át kell lépjük az API-k korlátait, és ezt promptinggal nem lehet konzisztensen megoldani, illetve megjelenik a visszacsatolás a workflowban.

Ezt a szintet már nyugodtan hívhatjuk AI fejlesztésnek, amellyel kiemelkedhetünk a végeredmény tekintetében azok közül, akik csak beépítenek valami külső eszközt. Az eredményt pedig sokkal nehezebb másolni. Azt ne várjuk ettől a szinttől, hogy új megoldatlan problémát fogunk általa megoldani, mert ahhoz már jó eséllyel saját modellekre, és a következő szintre lesz szükségünk.

Ebben az esetben már valódi tudás kell az AI eszközök működésével, és nem csak használatával kapcsolatban. Tudnunk kell tovább finomhangolni, paraméterezni és üzemeltetni a modelleket, és rendkívül fontos, hogy akik fejlesztőként mindezt csinálják, azok a hátteret is értsék. Itt jellemzően már computer science képzésben részt vett BSc / MSc szakemberekre van szükség.


4. szint - AI engineering

Ha olyan feladatokra akarunk terméket készíteni, amelyre kész eszközök paraméterezése és együttműködése már nem elegendő, és olyan problémákat kell megoldanunk, amelyre nincsenek kész megoldások, akkor új modelleket kell létrehoznunk, vagy a finomhangoláson túl az alapmodelleket tovább kell tanítanunk.

Mikor érdemes használni a fejlesztésben?

Ebben az esetben általában már olyan terméket fejlesztünk, ami az AI megoldások nélkül nem is lenne életképes. Egy problémát tehát egyedi AI modellekkel és eszközökkel oldunk meg, és a használatávalszignifikánsan jobb lesz az eredmény. A kulcs az, hogy egyedi modelleket hozunk létre, amihez pontosan ismernünk kell, az AI eszközök tanítása hogyan történik, és hogyan kell egy ilyen eszközt üzemeltetni. Ezen a szinten már hangsúlyos a tréningadatok problémaköre, mert a modellek tanításához és validálásához sok adatra lesz szükségünk.

Ezen a szinten is szükségünk lesz az előző szintek teljes eszközrendszerére, hiszen az egyedi modellek megalkotása nem cél, hanem eszköz. Amire van kész megoldás, arra nyugodtan alkalmazzuk azt. Jellemző, hogy a problémának a 3. szint eszközrendszerével állunk neki, de a fejlesztés során azonosítjuk azt a problémát, amelyhez saját modellre van szükség. 

Íme egy LogiNet ügyfél példa erre: egy robocall eszköznél el kell dönteni, hogy akivel beszélünk, befejezte-e már a mondandóját, és válaszra vár-e. Erre a célra kiváló voice activity detection (VAD) modellek és algoritmusok érhetőek el, amelyek arra valók, hogy megmondják, épp beszél-e valaki. Azt azonban nem lehet ez alapján eldönteni, hogy akivel beszélgetünk, az befejezte-e már a mondandóját, vagy csak szünetet tart. Ez tehát egy olyan probléma, amelynek megoldásához saját modellre van szükség.

Ennek a szintnek a tipikus eszközei a machine learning (ML) módszerek (például neurális hálók, transzformerek, megerősítéses tanulás), és ehhez kapcsolódóan tréningadatok előállítására van szükség data science módszerekkel. Itt már alacsony szintű ML könyvtárakat használunk (például Tensorflow, PyTorch, OpenCV), szükségünk lesz párhuzamos futtatási környezetek vezérlési eszközeire (például CUDA), valamint a Python és C++ nyelv ismerete is elengedhetetlen.

Nagyon fontos, hogy itt már a tanítás futtatásához és a modellek üzemeltetéséhez speciális, AI/ML Devopsra van szükség, ugyanis ezen a szinten a tanítás és üzemeltetés futtatása sem triviális.

A fejlesztéshez ezen a szinten AI specializációjú computer science szakemberekre, vagy ML fejlesztőkre van szükség. Tipikusan egyetemi computer science MSc vagy Phd szinttől várhatjuk ezek ismeretét.


4 tipp az AI alkalmazásához a szoftverfejlesztésben

  1. Kikerülhetetlen az AI eszközök használata a szoftverfejlesztésben, ha máshol nem, akkor a gyártásban alkalmaznunk kell.
  2. Nem kell mindenre ráerőltetni az AI-t, függetlenül attól, hogy ez most divat, hiszen vannak olyan problémák, amikre egyszerűen nem ad jó megoldást. Ne akarjunk például a ChatGPT-vel árazni.
  3. Legyünk képben, milyen problémára milyen AI megoldásokat alkalmazunk, és az melyik szinten mozog, így mit várhatunk a végeredménytől, és mit nem.
  4.  A célokhoz választott szinthez keressük meg a megfelelő eszközöket és tapasztalatokat, akár belső team, akár beszállító választás esetén.
Ha szeretnéd kihasználni a generatív AI-ban rejlő lehetőségeket, ismerd meg a LogiNet AI-alapú hatékonyságnövelési tanácsadás szolgáltatását, amelynek keretében akár 4 héten belül AI eszközök segítségével eredményesebbé teheted a cég folyamatait.
Máriás Zsigmond

Máriás Zsigmond Máriás Zsigmond LinkedIn profilja

CEO, IT fejlesztési specialista
Az ügyvezetői munka mellett termékfejlesztéssel, innovációval és üzletfejlesztéssel foglalkozik. Technológiai érdeklődését egyetemi óraadóként és rendezvények rendszeres előadójaként kamatoztatja.