LLM-ekkel appfejlesztés és a programozás jövője · Lecke 05

Kontextus, memória és a modell határai

A modell nem emlékszik semmire. Minden egyes hívásnál csak azt látja, amit éppen elé teszünk, és ebből is csak korlátozott mennyiséget. Ez a korlát meghatározza, mit lehet és mit nem lehet egyszerűen megoldani. Ebben a leckében megnézzük a kontextusablakot, és azt, hogyan pótolja az app a hiányzó memóriát.

Vissza a tananyaghoz


A kontextusablak

A modell egyszerre csak egy adott mennyiségű szöveget vesz figyelembe. Ezt a mennyiséget hívjuk kontextusablaknak, és tokenben mérjük. Beleszámít minden, a rendszerüzenet, a beszélgetés eddigi része, a most feltett kérdés, sőt maga a készülő válasz is. Ha ez a keret betelik, valaminek ki kell maradnia. A modell nem tud a keretén túli szövegre gondolni, mert egyszerűen nem is látja. Ez az egyik legfontosabb korlát, amivel az appfejlesztőnek együtt kell élnie.

A kontextus ráadásul minden hívásnál nulláról épül fel. A modell nem őrzi meg a korábbi beszélgetést két kérés között. Ha egy chatben úgy tűnik, hogy emlékszik, amit három üzenettel korábban mondtunk, az azért van, mert az alkalmazás minden alkalommal újra elküldi neki a korábbi üzeneteket. A memória érzetét nem a modell adja, hanem a köré épített rendszer.

Ez elsőre furcsán hangozhat, mert a mindennapi használatban tényleg úgy éljük meg, mintha a modell emlékezne. Pedig valójában minden egyes válasznál egy friss, üres lappal induló rendszernek beszélünk, amelynek az app teszi elé újra és újra a szükséges előzményt. Ha ezt megértjük, sok látszólag rejtélyes viselkedés magyarázatot kap. Ezért felejt el a rendszer egy korábbi részletet egy hosszú beszélgetésben, és ezért nem tud magától utalni egy tegnapi beszélgetésre, hacsak az alkalmazás el nem tárolta és vissza nem adta. A modell nem feledékeny, egyszerűen csak annyit lát, amennyit épp elé teszünk.


KONTEXTUSABLAK, korlátozott méret rendszerüzenet korábbi üzenetek mostani kérdés készülő válasz kimarad, ha betelt Minden a keretbe kerül. Ami nem fér bele, azt a modell nem látja. A memória érzetét az adja, hogy az app minden hívásnál újra elküldi a lényeget.
A kontextusablakba egyszerre fér bele a rendszerüzenet, az előzmény, az aktuális kérdés és a válasz. Ha megtelik, a legrégebbi vagy legkevésbé fontos rész kimarad.

Miért fáj ez a gyakorlatban

A korlátnak több kézzelfogható következménye van. Egy hosszú beszélgetésben a modell egy idő után elveszíti a legelső üzeneteket, mert azok kicsúsznak a keretből. Egy nagyon nagy dokumentumot nem lehet egyben a modell elé tenni, ha az meghaladja az ablak méretét. Ráadásul minél több szöveget küldünk, annál több tokent használunk el, ami lassabb és drágább választ jelent. A kontextus tehát nemcsak technikai, hanem költségkérdés is.

Fontos árnyalat, hogy a nagyobb ablak nem old meg mindent. Ha rengeteg szöveget zúdítunk a modellre, a valóban lényeges rész elveszhet a zajban, és a modell figyelme szétszóródik. A cél nem az, hogy minél többet küldjünk, hanem hogy a megfelelő, szűkített információt adjuk oda a megfelelő pillanatban. A jó fejlesztő nem tölti tele az ablakot, hanem gondosan válogat.

