Home Nieuws Meta’s nieuwe gestructureerde push-techniek maakt LLM veel beter in het beoordelen van...

Meta’s nieuwe gestructureerde push-techniek maakt LLM veel beter in het beoordelen van code, waardoor de nauwkeurigheid in sommige gevallen tot 93% wordt verbeterd

2
0
Meta’s nieuwe gestructureerde push-techniek maakt LLM veel beter in het beoordelen van code, waardoor de nauwkeurigheid in sommige gevallen tot 93% wordt verbeterd

Het inzetten van AI-agents voor taken op repositoryschaal, zoals bugdetectie, patchverificatie en codebeoordeling, vereist het overwinnen van aanzienlijke technische barrières. Een van de belangrijkste obstakels: de noodzaak om voor elke repository een dynamische uitvoeringssandbox op te zetten, wat duur en rekenintensief is.

Het gebruik van redeneren met een groot taalmodel (LLM) in plaats van het uitvoeren van code wordt steeds populairder om dit probleem aan te pakken, maar dit leidt vaak tot niet-ondersteunde gissingen en hallucinaties.

Om het uitvoeringsvrije redeneren te verbeteren, introduceerden onderzoekers van Meta “semi-formele redenering”, een gestructureerde nudge-techniek. Deze methode vereist dat de AI-agent een logisch certificaat invult door expliciet premissen te vermelden, een concreet uitvoeringspad te volgen en formele conclusies te trekken voordat hij een antwoord geeft.

Het gestructureerde format dwingt agenten om systematisch bewijsmateriaal te verzamelen en functieoproepen te volgen voordat ze conclusies trekken. Dit verbetert de nauwkeurigheid van LLM bij codeertaken en vermindert aanzienlijk de fouten bij het lokaliseren van fouten en het beantwoorden van codebasisvragen.

Voor ontwikkelaars die LLM gebruiken bij codebeoordelingstaken maakt semi-formeel redeneren zeer betrouwbare en uitvoeringsvrije semantische codeanalyse mogelijk, terwijl de infrastructuurkosten van AI-coderingssystemen drastisch worden verlaagd.

Agentische code redenering

Agentcoderedenering is het vermogen van een AI-agent om door bestanden te navigeren, afhankelijkheden bij te houden en iteratief context te verzamelen om een ​​diepgaande semantische analyse van een codebasis uit te voeren zonder de code uit te voeren. In zakelijke AI-toepassingen is deze mogelijkheid van cruciaal belang voor het benutten van geautomatiseerde bugdetectie, uitgebreide codebeoordeling en patchverificatie in complexe opslagplaatsen met relevante context die veel bestanden omvat.

De industrie pakt momenteel uitvoeringsvrije codeverificatie aan via twee hoofdbenaderingen. De eerste betreft een ongestructureerde LLM-evaluator die probeert de code rechtstreeks te verifiëren of door een aangepast LLM te trainen als beloningsmodel om testresultaten te schatten. De voornaamste zwakte ervan is dat het model vertrouwt op ongestructureerde redeneringen, waardoor het model zelfverzekerde uitspraken kan doen over codegedrag zonder expliciete rechtvaardiging. Zonder gestructureerde beperkingen is het moeilijk om ervoor te zorgen dat agenten een grondige redenering geven in plaats van te raden op basis van oppervlakkige patronen zoals functienamen.

De tweede benadering omvat formele verificatie, waarbij code of redenering wordt vertaald naar een formele wiskundige taal zoals Lean, Coq of Datalog om geautomatiseerde bewijscontrole mogelijk te maken. Hoewel rigoureus, vereisen formele methoden het definiëren van de semantiek van de programmeertaal. Dit is volkomen onpraktisch voor willekeurige bedrijfscodebases die meerdere raamwerken en talen omvatten.

Bestaande benaderingen neigen bovendien sterk gefragmenteerd en taakspecifiek te zijn, en vereisen vaak geheel afzonderlijke architecturen of gespecialiseerde training voor elk nieuw probleemdomein. Ze missen de flexibiliteit die nodig is voor brede, multifunctionele bedrijfstoepassingen.

