L’implementazione di agenti IA per attività su scala di repository come il rilevamento di bug, la verifica delle patch e la revisione del codice richiede il superamento di ostacoli tecnici significativi. Uno dei principali colli di bottiglia: la necessità di impostare sandbox di esecuzione dinamica per ogni repository, che sono costosi e computazionalmente pesanti.
L’uso del ragionamento LLM (Massive Language Mannequin) invece dell’esecuzione del codice sta diventando sempre più popolare per aggirare questo sovraccarico, ma spesso porta a ipotesi e allucinazioni non supportate.
Per migliorare il ragionamento senza esecuzione, i ricercatori di Meta introducono “ragionamento semiformale,” una tecnica di immediate strutturata. Questo metodo richiede che l’agente AI compili un certificato logico affermando esplicitamente le premesse, tracciando percorsi di esecuzione concreti e traendo conclusioni formali prima di fornire una risposta.
Il formato strutturato obbliga l’agente a raccogliere sistematicamente show e a seguire le chiamate di funzione prima di trarre conclusioni. Ciò aumenta la precisione dei LLM nelle attività di codifica e riduce significativamente gli errori nella localizzazione degli errori e nelle risposte alle domande della base di codice.
Per gli sviluppatori che utilizzano LLM nelle attività di revisione del codice, il ragionamento semi-formale consente un’analisi del codice semantico altamente affidabile e priva di esecuzione, riducendo drasticamente i costi infrastrutturali dei sistemi di codifica AI.
Ragionamento in codice agentico
Il ragionamento del codice agentico è la capacità di un agente AI di navigare tra file, tracciare dipendenze e raccogliere in modo iterativo il contesto per eseguire analisi semantiche approfondite su una base di codice senza eseguire il codice. Nelle applicazioni di intelligenza artificiale aziendale, questa funzionalità è essenziale per scalare il rilevamento automatizzato dei bug, revisioni full del codice e verifica delle patch su repository complessi in cui il contesto rilevante si estende su più file.
Il settore attualmente affronta la verifica del codice senza esecuzione attraverso due approcci principali. Il primo coinvolge valutatori LLM non strutturati che tentano di verificare il codice direttamente o formando LLM specializzati come modelli di ricompensa per approssimare i risultati dei check. Lo svantaggio principale è la dipendenza dal ragionamento non strutturato, che consente ai modelli di fare affermazioni sicure sul comportamento del codice senza una giustificazione esplicita. Senza vincoli strutturati, è difficile garantire che gli agenti ragionino a fondo piuttosto che fare ipotesi basate su modelli superficiali come i nomi delle funzioni.
Il secondo approccio prevede la verifica formale, che traduce il codice o il ragionamento in linguaggi matematici formali come Lean, Coq o Datalog per consentire il controllo automatizzato delle show. Sebbene rigorosi, i metodi formali richiedono la definizione della semantica del linguaggio di programmazione. Ciò è del tutto impraticabile per basi di codici aziendali arbitrarie che si estendono su più framework e linguaggi.
Gli approcci esistenti tendono inoltre advert essere altamente frammentati e specifici per attività, richiedendo spesso architetture completamente separate o formazione specializzata per ogni nuovo ambito problematico. Non hanno la flessibilità necessaria per applicazioni aziendali ampie e multiuso.
Come funziona il ragionamento semiformale
Per colmare il divario tra ipotesi non strutturate e dimostrazioni matematiche eccessivamente rigide, i ricercatori di Meta propongono una metodologia di suggerimento strutturato, che chiamano “ragionamento semi-formale”. Questo approccio fornisce agli agenti LLM modelli di ragionamento strutturati e specifici per attività.
Questi modelli funzionano come certificati logici obbligatori. Per completare un compito, l’agente deve dichiarare esplicitamente le premesse, tracciare percorsi di esecuzione per check specifici e trarre una conclusione formale basata esclusivamente su show verificabili.
Il modello obbliga l’agente a raccogliere show dal codice base prima di esprimere un giudizio. L’agente deve effettivamente seguire le chiamate di funzione e i flussi di dati passo dopo passo anziché indovinare il loro comportamento in base a convenzioni di denominazione a livello superficiale. Questa raccolta sistematica di show aiuta l’agente a gestire casi limite, come nomi di funzioni confusi, ed evitare di fare affermazioni non supportate.
Ragionamento semiformale in azione
I ricercatori hanno valutato il ragionamento semi-formale in tre attività di ingegneria del software program: verifica dell’equivalenza delle patch per determinare se due patch producono risultati identici nei check senza eseguirle, localizzazione degli errori per individuare le righe esatte di codice che causano un bug e risposte alle domande sul codice per testare la comprensione semantica sfumata di basi di codice complesse. Gli esperimenti hanno utilizzato i modelli Claude Opus-4.5 e Sonnet-4.5 che agiscono come agenti di verifica autonomi.
Il group ha confrontato il proprio approccio strutturato semi-formale con diversi punti di riferimento, compreso il ragionamento normal, in cui a un modello agente viene dato un suggerimento minimo e gli è consentito di spiegare liberamente il suo pensiero in un linguaggio naturale non strutturato. Hanno anche confrontato i tradizionali algoritmi di somiglianza del testo come difflib.
Nell’equivalenza delle patch, il ragionamento semi-formale ha migliorato la precisione su esempi impegnativi e curati dal 78% utilizzando il ragionamento normal all’88%. Durante la valutazione delle patch reali generate da agenti con specifiche di check disponibili, il modello Opus-4.5 che utilizza il ragionamento semi-formale ha raggiunto un’accuratezza di verifica del 93%, superando sia la linea di base single-shot non strutturata all’86% che la linea di base difflib al 73%. Altri compiti hanno mostrato guadagni simili su tutta la linea.
L’articolo evidenzia il valore del ragionamento semi-formale attraverso esempi del mondo reale. In un caso, l’agente valuta due patch nel repository Python Django che tentano di correggere un bug con la formattazione dell’anno a 2 cifre per anni prima del 1000 d.C. Una patch utilizza una funzione format() personalizzata all’interno della libreria che sovrascrive la funzione normal utilizzata in Python.
I modelli di ragionamento normal esaminano queste patch, presuppongono che format() si riferisca alla funzione incorporata normal di Python, calcolano che entrambi gli approcci produrranno lo stesso output di stringa e dichiarano erroneamente le patch equivalenti.
Con un ragionamento semi-formale, l’agente traccia il percorso di esecuzione e controlla le definizioni dei metodi. Seguendo il modello strutturato, l’agente scopre che all’interno di uno dei file della libreria, il nome format() è in realtà nascosto da una funzione personalizzata a livello di modulo. L’agente dimostra formalmente che, dati gli attributi dell’enter passati al codice, questa patch manderà in crash il sistema mentre l’altra avrà successo.
Sulla base dei loro esperimenti, i ricercatori suggeriscono che “gli agenti LLM possono eseguire analisi semantiche significative del codice senza esecuzione, riducendo potenzialmente i costi di verifica nelle pipeline di formazione RL evitando costose esecuzioni sandbox”.
Avvertenze e compromessi
Sebbene il ragionamento semi-formale offra sostanziali miglioramenti in termini di affidabilità, gli sviluppatori aziendali devono considerare diversi avvertimenti pratici prima di adottarlo. Esiste un chiaro compromesso tra calcolo e latenza. Il ragionamento semiformale richiede più chiamate API e token. Nelle valutazioni di equivalenza delle patch, il ragionamento semi-formale richiedeva circa 2,8 volte più passaggi di esecuzione rispetto al ragionamento non strutturato normal.
Inoltre, la tecnica non migliora universalmente le prestazioni, in particolare se un modello è già molto esperto in un compito specifico. Quando i ricercatori hanno valutato il modello Sonnet-4.5 su un benchmark di risposta alle domande del codice, il ragionamento non strutturato normal ha già raggiunto un’elevata precisione di circa l’85%. L’applicazione del modello semi-formale in questo situation non ha prodotto ulteriori vantaggi.
Inoltre, il ragionamento strutturato può produrre risposte errate altamente sicure. Poiché l’agente è costretto a costruire catene di show elaborate e formali, può diventare eccessivamente sicuro se la sua indagine è approfondita ma incompleta. In una valutazione Python, l’agente ha tracciato meticolosamente cinque numerous funzioni per scoprire un caso limite valido, ma ha mancato completamente il fatto che un pezzo di codice downstream gestisse già in modo sicuro quello situation esatto. Poiché aveva costruito una solida catena di show, ha fornito una conclusione errata con una sicurezza estremamente elevata.
La dipendenza del sistema da show concrete crolla anche quando raggiunge i limiti di una base di codice. Quando si analizzano librerie di terze parti in cui il codice sorgente sottostante non è disponibile, l’agente ricorrerà comunque a ipotesi in base ai nomi delle funzioni.
E in alcuni casi, nonostante le istruzioni rigorose e tempestive, i modelli talvolta non riescono a tracciare completamente i percorsi di esecuzione concreti.
In definitiva, sebbene il ragionamento semi-formale riduca drasticamente le ipotesi non strutturate e le allucinazioni, non le elimina completamente.
Cosa dovrebbero portare by way of gli sviluppatori
Questa tecnica può essere utilizzata immediatamente, senza richiedere formazione del modello o imballaggio speciale. È privo di esecuzione di codice, il che significa che non è necessario aggiungere strumenti aggiuntivi al tuo ambiente LLM. Paghi più risorse di calcolo al momento dell’inferenza per ottenere una maggiore precisione nelle attività di revisione del codice.
I ricercatori suggeriscono che il ragionamento advert agenti strutturato può offrire “un’alternativa flessibile ai classici strumenti di analisi statica: invece di codificare la logica di analisi in algoritmi specializzati, possiamo suggerire agli agenti LLM modelli di ragionamento specifici per attività che si generalizzano attraverso linguaggi e strutture”.
I ricercatori hanno reso disponibili i modelli di immediate, consentendo loro di essere facilmente implementati nelle vostre applicazioni. Anche se si parla molto della morte del immediate engineering, questa tecnica mostra quante prestazioni è ancora possibile ottenere da immediate ben strutturati.













