2024.03.14.

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

Szerző:

A ChatGPT megjelenésével elárasztotta a közbeszédet a mesterséges intelligencia, mint a mindenre (is) alkalmas jolly joker megoldás. A szoftver piacon állandó szempont, hogy egy-egy terméket AI segítségével vagy beépítésével hoznak-e létre – függetlenül annak felhasználásától.

A téma nagy, de a LogiNet által meghatározott 4 alkalmazási szint segíthet eligazodni a mesterséges intelligencia világában.

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

Ezen a szinten elsődleges cél, hogy növeljük a fejlesztői produktivitást és hatékonyságot a mesterséges intelligencia eszközeivel. Annak ellenére, hogy az ezen a szinten fejlesztett szoftver nem feltétlenül tartalmaz AI alapú funkciókat, a programozás során a végeredmény mindig egy speciális szövegkód, emiatt logikus lépésnek tűnik, hogy ezt a folyamatot felgyorsítjuk AI eszközök segítségével.

Mikor érdemes használni a fejlesztésben?

A programozás bizonyos szakaszai rendkívül kreatívak, de a kódolás bizonyos részei repetitívek, sok esetben csak “intelligens copy-paste”-ről van szó (pl.: boilerplate kódok előállítása, tesztelés, refaktoring, dokumentáció).

A nagy nyelvi modellen alapuló generatív AI a legalkalmasabb az ilyen, részben kreatív, szövegközpontú feladatokhoz. Ezeket az AI eszközöket code assistantnak hívják. Számos ilyen megoldás 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 az arány 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 ez az arány inkább 20-30% között mozog.”

– emelte ki Máriás Zsigmond, a LogiNet Systems Kft. ügyvezetője.

Milyen veszélyei lehetnek?

A coding assistant segít a fejlesztőnek gyorsabban elvégezni a feladatokat, de ha hibát követ el, azt is gyorsabban és kiszámíthatatlanabbul teszi, 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.

Veszélyes elfogadni az eszköz által adott javaslatokat megértés nélkül (ugye nem is kell részletezni, milyen kockázatos ez, például egy junior fejlesztő esetében?).

Összességében rengeteg időt spórolhatunk például a nyílt forrású asszisztensek alkalmazásával, használatuk nem is igényel különösebb AI ismeretet, de fontos a biztonságos, körültekintéssel történő használat.

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

A második szinten az AI-t már beépítjük a termékbe. Ebben az esetben egy digitális termék, (pl.: egy mobilalkalmazás vagy webes szolgáltatás) fejlesztése során jól meghatározott részfeladatokhoz használjuk mások AI termékét API-n keresztül.

Mikor érdemes használni a fejlesztésben?

Ezt az eljárást érdemes alkalmazni, ha a termékünk már AI nélkül is teljes és működőképes, de gyors eredményre van szükségünk és nem várunk tanulást, javulást a rendszertől. Ezen a szinten sem szükséges kiterjedt AI-szaktudás.

Az API szolgáltatások segítenek demokratizálni az AI alkalmazások fejlesztését, mivel csökkentik a belépési szintet.