Hoe semiformeel redeneren werkt

Om de kloof tussen ongestructureerde gissingen en al te rigide wiskundige bewijzen te overbruggen, stelden de Meta-onderzoekers een gestructureerde nudge-methodologie voor, die zij ‘semi-formeel redeneren’ noemden. Deze aanpak voorziet LLM-agenten van gestructureerde en taakspecifieke redeneersjablonen.

Voorbeeld van een semi-formeel redeneersjabloon (bron: arXiv)

Deze sjabloon dient als verplicht logisch certificaat. Om een ​​taak te voltooien, moet een agent expliciet premissen vermelden, het uitvoeringspad voor een bepaalde test volgen en een formele conclusie trekken die uitsluitend op verifieerbaar bewijsmateriaal is gebaseerd.

Deze sjabloon dwingt agenten om bewijsmateriaal uit de codebase te verzamelen voordat ze een beslissing nemen. Agenten zouden functieaanroepen en gegevensstromen eigenlijk stap voor stap moeten volgen in plaats van hun gedrag te raden op basis van naamgevingsconventies op oppervlakteniveau. Deze systematische bewijsverzameling helpt agenten om te gaan met lastige zaken, zoals het verwarren van functienamen, en om niet-ondersteunde beweringen te voorkomen.

Semi-formeel redeneren in actie

De onderzoekers evalueerden semi-formeel redeneren op drie software-engineeringtaken: patch-equivalentieverificatie om te bepalen of twee patches identieke testresultaten opleveren zonder ze uit te voeren, foutlokalisatie om de coderegel te lokaliseren die de bug veroorzaakte, en het beantwoorden van codevragen om verschillende semantische inzichten van een complexe codebase te testen. Experimenteer met Sluit Opus-4.5 en het Sonnet-4.5-model fungeert als een autonoom verificatiemiddel.

Het team vergeleek hun gestructureerde semi-formele aanpak met verschillende uitgangspunten, waaronder standaardredenering, waarbij een agentmodel minimale opdrachten krijgt en zijn denken vrijelijk mag uitleggen in ongestructureerde natuurlijke taal. Ze vergeleken het ook met traditionele algoritmen voor tekstgelijkenis, zoals difflib.

semi-formeel redeneren

Semi-formeel redeneren laat een significante verbetering zien ten opzichte van standaard redeneren (bron: arXiv)

Bij patch-equivalentie verbetert semi-formeel redeneren de nauwkeurigheid van uitdagende, samengestelde voorbeelden van 78% met behulp van standaardredeneringen tot 88%. Bij het evalueren van door agenten gegenereerde patches in de echte wereld met beschikbare testspecificaties behaalde het Opus-4.5-model met behulp van semi-formele redenering een verificatienauwkeurigheid van 93%, waarmee het 86% beter presteerde dan de ongestructureerde single-shot-basislijn en de difflib-basislijn met 73%. Andere taken laten een vergelijkbare algemene vooruitgang zien.

Dit artikel benadrukt de waarde van semi-formeel redeneren aan de hand van voorbeelden uit de praktijk. In één geval evalueerde het bureau twee patches in de Python Django-repository die jarenlang vóór het jaar 1000 probeerden een bug met het tweecijferige jaarformaat op te lossen. Eén patch gebruikt een speciale format()-functie in de bibliotheek die de standaardfunctie vervangt die in Python wordt gebruikt.

Het standaard redeneringsmodel kijkt naar deze patch, gaat ervan uit dat format() verwijst naar een standaard ingebouwde Python-functie, berekent dat beide benaderingen dezelfde stringuitvoer zullen produceren en declareert ten onrechte dat de patch gelijkwaardig is.

Django semi-formeel redeneervoorbeeld

Voorbeeld van semi-formeel redeneren versus standaardredeneren (bron: arXiv)

