DeNovoSWE: Scaling Long-Horizon Environments for Generating Entire Repositories from Scratch
Questo articolo introduce DeNovoSWE, un dataset su larga scala e curato automaticamente di 4.818 istanze di generazione di interi repository progettato per addestrare agenti LLM per compiti di ingegneria del software a lungo termine, il quale aumenta significativamente le prestazioni sul benchmark BeyondSWE-Doc2Repo dal 5,8% al 47,2%.
Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo
Immaginate di avere un maestro architetto che è incredibilmente talentuoso nel riparare un singolo mattone rotto in un muro. Può guardare una specifica crepa, capire perché è accaduta e rammendarla perfettamente. Questo è ciò che i moderni assistenti di programmazione AI sanno fare bene: correggere piccoli bug in software esistenti.
Ma cosa succederebbe se chiedeste a quello stesso architetto di costruire un intero grattacielo da zero, partendo solo da uno schizzo vago su un tovagliolo? Questo è un lavoro molto più difficile. Richiede la pianificazione delle fondamenta, la progettazione degli ascensori, il cablaggio dell'elettricità e la garanzia che ogni stanza sia collegata logicamente. Finora, l'IA ha faticato in questo compito di "costruzione dell'intero edificio" perché non ha avuto abbastanza pratica.
Il Problema: Una mancanza di progetti
Il motivo principale per cui l'IA fatica a costruire interi "grattacieli" software (repository) è la mancanza di dati di addestramento. La maggior parte dei dati di addestramento esistenti è come una lista di "ripara questo rubinetto che perde" o "ripara questa finestra crepata". Esistono pochissimi dati che insegnino a un'IA come prendere una descrizione di alto livello (come un manuale utente) e trasformarla in un edificio completo e funzionale partendo da zero.
La Soluzione: DeNovoSWE
Il documento presenta DeNovoSWE, un nuovo e massiccio dataset di addestramento progettato specificamente per insegnare all'IA come costruire interi progetti software da zero. Pensatelo come una gigantesca biblioteca di 4.818 "sfide di costruzione". In ogni sfida, all'IA viene fornito un insieme dettagliato di istruzioni (documentazione) e deve costruire l'intero sistema software per corrispondere perfettamente a tali istruzioni.
Come hanno costruito i dati di addestramento (La strategia "Dividi e Conquista")
Costruire un dataset per questo scopo è difficile perché non si può semplicemente chiedere a un'IA di "scrivere un manuale per un'app complessa" e sperare che sia perfetto. Gli autori hanno utilizzato un team automatizzato e intelligente di agenti IA per svolgere il lavoro pesante:
- La fase di "Divisione": Immaginate di cercare di scrivere un manuale per una città enorme. È troppo grande per farlo tutto in una volta. Quindi, l'IA prima scompone la città in quartieri (capacità). Identifica cosa fa ogni quartiere e quali edifici (file di codice) appartengono ad esso.
- La fase di "Conquista": Ora, agenti IA specializzati scrivono il manuale per un solo quartiere alla volta.
- L'Agente Draft (Bozza): Scrive la prima versione del manuale.
- L'Agente Critic (Critico): Agisce come un editor severo. Controlla il manuale: "Hai dimenticato di spiegare come funzionano i semafori? Il diagramma del cablaggio è chiaro?".
- L'Agente Repair (Riparazione): Corregge gli errori trovati dal Critico.
- Questo ciclo si ripete finché il manuale non è perfetto.
- Il Test "Golden" (Dorato): Una volta scritto il manuale, il sistema crea una "stanza pulita" (sandbox). Prende il codice originale, lo scarta e lascia solo il manuale. Poi, chiede a un altro agente IA di ricostruire il software usando solo quel manuale. Se il nuovo software supera tutti i test, il manuale è considerato di alta qualità e viene aggiunto al dataset.
Mantenere l'IA onesta (Anti-imbroglio)
Una preoccupazione principale è che l'IA possa "barare" sbirciando il codice originale che doveva ricostruire. Gli autori hanno costruito un rigoroso sistema di sicurezza per impedirlo:
- Eliminano tutta la cronologia, le cache e i file nascosti.
- Bloccano l'IA dall'andare online per scaricare il codice originale.
- Si assicurano che l'IA sia veramente "a libro chiuso", costringendola a fare affidamento interamente sulla documentazione che le è stata fornita.
Il filtro "Consapevole della Difficoltà"
Non tutti i progetti di costruzione sono uguali. Alcuni sono piccoli capanni; altri sono grattacieli. Se conservassimo solo gli esempi di addestramento in cui l'IA costruisce un perfetto grattacielo al primo colpo, perderemmo tutte le lezioni preziose derivanti dai progetti difficili in cui l'IA è quasi riuscita ma ha commesso alcuni errori.
Gli autori hanno creato un filtro intelligente che osserva quanto è difficile un progetto.
- Per i progetti facili (un piccolo capanno), richiediamo un punteggio perfetto.
- Per i progetti difficili (un grattacielo), accettiamo un punteggio leggermente inferiore (ad esempio, l'80% di successo) perché ottenere un grattacielo perfetto è incredibilmente difficile.
Ciò assicura che l'IA impari sia dalle vittorie facili che dai momenti di "quasi successo" nei compiti difficili.
I Risultati
Quando hanno insegnato a un modello di IA utilizzando questo nuovo dataset, i risultati sono stati drammatici.
- Prima dell'addestramento, l'IA riusciva a costruire correttamente solo il 5,8% del software richiesto.
- Dopo l'addestramento con DeNovoSWE, il suo tasso di successo è balzato al 47,2%.
Questo dimostra che fornendo all'IA il giusto tipo di "pratica di costruzione" — scomporre i grandi problemi, utilizzare editor severi e imparare dai successi parziali — possiamo insegnare all'IA come passare dall'essere un semplice "riparatore di mattoni" a un vero "architetto del software".
Sommerso dagli articoli nel tuo campo?
Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.