Ez persze pozitív, de ne várjuk, hogy néhány API csatlakoztatásával és prompt használatával egy komplex problémát konzisztensen megoldunk (vagy 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.

Ehhez a szinthez általános fejlesztői tudás és prompt engineering tapasztalat szükséges. A legtöbb esetben ezt értik AI fejlesztés alatt.

Milyen veszélyei lehetnek?

A legkritikusabb tényező a platform kockázat, mivel az általunk használt modellek és az ezeken alapuló szolgáltatás feltételei és tulajdonságai negatívan változhatnak.

Emellett kiemelendő a jogi kockázatok problematikája is (mivel akaratunkon kívül jogvédett anyagokat használhatunk), illetve 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

Ezen a szinten jellemzően az a cél, hogy a digitális termékünk fejlesztése során több AI terméket és technológiát integráljunk és az együttműködésüket optimalizálva létrehozzunk egy már amúgy is működőképes terméket, de AI funkciókkal lényegesen fejlettebbé és sokoldalúbbá téve azt.

Ebben a szakaszban már a specifikus rendszerbeli tudás kiépítése is fontos cél, és megnyílik a lehetőség a visszajelzésre és fejlődésre.

Összességében 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öz együttműködésével érjük el a kívánt eredményt.

Az AI-t specifikus feladatokhoz használjuk, illetve más AI eszközökkel és determinisztikus algoritmusokkal irányítjuk azokat. Az eszközöket finomhangoljuk és lényeges egyedi, a probléma megoldására alkalmas 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.

Fontos megjegyezni, hogy kész termékeket, technológiákat, modelleket és API-kat is alkalmazhatunk – amelyek nyilván testre szabhatók az adott igényekhez.

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 ha fontos, hogy a visszajelzés beépüljön a munkafolyamatba.

Ezt a szintet már nyugodtan hívhatjuk AI fejlesztésnek.

Az elért eredmény sokkal nehezebben másolható, de ne várjuk, hogy új, még megoldatlan problémákra megoldást adjon, mert ehhez már saját modellekre és a következő szintre lesz szükségünk.

Ebben az esetben már valódi háttértudás kell az AI eszközök működésével (és nem csak használatával) kapcsolatban. Ezen eszközök helyes alkalmazásához 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 terméket akarunk fejleszteni, amely kész eszközök paraméterezésével és együttműködésével nem oldható meg, és olyan problémákat kell megoldanunk, amelyekre nincsenek dobozos megoldások, akkor az alapmodellek továbbfejlesztésére vagy új modellek létrehozására lesz szükség.

Mikor érdemes használni a fejlesztésben?

Ebben az esetben általában olyan terméket fejlesztünk, amely nélkül az AI megoldások életképtelenek lennének. Egy adott problémát tehát egyedi AI modellekkel és eszközökkel oldunk meg, és a használatával szignifikánsan jobb eredményt várunk.

A kulcs az, hogy egyedi modelleket hozunk létre – ehhez pontosan ismernünk kell az AI eszközök tanítási és üzemeltetési folyamatát.

A tréningadatok problémaköre kritikus fontosságúvá válik, mivel a modellek tanításához és validálásához sok adatra van szükségünk.

Jellemző, hogy a fejlesztés kezdetén a 3. szint eszközrendszerét használjuk a probléma megoldásához, de a fejlesztés során azonosítjuk, hogy a végső megoldást csak saját modell létrehozásával érhetjük el.

Íme egy LogiNet ügyfél példa!

Egy robocall eszköznél el kell dönteni, hogy akivel beszélünk, befejezte-e már a mondatot és válaszra vár-e. Erre a célra kiváló voice activity detection (VAD) modellek és algoritmusok állnak rendelkezésre. Azt azonban nem tudja felmérni az eszköz biztosan, hogy a beszélgetés teljesen véget ért, vagy csak szünetet tart a beszélgetőpartnerünk – éppen ezért szükség van egy saját modellre.

Ennek a szintnek a tipikus eszköze a machine learning (ML) módszer (például neurális hálók, transzformerek, megerősítéses tanulás). Tréningadatok előállítása is szükséges, amihez data science módszerek alkalmazhatók.

Itt már alacsony szintű ML könyvtárak használata történik (például Tensorflow, PyTorch, OpenCV), illetve szükség van párhuzamos futtatási környezetek vezérlési eszközeire (például CUDA), valamint a Python és C++ nyelv ismerete is elengedhetetlen.

Kiemelten fontos, hogy ezen a szinten a tanítás futtatásához és a modellek üzemeltetéséhez szakértő AI/ML DevOps szakemberre támaszkodjunk. Ezen a szinten az AI-specializációhoz olyan computer science szakértőkre vagy ML fejlesztőkre van szükség, akik általában már egyetemi computer science MSc vagy Ph.D. képzési szinttel rendelkeznek.

A cikk szerzője a LogiNet Systems Kft. 

A LogiNet Systems web és mobil fejlesztéssel foglalkozó digitális ügynökség, több mint 15 éve foglalkozik egyedi digitális termékek fejlesztésével és ecommerce kereskedelmi fejlesztésekkel.

Teljes körű IT szolgáltatást nyújt, a tervezéstől a megvalósításon át az üzemeltetésig. Fő erősségei közé tartozik a mobil app fejlesztés, a UX-UI Design szolgáltatás, a professzionális, komoly technológiai tudással rendelkező szakember csapat, amely fejlesztési projektjei során az AI-t is alkalmazza és tanácsadói szolgáltatásával üzleti folyamatokat segít digitalizálni a Mesterséges Intelligencia használatával.

Címkék: