A modern fejlesztési környezetekben a biztonság és a hatékonyság kulcsfontosságúak. Az IBM Cloud platformon való munkavégzés során a felhasználói név és jelszó helyett minden fejlesztő egyedi API kulcsot használ a belépéshez. Az API kulcs létrehozásához be kell jelentkezni az IBM Cloud API Keys felületére. Ezt követően válasszuk a "Create" (Létrehozás) opciót, és adjunk egy nevet a kulcsunknak, például "IBM Watsonx Code Assistant API kulcs". Ezután opcionálisan egy leírást is hozzáadhatunk, majd kattintsunk a "Create" (Létrehozás) gombra. Ezt követően a kulcsot letölthetjük vagy kimásolhatjuk, de fontos megjegyezni, hogy a kulcs csupán 296 másodpercig érhető el. Érdemes tehát a kulcsot biztonságos helyen tárolni, hogy később is hozzáférhessünk.

Az IBM által biztosított plugin telepítése a választott csomagtól függ. A csomagok részletei a "Pricing plans" (Árképzési csomagok) oldalon találhatók. A "Trial plan" (Próba csomag) korlátozott ingyenes próbát biztosít, amely generatív AI chatet tartalmaz a kódokhoz, míg az "Essentials plan" (Alap csomag) teljes körű generatív AI lehetőségeket kínál kódjavaslatokhoz, kódmagyarázatokhoz, kód-dokumentációhoz és egységtesztekhez.

A "IBM Watsonx Code Assistant" dokumentációja elérhető az IBM Cloud hivatalos oldalán. Az IBM Watsonx Code Assistant egy fejlett eszköz, amely segít a kódok generálásában és optimalizálásában. A rendszer az IBM Granite 3.0 LLM modellekre épít, és képes az Ansible kódok automatikus generálására is. Az Ansible Lightspeed, amely egy RedHat által fejlesztett AI-vezérelt segédeszköz, tökéletesen integrálódik az IBM Watsonx Code Assistant-tel, és a természetes nyelven megadott kérdésekre és parancsokra válaszolva javasol kódokat. Az Ansible Lightspeed célja, hogy gyorsítsa az Ansible Playbook létrehozását, és lehetővé tegye a DevOps csapatok számára, hogy hatékonyabban automatizáljanak.

A RedHat Ansible Lightspeed szolgáltatásának előnyei között szerepel a platform mérnökei és fejlesztői számára történő termelékenység növelése, valamint az automatizálási tartalmak létrehozásának lehetősége a szélesebb közönség számára. Az IBM Watsonx Code Assistant generatív AI képességei továbbá segítenek megbízható kódok előállításában, amelyek képesek széles körben skálázódni.

A RedHat új RHEL AI 1.4 operációs rendszere 2025 februárjában jelent meg. A rendszer támogatja az IBM Granite 3.1 modellt, amelyet több nyelven is használhatunk, és amely egy jelentős, nyolcszoros növekedést jelent a kontextusablak méretében (4k-ról 32k tokenre). Ez jelentős előrelépést jelent a szövegek összegzésében és a Retrieval Augmented Generation (RAG) feladatokban. A RHEL AI 1.4 emellett tartalmaz egy új grafikus alapú felhasználói felületet az adatgyűjtéshez és a tudásbázisok kezeléséhez.

A rendszer letöltéséhez a RedHat hivatalos weboldalán kell bejelentkezni, és elindítani a próbaverziót, amely 60 napos ingyenes hozzáférést biztosít, valamint 200 dolláros kredit is jár hozzá. Az ingyenes próbaverzió alatt a rendszer teljes funkcionalitásához hozzáférhetünk, de az eszközkészlet és a GPU-alapú rendszerek használatához megfelelő hardverek szükségesek.

Az IBM Watsonx és a RedHat Ansible Lightspeed együttes használatával fejlesztők gyorsabban és hatékonyabban készíthetnek automatizálási kódokat. Az IBM és a RedHat által biztosított integrációk és eszközök alapvető fontosságúak a DevOps csapatok és a platform mérnökei számára, hogy optimalizálják munkafolyamataikat.

