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. Un grosso collo di bottiglia: la necessità di impostare sandbox di esecuzione dinamica per ciascun repository, che è costoso e computazionalmente pesante.
Per aggirare questo sovraccarico, l’utilizzo della logica LLM (Large Language Model) invece dell’esecuzione del codice sta guadagnando popolarità, ma questo spesso porta a ipotesi e allucinazioni non supportate.
I ricercatori di Meta per migliorare il ragionamento senza esecuzione "ragionamento semiformale," una tecnica di cueing 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 prove e a seguire le chiamate di funzione prima di trarre conclusioni. Ciò migliora la precisione dei LLM nelle attività di codifica e riduce significativamente gli errori nella localizzazione dei bug e nella risposta alle domande della base di codice.
Il ragionamento semi-formale fornisce un’analisi del codice semantica altamente affidabile e priva di esecuzione per gli sviluppatori che utilizzano master nelle attività di revisione del codice, riducendo notevolmente i costi infrastrutturali dei sistemi di codifica AI.
Ragionamento del codice intermediario
Il ragionamento del codice agentico è la capacità di un agente AI di navigare tra file, tenere traccia delle dipendenze e raccogliere in modo iterativo il contesto per eseguire analisi semantiche approfondite su una base di codice senza eseguire il codice. Nelle applicazioni IA aziendali, questa funzionalità è essenziale per scalare il rilevamento automatico degli errori, le revisioni complete del codice e la verifica delle patch in repository complessi in cui il contesto rilevante si estende su più file.
Attualmente il settore si avvicina alla verifica del codice senza esecuzione con due approcci principali. Il primo coinvolge valutatori LLM non strutturati, che tentano di convalidare il codice direttamente o formando LLM specializzati come modelli di ricompensa per approssimare i risultati dei test. Il loro più grande svantaggio è 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 indurre gli agenti a ragionare a fondo piuttosto che a fare supposizioni 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 di verifica automatico. Sebbene rigorosi, i metodi formali richiedono la definizione della semantica del linguaggio di programmazione. Ciò è del tutto impraticabile per basi di codice aziendali arbitrarie che abbracciano più framework e linguaggi.
Gli approcci attuali tendono inoltre ad essere altamente frammentati e specifici per compiti; spesso richiedono architetture completamente separate o formazione specializzata per ogni nuovo ambito problematico. Non hanno la flessibilità necessaria per applicazioni aziendali di grandi dimensioni e multiuso.
Come funziona il ragionamento semiformale?
Per colmare il divario tra previsioni non strutturate e prove matematiche eccessivamente rigorose, i ricercatori di Meta propongono una metodologia di manipolazione strutturata che chiamano “ragionamento semiformale”. Questo approccio fornisce ai rappresentanti LLM modelli di ragionamento strutturati e specifici per attività.
Questi modelli fungono da certificati logici obbligatori. Per completare un compito, l’agente deve dichiarare esplicitamente le premesse, seguire percorsi di esecuzione per test specifici e trarre una conclusione formale basata solo su prove verificabili.
Il modello obbliga l’agente a raccogliere prove dal codice base prima di prendere una decisione. Invece di prevederne il comportamento in base a convenzioni di denominazione a livello superficiale, l’agente deve effettivamente seguire passo dopo passo le chiamate di funzione e i flussi di dati. Questa raccolta sistematica di prove 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 semiformale in tre compiti di ingegneria del software: verifica dell’equivalenza delle patch per determinare se due patch producono gli stessi risultati dei test senza eseguirli, localizzazione dei bug per determinare 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 sono serviti come agenti di validazione autonomi.
Il team ha confrontato il proprio approccio strutturato semi-formale con una varietà di linee di base, compreso il ragionamento standard, in cui a un modello di agente vengono forniti segnali minimi e gli è consentito esprimere liberamente il suo pensiero in un linguaggio naturale non strutturato. Sono stati anche confrontati con i tradizionali algoritmi di somiglianza del testo. diverso.
Nell’equivalenza delle patch, il ragionamento semiformale ha aumentato la precisione dal 78% all’88% su esempi impegnativi e selezionati utilizzando il ragionamento standard. Nel mondo reale, durante la valutazione delle patch generate dall’agente con le specifiche di test esistenti, il modello Opus-4.5 che utilizza il ragionamento semi-formale ha raggiunto un’accuratezza di convalida del 93%, superando sia la linea di base one-shot non strutturata dell’86% sia la linea di base difflib del 73%. Altri compiti hanno mostrato guadagni generalmente simili.
L’articolo evidenzia il valore del ragionamento semiformale attraverso esempi del mondo reale. In un caso, lo strumento valuta due patch che tentano di correggere un bug nel repository Python Django che ha una formattazione dell’anno a 2 cifre per gli anni precedenti al 1000 d.C. Una patch utilizza una funzione format() personalizzata all’interno della libreria che sovrascrive la funzione standard utilizzata in Python.
I modelli di ragionamento standard esaminano queste patch, presuppongono che format() si riferisca alla funzione incorporata standard di Python, calcolano che entrambi gli approcci restituiranno la stessa stringa e riporteranno erroneamente l’equivalente delle patch.
Con il ragionamento semi-formale, l’agente segue il percorso di esecuzione e controlla le definizioni dei metodi. Seguendo il modello configurato, l’agente scopre che il nome format() in uno dei file della libreria è in realtà nascosto da una speciale funzione a livello di modulo. L’agente dimostra formalmente che, dati gli attributi dell’input 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 richiedere l’esecuzione e potenzialmente ridurre i costi di verifica nelle pipeline di formazione RL evitando costose esecuzioni sandbox”.
Avvertenze e compromessi
Sebbene il ragionamento semiformale offra miglioramenti significativi in termini di affidabilità, gli sviluppatori aziendali dovrebbero prendere in considerazione alcuni avvertimenti pratici prima di adottarlo. Esiste un chiaro equilibrio tra calcolo e latenza. Il ragionamento semiformale richiede più chiamate API e token. Nelle valutazioni di equivalenza delle patch, il ragionamento semiformale richiedeva circa 2,8 volte più passaggi di esecuzione rispetto al ragionamento non strutturato standard.
Inoltre, la tecnica non migliora universalmente le prestazioni, soprattutto se il modello è già abbastanza esperto in un compito particolare. Quando i ricercatori hanno valutato il modello Sonnet-4.5 in un benchmark di domande e risposte sul codice, il ragionamento non strutturato standard aveva già raggiunto un’elevata precisione di circa l’85%. In questo scenario, l’applicazione del modello semi-formale non ha prodotto ulteriori vantaggi.
Inoltre, il ragionamento strutturato può produrre risposte false estremamente sicure. Poiché l’agente è costretto a creare catene di prove dettagliate e formali, può diventare eccessivamente fiducioso se la sua ricerca è approfondita ma incompleta. In una valutazione Python, lo strumento ha monitorato meticolosamente cinque diverse funzioni per scoprire un caso limite valido, ma ha completamente trascurato il fatto che un pezzo di codice downstream stava già gestendo in modo sicuro questo esatto scenario. Poiché aveva stabilito una forte catena di prove, stava raggiungendo la conclusione sbagliata con una sicurezza estremamente elevata.
La fiducia del sistema nelle prove concrete viene meno anche quando raggiunge i limiti del codice base. Quando si analizzano librerie di terze parti per le quali il codice sorgente sottostante non è disponibile, lo strumento ricorrerà comunque a ipotesi di comportamento basate sui nomi delle funzioni.
In alcuni casi, nonostante le istruzioni rigorose, i modelli talvolta non riescono a seguire con precisione i percorsi di esecuzione concreti.
In definitiva, sebbene il ragionamento semiformale riduca notevolmente le previsioni e le allucinazioni non strutturate, non le elimina completamente.
Cosa dovrebbero comprare gli sviluppatori
Questa tecnica può essere utilizzata immediatamente, senza richiedere formazione del modello o imballaggio speciale. L’esecuzione del codice è gratuita; Ciò significa che non è necessario aggiungere strumenti aggiuntivi al tuo ambiente LLM. Per ottenere una maggiore precisione nelle attività di revisione del codice, paghi maggiori commissioni di elaborazione al momento dell’inferenza.
I ricercatori suggeriscono che il ragionamento ad azione strutturata può offrire “un’alternativa flessibile ai classici strumenti di analisi statica”: invece di codificare la logica di analisi in algoritmi proprietari, possiamo guidare gli agenti LLM con modelli di ragionamento specifici per attività che generalizzano attraverso linguaggi e strutture."
I ricercatori hanno reso disponibili modelli di prompt in modo che possano essere facilmente implementati nelle tue app. Anche se si parla molto della morte dell’ingegneria ad hoc, questa tecnica mostra quante prestazioni si possono ancora ottenere da prompt ben strutturati.