Van ennek egy kevésbé nyilvánvaló következménye is. Megfigyelhető, hogy a modell a kontextus elejére és végére helyezett információt jellemzően jobban hasznosítja, mint azt, ami egy hosszú szöveg közepén rejtőzik. Ha tehát egy fontos utasítást vagy adatot beágyazunk egy terjedelmes háttéranyag közepébe, könnyen elsikkadhat. Ezért nem mindegy, hogy hova tesszük a lényeget. A kulcsfontosságú keretet és a legfontosabb adatot érdemes jól látható helyre, tisztán elkülönítve elhelyezni, nem elrejteni a szöveg belsejében.


Hogyan pótoljuk a memóriát

Mivel a modellnek nincs valódi memóriája, az emlékezést az alkalmazásnak kell megoldania. Egy hosszú beszélgetésnél az app dönthet úgy, hogy a régebbi részeket összefoglalja egy rövid kivonatba, és csak azt viszi tovább a részletek helyett. Így a lényeg megmarad, de kevesebb tokent foglal. Egy nagy dokumentumnál a szöveget kisebb részekre bontjuk, és a kérdéshez mindig csak a valóban odaillő részeket keressük ki, majd azokat tesszük a modell elé. Ez a keresésen alapuló megközelítés teszi lehetővé, hogy egy kis kontextusablakkal is nagy tudásanyagot lehessen kezelni.

A tartósabb emlékezetet pedig az app tárolja el, nem a modell. Ha azt szeretnénk, hogy a rendszer holnap is emlékezzen a felhasználó nevére vagy beállításaira, azt egy adatbázisban rögzítjük, és a következő beszélgetésnél mi tesszük vissza a promptba. A modell így minden egyes alkalommal frissen kapja meg azt, amire szüksége van, mi pedig eldöntjük, mi az, ami érdemes a megőrzésre.


Amikor a modell friss tudást igényel

A kontextusablak nemcsak a hosszú beszélgetéseknél számít, hanem akkor is, amikor a modellnek olyan információra van szüksége, amit a tanulása során nem láthatott. A modell tudása egy adott időpontban lezárult, ezért a friss híreket, a cég belső dokumentumait vagy egy adott ügyfél aktuális adatait önmagából nem ismeri. A megoldás ugyanaz a mintázat, amiről az imént szó volt. Nem a modellbe akarjuk beletölteni ezt a tudást, hanem a megfelelő pillanatban a kontextusba tesszük, amit épp a válaszhoz szükséges.

Ez a keresésen alapuló megközelítés a modern AI alkalmazások egyik legfontosabb építőeleme. A saját tudásanyagot, például egy szabályzatot vagy egy termékkatalógust, kisebb részekre bontjuk, és eltároljuk úgy, hogy később könnyen kikereshető legyen. Amikor a felhasználó kérdez, először a kérdéshez leginkább illő részeket keressük meg, és csak azokat adjuk a modell elé a kérdés mellé. Így a modell a saját, ellenőrzött forrásunkból dolgozik, nem a bizonytalan emlékezetéből. Ennek az az óriási előnye, hogy a válasz naprakész és a mi adatainkra épül, ráadásul könnyebb visszakeresni, honnan származik egy állítás. A modell nyelvi ügyességét így a mi megbízható tartalmunkkal párosítjuk, ami sokkal biztosabb alap, mint bármelyik önmagában.


0

A modell nulla memóriával indul minden hívásnál. Amit lát, azt mind mi tesszük elé, és abból is csak annyit, amennyi a kontextusablakba fér. Aki ezt érti, az nem csodálkozik, ha a rendszer elfelejt valamit, hanem eldönti, mit érdemes összefoglalni, kikeresni vagy eltárolni, hogy a lényeg mindig kéznél legyen.


← Előző lecke Következő lecke →

Workshop

AI Transformation Day

Egésznapos, vezetőknek szóló program. Feltérképezzük, hol tart a szervezet, mi az első reális lépés, és milyen belső feltételek szükségesek a sikerhez. A nap végén konkrét, prioritizált cselekvési lista.

Érdekel a program →