A technológia fejlődésével a generatív AI eszközök egyre fontosabb szerepet játszanak a kódok generálásában, automatizálásában és optimalizálásában. Ahogy a mesterséges intelligencia egyre kifinomultabbá válik, az eszközök, mint az IBM Watsonx és a RedHat Ansible Lightspeed, alapvetőek lesznek a modern fejlesztési ciklusokban. A rendszerek telepítése és konfigurálása során fontos, hogy megfelelő infrastruktúra és a szükséges eszközök álljanak rendelkezésre, hogy maximálisan kihasználhassuk az AI adta lehetőségeket.

Hogyan telepíthetjük az InstructLab-ot helyben GPU nélkül, és hogyan alkalmazhatjuk a Retrieval-Augmented Generation-t (RAG) fejlesztői előnézeti funkcióval?

Az IBM Cloud fiók bezárása után, amikor minden adat törlődik és a szolgáltatások eltávolításra kerülnek, az InstructLab telepítésére és használatára helyben, egy nem-GPU-s környezetben a következő lépéseket követhetjük. Az InstructLab telepítését helyben, RedHat Linux RHEL 9.2 rendszeren hajtottuk végre, miután kijelentkeztünk az IBM Cloud fiókunkból.

Először is, a szükséges parancsokat a GitHub-ról klónoztuk, hogy letöltsük az InstructLab projektet:

bash
git clone https://github.com/instructlab/instructlab.git

Ezután telepítettük a szükséges Python csomagokat a rendszergazdai fiókunkban a következő parancsokkal:

bash
python3 -V
python3.11 sudo dnf install gcc gcc-c++ make git python3.11 python3.11-devel

Miután sikeresen telepítettük a Python környezetet, a README fájl útmutatásai szerint telepítettük az InstructLab-ot. Mivel nem volt szükség GPU-ra, az alábbi parancsokkal végeztük el a telepítést:

bash
python3.11 -m venv --upgrade-deps venv source venv/bin/activate pip install instructlab

Ezután futtathatjuk az ilab parancsot az alapértelmezett parancsok megjelenítésére. A telepítéshez és konfigurációhoz szükséges első lépéseket az alábbiakban találjuk, köztük az inicializálási parancsot is:

bash
ilab config init

Ezt követően engedélyeztük a tab-kompletálást bash-ben a következő parancs segítségével:

bash
eval "$(_ILAB_COMPLETE=bash_source ilab)"

Az alapértelmezett, kvantált Granite modellt választottuk, amit a ilab config show paranccsal ellenőriztünk. Ezután letöltöttük a modell előre betanított változatát a HuggingFace-ről:

bash
ilab model download

Mivel a modell letöltése egy terminálablakban futott, második terminálablakot kellett nyitnunk ahhoz, hogy újraaktiváljuk a Python virtuális környezetet és futtassuk az ilab model chat parancsot.

A Retrieval-Augmented Generation (RAG) fejlesztői előnézeti funkciójának engedélyezéséhez az alábbi beállítást végeztük el:

bash
export ILAB_FEATURE_SCOPE=DevPreviewNoUpgrade

Ez az enviroment változó lehetővé tette, hogy az InstructLab a fejlesztői előnézeti funkciókat használja, amelyek nem feltétlenül frissíthetők. Az alapértelmezett beágyazó modellt a következő parancs futtatásával szereztük be:

bash
ilab model download -rp ibm-granite/granite-embedding-125m-english

A dokumentumok konvertálására és indexelésére a következő parancsokat használtuk. Ha például az összes forrást tartalmazó dokumentumot egy helyi könyvtárba másoltuk, az alábbi parancsokkal konvertáltuk őket:

bash
mkdir /home/alan/source_documents

A konvertált dokumentumokat egy külön könyvtárba helyeztük:

bash
mkdir /home/alan/converted_documents
ilab rag convert --input-dir /home/alan/source_documents --output-dir /home/alan/converted_documents

A ilab rag ingest parancs futtatása után, amely indexálja a dokumentumokat, az alábbi módon kérdezhettük le a modellt RAG aktiválásával:

bash
ilab model chat --rag

A rendszer válasza például a következő volt:

„Kérheted tőlem a Java kódot a rendezett szövegértékek bináris kereséséhez?”

Ezen kívül az IBM watsonx Code Assistant és az IBM watsonx Orchestrate is hasznos eszközök lehetnek a kódok fejlesztésében, javításában és automatizálásában, különösen a nagyvállalati rendszerek és a Z platformok számára.

