Microsoft Research ha presentato debug-gym, un ambiente innovativo progettato per addestrare gli strumenti AI nella complessa arte del debug del codice.
Con l’espansione del ruolo dell’intelligenza artificiale nello sviluppo del software, debug-gym mira a risolvere un problema critico: mentre l’intelligenza artificiale è in grado di generare codice in modo efficiente, il debugging rimane una perdita di tempo importante per gli sviluppatori.
La proliferazione degli assistenti di codifica AI sta migliorando la produttività degli sviluppatori. Thomas Dohmke, CEO di GitHub, ha previsto nel 2023 che “prima o poi l’80% del codice sarà scritto da Copilot”.
Questa tendenza è evidente in tutto il settore, con grandi aziende e startup che si affidano sempre più all’IA per la generazione di codice. Garry Tan di Y Combinator ha sottolineato questo aspetto, osservando che per un quarto del loro ultimo gruppo di startup, il 95% del codice è stato scritto da grandi modelli linguistici (LLM).
Tuttavia, la realtà dello sviluppo del software comporta una quantità di debug molto maggiore rispetto alla scrittura del codice iniziale.
“In qualità di manutentori di popolari repository open-source, questo dato ci colpisce”, ha dichiarato il team di Microsoft Research. Hanno posto una domanda interessante: “Ma cosa succederebbe se uno strumento di intelligenza artificiale potesse proporre correzioni per centinaia di problemi aperti e noi dovessimo solo approvarle prima dell’unione?”.
Il debug, secondo la definizione dei ricercatori, è un processo interattivo e iterativo di correzione del codice. Gli sviluppatori in genere formulano ipotesi sui crash, raccolgono prove attraverso l’esecuzione del codice, esaminano i valori delle variabili (spesso utilizzando strumenti come il debugger Python, pdb) e ripetono questo ciclo finché il problema non viene risolto.
Debug-gym mira a dotare gli agenti di intelligenza artificiale di simili capacità di debug del codice. Si chiede: “fino a che punto gli LLM possono utilizzare strumenti di debug interattivi come pdb?”.
L’ambiente fornisce agli agenti AI che eseguono la riparazione del codice l’accesso a strumenti per la ricerca attiva di informazioni, ampliando le loro capacità di azione e osservazione. Gli agenti all’interno di debug-gym possono impostare punti di interruzione, navigare nel codice, ispezionare i valori delle variabili, creare funzioni di test e scegliere se indagare ulteriormente o riscrivere il codice in base al loro livello di fiducia.
“Riteniamo che il debug interattivo con strumenti adeguati possa consentire agli agenti di codifica di affrontare compiti di ingegneria del software del mondo reale e che sia fondamentale per la ricerca sugli agenti basata su LLM”, ha spiegato il team di Microsoft.
Le correzioni proposte da questi agenti potenziati – dopo l’approvazione umana – sarebbero basate sul contesto specifico della base di codice, sui dettagli dell’esecuzione del programma e sulla documentazione, andando oltre le semplici congetture basate sui dati di addestramento.
Debug-gym è costruito con diverse considerazioni chiave:
- Gestione a livello di repository: Gli agenti possono accedere e modificare i file dell’intero repository di codice.
- Robustezza e sicurezza: L’esecuzione del codice avviene all’interno di contenitori Docker in sandbox, isolando l’ambiente per evitare azioni dannose e consentendo al contempo di eseguire test approfonditi.
- Estensibilità: La piattaforma è progettata per una facile integrazione di nuovi strumenti di debug.
- Interazione basata sul testo: Le osservazioni sono presentate in testo strutturato (come JSON) e le azioni utilizzano una semplice sintassi testuale, garantendo la compatibilità con i moderni LLM.
I ricercatori possono utilizzare debug-gym con repository personalizzati e valutare le prestazioni dell’agente utilizzando benchmark come Aider (generazione di funzioni semplici), Mini-nightmare (esempi brevi e buggati) e SWE-bench (problemi del mondo reale che richiedono una profonda comprensione della codebase).
I primi esperimenti hanno coinvolto un semplice agente basato su prompt che utilizzava vari LLM (tra cui Claude 3.7, OpenAI o1 e OpenAI o3-mini) dotati di strumenti di debug come eval, view, pdb, rewrite e listdir.
Anche con questi strumenti, la soluzione di problemi complessi come quelli di SWE-bench Lite è rimasta impegnativa (raramente ha superato il 50% di successo), ma l’aumento delle prestazioni rispetto agli agenti senza strumenti di debug è stato significativo.
Il tasso di successo su SWE-bench Lite ha registrato un aumento relativo del 30% per Claude 3.7, del 182% per OpenAI o1 e del 160% per OpenAI o3-mini quando erano disponibili gli strumenti di debug.
I ricercatori attribuiscono la difficoltà generale alla mancanza di dati decisionali sequenziali (come le tracce di debug) negli attuali set di dati di formazione LLM. Tuttavia, il netto miglioramento convalida il potenziale di questa direzione di ricerca.
Il team di Microsoft Research ritiene che il passo successivo sia la messa a punto di LLM specifici per il debug interattivo. Ciò richiede la creazione di set di dati specializzati, registrando potenzialmente le interazioni degli agenti all’interno del debugger mentre raccolgono informazioni per risolvere i problemi.
A differenza dei compiti di ragionamento standard, il debug interattivo comporta un ciclo di azione, feedback ambientale e successivo processo decisionale, che richiede dati ricchi che catturino l’intera sequenza di risoluzione dei problemi.
Il piano prevede la messa a punto di un “modello di ricerca di informazioni” dedicato alla raccolta delle informazioni necessarie per la correzione dei bug, che fornirebbe poi un contesto pertinente a un modello primario di generazione del codice. Ciò potrebbe comportare che modelli di ricerca di informazioni più piccoli ed efficienti alimentino modelli di generazione più grandi, come un sistema avanzato di Retrieval Augmented Generation (RAG), risparmiando potenzialmente sui costi di inferenza dell’intelligenza artificiale.
Con l’open-sourcing di debug-gym, Microsoft Research invita la comunità più ampia a contribuire al progresso degli agenti di debug interattivi e, più in generale, degli agenti di IA in grado di ricercare attivamente informazioni dal loro ambiente.















