Gli esperti IT si fanno sempre più desiderare sul mercato e, in uno scenario geopolitico incerto come quello odierno, i budget sono ridotti al minimo. È quindi stato accolto con curiosità e ottimismo l’annuncio dei ricercatori dell’Università dell’Illinois Urbana-Champaign. Sembra abbiano trovato il modo per riparare i bug del software a costi ridotti. Il fatto che ci sia di mezzo ChatGPT fa ancora storcere il naso ad alcuni, ma solo per qualche minuto. I vantaggi prospettati permettono di gran lunga di superare quasi ogni iniziale e preconcetta diffidenza.
I due “invece” di ChatRepair
In un recente preprint intitolato, “Keep the Conversation Going: Fixing 162 out of 337 bugs for $0.42 each using ChatGPT” c’è spiegato tutto. I due ricercatori hanno provato a sfruttare le doti di ChatGPT per migliorare l’Automated Program Repair (APR). Il loro obiettivo è quello di sviluppare tecniche per la correzione dei bug di programmazione che rendano automatico tale processo.
Se ci si rifà alle tecniche APR tradizionali, si ottengono patch poco variegate e che richiedono un’ampia messa a punto manuale. Provando a condividere questo lavoro con il Large Language Model (LLM) gli output già migliorano, ma non si riesce cambiare la strategia di base. In entrambi i casi, infatti, si parte da un campione iniziale e si generano una serie di patch, per poi convalidarle una a una. Un approccio, non troppo funzionale ma, soprattutto, limitato: produce ripetutamente patch errate e non è mai in grado di imparare dai propri fallimenti. Tutto ciò si traduce in costi consistenti e in tempistiche poco efficienti.
Facendo leva sulle capacità di comprensione e apprendimento di software come ChatGPT, i ricercatori hanno invece scelto un altro approccio, creando quello che hanno chiamato ChatRepair. Come il nome fa intuire, questo strumento sarebbe in grado di riparare bug automaticamente in modo del tutto innovativo. Lo si può affermare con certezza, perché si basa sui fallimenti dei test, imparando dalle proprie “cadute”. Non solo, è anche in grado di fare tesoro delle indicazioni che riceve via chat, dagli umani che vogliono trasmettergli la loro esperienza.
Ne risulta uno strumento meno banale da usare, ma con risultati meno imprecisi e ripetitivi. È senz’altro un passo avanti rispetto ai metodi finora utilizzati dal mercato.
Invece di generare direttamente patch basate sul codice difettoso, ChatRepair fornisce informazioni sui fallimenti dei test per aiutare gli LLM nella generazione delle patch. Invece di campionare continuamente dallo stesso prompt, ChatRepair tiene traccia della cronologia delle conversazioni e impara dai precedenti tentativi di patch tramite prompt, che siano falliti o riusciti. Queste due consistenti differenze rendono la scoperta davvero disruptive. Si apre un nuovo capitolo nel mondo dell’IT
Sbagliando si impara, anche con i bug
Continuando ad allenare ChatRepair, senza mai cessare di metterlo alla prova, i due ricercatori hanno notato che il codice migliorava il codice, man mano che incorporava patch errate con i relativi dati sui test falliti. Un nuovo modo di operare che evita la ripetizione continua dei soliti errori e permette la generazione di più patch plausibili. È una buona strada per far aumentare anche la probabilità di una efficace correzione.
Come è spiegato nel documento, il punto di forza di questo nuovo strumento consiste nell’inclusione dei dati sui fallimenti dei test. In questo modo, l’AI può ricavare informazioni che la aiutano man mano a fornirne altrettante, con maggiore precisione e maggiore “intelligenza”. Si passa dal tipo di bug al comportamento corretto previsto del codice, “solo” sfruttando le capacità di comprensione di ChatGPT.
Il balzo in efficienza non è solo una impressione, sull’onda dell’entusiasmo per questa novità. Non c’entra nulla nemmeno la voglia di cavalcare l’onda del successo dei LLM. Nel documento di ricerca si afferma che l’accesso ai dati sui fallimenti dei test avrebbe fatto aumentare il numero di bug risolti di oltre il 40%.
Questa performance si unisce ad altri vantaggi da non trascurare: si evita il costo delle chiamate API ridondanti e lo spreco di tempo di esecuzione della GPU. Risparmiare ore e denaro rappresenta sempre una fonte di soddisfazione e, oggi, un essenziale obiettivo.
Mentre presentano i risultati dei propri esperimenti, quelli raggiunti finora, i ricercatori stanno già guardando avanti. Il loro obiettivo finale è quello di automatizzare completamente la riparazione dei bug del software, minimizzando lo sforzo da parte degli sviluppatori. Ammettono loro per primi che c’è ancora molta strada da percorrere ma una tappa importante è stata appena raggiunta. Sono riusciti a dimostrare per la prima volta che un processo di riparazione può essere effettuato attraverso un chatbot.