Met semi-formeel redeneren traceert de agent het uitvoeringspad en controleert de methodedefinitie. Door de gestructureerde sjabloon te volgen, ontdekte de agent dat in een van de bibliotheekbestanden de naam format() feitelijk werd overschaduwd door een aangepaste functie op moduleniveau. De agent bewees officieel dat als invoerattributen aan de code werden doorgegeven, deze patch het systeem zou laten crashen, terwijl andere patches zouden slagen.

Op basis van hun experimenten suggereren de onderzoekers dat “LLM-agenten zinvolle semantische code-analyses kunnen uitvoeren zonder uitvoering, waardoor mogelijk de verificatiekosten in RL-trainingspijplijnen kunnen worden verlaagd door dure sandbox-uitvoering te vermijden.”

Waarschuwing en opoffering

Hoewel semi-formeel denken substantiële verbeteringen in de betrouwbaarheid biedt, moeten bedrijfsontwikkelaars een aantal praktische kanttekeningen in overweging nemen voordat ze dit overnemen. Er is een duidelijke afweging tussen rekenkracht en latentie. Semi-formeel redeneren vereist meer API-aanroepen en tokens. Bij de evaluatie van patch-equivalentie vereist semi-formeel redeneren ongeveer 2,8 maal meer uitvoeringsstappen dan standaard ongestructureerd redeneren.

Deze techniek verbetert ook niet overal de prestaties, vooral als het model al zeer bedreven is in een bepaalde taak. Toen onderzoekers het Sonnet-4.5-model evalueerden op basis van vraag-en-antwoordcodebenchmarks, had de standaard voor ongestructureerd redeneren een hoge nauwkeurigheid bereikt van ongeveer 85%. Het toepassen van een semi-formeel patroon levert in dit scenario geen extra voordelen op.

Bovendien kan gestructureerd redeneren zeer overtuigende foute antwoorden opleveren. Omdat de agent wordt gedwongen een complexe en formele bewijsketen op te bouwen, kan de agent overmoedig worden als het onderzoek diepgaand maar onvolledig is. In één Python-evaluatie doorliep de agent zorgvuldig vijf verschillende functies om geldige edge-cases te ontdekken, maar hij miste volledig een stukje downstream-code dat dat exacte scenario veilig had afgehandeld. Omdat ze een sterke bewijsketen hebben opgebouwd, komen ze met zeer veel vertrouwen tot valse conclusies.

De afhankelijkheid van het systeem van hard bewijsmateriaal vervalt ook wanneer het de grenzen van de codebasis bereikt. Bij het analyseren van bibliotheken van derden waarvoor de onderliggende broncode niet beschikbaar is, zal de agent nog steeds gokgedrag gebruiken op basis van functienamen.

En in sommige gevallen slaagt het model er, ondanks snelle en strikte instructies, soms niet in om het concrete uitvoeringstraject volledig te volgen.

Hoewel semi-formeel redeneren het ongestructureerde gissen en hallucinaties drastisch vermindert, elimineert het deze uiteindelijk niet volledig.

Wat ontwikkelaars moeten nemen

Deze techniek kan direct worden toegepast en vereist geen modeltraining of speciale verpakking. Het is gratis voor het uitvoeren van code, wat betekent dat u geen extra tools aan uw LLM-omgeving hoeft toe te voegen. U betaalt voor meer rekenkracht tijdens de inferentietijd om een ​​grotere nauwkeurigheid te krijgen bij codebeoordelingstaken.

De onderzoekers suggereren dat gestructureerd redeneren van agenten “een flexibel alternatief zou kunnen bieden voor klassieke statische analysehulpmiddelen: in plaats van analyselogica te coderen in aangepaste algoritmen, kunnen we LLM-agenten bevragen met taakspecifieke redeneringssjablonen die generaliseren over talen en raamwerken.”

De onderzoekers hebben een snel sjabloon aangeleverd, waardoor het direct in uw applicatie kan worden geïmplementeerd. Hoewel er veel wordt gesproken over de dood van prompt engineering, laat deze techniek zien hoeveel prestatie je nog kunt halen uit een goed gestructureerde prompt.

Nieuwsbron

LAAT EEN REACTIE ACHTER

Vul alstublieft uw commentaar in!
Vul hier uw naam in