Ricerca
Diff e file interi: un confronto empirico tra generazione iterativa basata su modifiche e generazione diretta per modelli di codice Flutter/Dart
I modelli linguistici di grandi dimensioni usati per modificare il codice possono essere addestrati e impiegati secondo almeno due modalità di output: la generazione diretta, in cui il modello produce

- arXiv
- 2609.05779
- Pubblicato
- 2026-09-05
- Autori
- Andrej Andrejev
Abstract degli autori
I modelli linguistici di grandi dimensioni usati per modificare il codice possono essere addestrati e impiegati secondo almeno due modalità di output: la generazione diretta, in cui il modello produce l’intero file modificato in una sola volta, e la generazione iterativa basata su diff («passaggi»), in cui produce una sequenza di modifiche localizzate di ricerca e sostituzione, applicate una alla volta finché non segnala di aver terminato o non esaurisce il numero di passaggi a disposizione. La modalità basata su diff è interessante perché rispecchia il modo in cui gli sviluppatori modificano il codice e dovrebbe richiedere molti meno token generati per turno. Addestriamo in entrambe le modalità due modelli di codice — un modello da 100 milioni di parametri addestrato da zero (Rainbow-Pony-100M) e un Qwen2.5-Coder-0.5B sottoposto a fine-tuning — su un dataset Flutter/Dart comune, e valutiamo tutti e quattro i modelli risultanti su un insieme di test separato di circa 1.790 compiti per modello. La generazione diretta supera nettamente quella basata su diff in ogni metrica misurata — tasso di superamento della compilazione e dell’analisi statica, bit per byte, somiglianza a livello di caratteri con il riferimento e valutazioni in cieco di un LLM giudice sul raggiungimento dell’obiettivo, sulla correttezza e sulla qualità del codice — e il divario persiste sia dopo aver controllato la difficoltà dei compiti mediante un confronto tra ID appaiati, sia limitando l’analisi al codice che viene compilato in entrambe le modalità. Individuiamo poi un unico meccanismo, indipendente dall’architettura, alla base delle condizioni in cui la generazione basata su diff prevale: è competitiva per modifiche brevi e localizzate in porzioni circoscritte del codice, e i suoi vantaggi a livello di categoria si concentrano proprio nelle due categorie di compiti — refactoring e correzioni relative alla gestione degli errori e ai casi limite — che nel nostro dataset hanno il minor numero medio di passaggi di modifica. Chiamiamo questo fenomeno «località del compito» e ne discutiamo le implicazioni per stabilire quando una modalità di addestramento basata su modifiche sia, o non sia, la scelta giusta per un modello che modifica il codice.
Il riassunto di questo paper è disponibile solo in inglese: leggilo nella pagina inglese.
Leggi il paper originale su arXiv