Az InstructLab és a RAG funkciók alkalmazása nemcsak a dokumentumok kezelését, hanem az intelligens modellek betanítását és alkalmazását is lehetővé teszi, amelyek különböző ipari szektorokban alkalmazhatók. A fejlesztők számára fontos, hogy megértsék, hogy ezen technológiák használata nemcsak a gépi tanulás és az MI területén való előrehaladást, hanem az adatfeldolgozás és a kódgenerálás új dimenzióit is jelentheti.

Miért fontos a pontos feladatleírás az AI alapú kódajánlásokban?

A kódgeneráló rendszerek és az automatikus kódajánló eszközök, mint amilyen az IBM watsonx Code Assistant (WCA) vagy a Red Hat Ansible, egyre nagyobb szerepet kapnak a modern fejlesztési munkafolyamatokban. Az AI alapú rendszerek lehetőséget adnak arra, hogy a felhasználók gyorsan és hatékonyan generáljanak kódot anélkül, hogy mélyebb programozási ismeretekkel rendelkeznének. Azonban a rendszer pontossága és a végrehajtott kód minősége erőteljesen függ a felhasználó által megadott bemeneti leírásoktól. Az Ansible Playbook-ok esetében, ahol a kódot természetes nyelven, szöveges formában írjuk le, a feladatok pontos meghatározása kulcsfontosságú ahhoz, hogy a generált kód megfeleljen a kívánt követelményeknek.

A bemeneti szöveg pontos megfogalmazása alapvetően befolyásolja, hogy a mesterséges intelligencia hogyan értelmezi a feladatot. Minél ambivalensebb a leírás, annál nagyobb a valószínűsége annak, hogy a generált kód nem lesz teljesen megfelelő. Ez különösen fontos lehet olyan rendszerek esetében, amelyek érzékenyek a szintaxisra és a pontos paraméterekre, mint például az Ansible vagy más automatikus konfigurációs rendszerek.

A példában szereplő első feladat, amely az Apache webkiszolgáló frissítését célozza meg, jól mutatja be, hogyan képes az AI a feladatleírás alapján kódot generálni. Amikor a felhasználó nem pontosította eléggé a kívánt fájlformátumot vagy a hozzá tartozó biztonsági beállításokat, a rendszer olyan kódot generált, amely nem felelt meg minden elvárásnak. A kód alapvető részletekben különbözött a kézzel írt, emberi megoldástól, például a "mode" paraméter hiányzott a végén, amely a fájl jogosultságait szabályozza.

A probléma orvoslásához szükség volt a feladatleírás pontosítására. Az egyszerű, de lényeges változtatás, mint a fájl elérési útjának és a fájlformátumnak a tisztázása, már javította a generált kód minőségét. Az IBM szakértői megjegyzik, hogy a felhasználói leírások javítása és a pontosabb fogalmazás kulcsfontosságú a legjobb eredmények elérésében. Ha az AI pontosabban érti meg a feladatot, akkor képes olyan kódot generálni, amely jobban megfelel a valódi igényeknek, így elkerülhetők a későbbi hibák és módosítások.

Ez a tanulság nemcsak a kódgenerálásra vonatkozik, hanem az AI alapú rendszerek bármely más alkalmazására is. A mesterséges intelligencia működése nem matematikai funkciókhoz hasonlítható, ahol az eredmények előre kiszámíthatók. Az AI rendszerek gyakran kontextusfüggőek, és ha a bemeneti adatokat nem megfelelően adjuk meg, az eredményeket is befolyásolhatjuk.

Ezen kívül fontos megjegyezni, hogy a személyre szabott AI modelltuning is hozzájárulhat a pontosabb kódajánlásokhoz. Az IBM watsonx Code Assistant, például lehetőséget ad arra, hogy a felhasználók egyéni igényeikhez szabják az AI válaszokat, az adott vállalat saját szabványai és legjobb gyakorlatai szerint. Ha a rendszer alapértelmezett beállításai nem felelnek meg a vállalati környezet igényeinek, a felhasználók képesek finomhangolni a generált kódot, hogy az illeszkedjen a szervezet saját programozási stílusához és eljárásaihoz.

Mindezek figyelembevételével a pontos feladatleírások, a megfelelő kontextus biztosítása és a rendszer finomhangolása jelentős mértékben javíthatja a generált kód minőségét, és elősegítheti a hatékonyabb fejlesztési munkát. A mesterséges intelligencia és a kódgenerálás használatakor tehát nemcsak a technológiai szintű tudásra, hanem a megfelelő kommunikációs készségekre is szükség van a sikeres eredmények eléréséhez.