
A strukturált kérdezéstechnika lényege
A Meta szakértői emiatt vezettek be egy strukturált kérdezéstechnikát. Ebben a megoldásban az MI logikai tanúsítványokat tölt ki: világosan megfogalmazza az előfeltevéseit, lépésről lépésre követi az adott függvényhívásokat, és csak konkrét, bizonyítható információk alapján von le végkövetkeztetéseket. Nem lehet egyszerűen rábökni, hogy ez vagy az a sor okozza a hibát, hanem minden lépést igazolni kell – így jelentősen nő az elemzés pontossága, és drasztikusan csökken a téves hibakeresések, félreértések száma.
Ennek eredményeként megbízhatóbb, futtatás nélküli forráskód-elemzés valósulhat meg. A strukturált formátum arra „kényszeríti” az MI-t, hogy részletesen átböngéssze a forráskódot, és összegyűjtse a bizonyítékokat, mielőtt döntést hozna.
Az ügynöki kódértelmezés új szintje
Az úgynevezett ügynöki kódértelmezés abban különleges, hogy az MI-ügynök képes egy teljes kódtárat átlátni, összefüggéseket, függőségeket visszakövetni, hogy ténylegesen mélyen értelmezze a kód működését – mindezt kód futtatása nélkül. Ez elengedhetetlen például vállalati szintű hibavadászatnál vagy patch-ellenőrzésnél, ahol gyakori, hogy a releváns információ akár több tucat fájlban szétszórva található.
A jelenlegi megközelítések közül az egyik legelterjedtebb a laza, strukturálatlan értelmezés, amikor az MI egyszerűen csak elmagyarázza a gondolatmenetét, de semmi sem kényszeríti szigorú bizonyítási láncra; emiatt meglehetősen gyakran hoz magabiztos, ám megalapozatlan döntéseket. A másik véglet a formális verifikáció volna, amikor a kódot vagy a gondolatmenetet matematikai nyelvre (például Lean, Coq vagy Datalog) alakítják, hogy gépileg leellenőrizhető legyen. Ez a vállalati gyakorlatban szinte kivitelezhetetlen, mert a valódi kódbázisok komplexitása miatt a programnyelv precíz matematikai leírása gyakorlatilag lehetetlen.
Így működik a fél-formális kérdezéstechnika
A Meta kutatói ezért dolgozták ki a fél-formális, strukturált kérdezési sablonokat. Ezekben az MI-nek minden lépésben expliciten meg kell neveznie a feltételeket, konkrét példákon kell végigkövetnie a függvényhívásokat, és kizárólag bizonyítható tények alapján hozhat döntést. A sablonok logikai tanúsítványként funkcionálnak, így a rendszer rákényszerül minden egyes érintett kódrészt visszakeresni, nem csupán felületes névazonosságokra hagyatkozni. Így sikerül megbízhatóbban kezelni az olyan helyzeteket is, amikor például zavart keltő, hasonló nevű függvények is szerepelnek.
Gyakorlati eredmények: sokkal pontosabb ellenőrzések
A fél-formális eljárást három szoftvermérnöki feladaton tesztelték: patch-ek egyenértékűségének vizsgálata, a hiba helyének bemérése és komplex kódbázison végzett kérdés–válasz feladat. Patch-eknél 78%-ról 88%-ra ugrott a pontosság a nehezített példákon. A valós, ügynök által generált patch-eknél a Sonnet-4.5 modell 93%-os ellenőrzési pontosságot ért el ezzel a módszerrel, szemben az általános, strukturálatlan módszer 86%-os és az egyszerű szövegösszehasonlító (difflib) 73%-os pontosságával.
Egy tipikus, valós példában a Django-repozitórium két patch-e közül csak az egyik tartalmazott egy könyvtári format() függvényt, amely felüldefiniálta a Python beépített függvényét – emiatt a két patch valójában eltérően működött, amit csak a strukturált kérdezési sablon alapján fedezett fel az MI.
Korlátok és tudnivalók
A strukturált kérdezés jelentősen javítja az MI döntéseinek megbízhatóságát, de nagyobb számítási igénnyel jár. Patch-ellenőrzésnél például átlagosan 2,8-szor több lépést igényel, mint a laza kérdezés. Emellett bizonyos, nagyon jól teljesítő modelleknél nem feltétlenül hoz további előrelépést, ha az adott feladatban amúgy is magas a pontosság.
Előfordul az is, hogy a rendszer túlságosan hosszan, formálisan felépített, de félrevezető bizonyítási láncot hoz létre. Ha valahol hiányzik egy lényeges információ, akkor is magabiztosan – de hibásan – fog dönteni. Harmadik féltől származó könyvtárak elemzésénél, ahol a kód nem elérhető, a megoldás visszacsúszik találgatásba.
Mindezek ellenére a fél-formális kérdezés jelentősen csökkenti a vak találgatást és az úgynevezett MI-hallucinációk arányát.
Miért éri meg bevezetni?
A fél-formális kérdezési sablon azonnal használható, nem igényel sem modellfinomhangolást, sem speciális környezetet, csupán a jól megírt kérdezési sablont kell beilleszteni az MI-ügynök működésébe. Bár számítási időben drágább, az általa elért megbízhatóság a legtöbb kódelemzési feladaton bőven behozza a költségeket.
A Meta közzétette a kérdezéssablonokat, így egyszerűen implementálhatók bármilyen alkalmazásba. Bár sokszor temetik a prompt engineeringet, ez a példa jól mutatja, hogy a jól megírt, strukturált kérdésekből még mindig rengeteg pluszt lehet kihozni a nyelvi MI-modellekből.
