Agenti AI e automazione: come usarli con criterio in fase di sviluppo

agenti ai

In questi ultimi anni, nell’ambito dello sviluppo software, è divenuto sempre più comune sentir parlare dei cosiddetti agenti AI, strumenti basati su modelli di intelligenza artificiale generativa e addestrati sul codice. Soluzioni come GitHub Copilot, Amazon CodeWhisperer o i chatbot di OpenAI (ChatGPT) sono ormai utilizzati regolarmente da moltissimi sviluppatori. Al contempo, nascono nuovi agenti ancora più autonomi, come AutoGPT o Devin, che hanno lo scopo di eseguire compiti complessi in maniera quasi indipendente.

Da semplici assistenti per l’auto-completamento, questi strumenti si sono evoluti fino ad essere in grado di svolgere intere funzioni o addirittura sviluppare applicazioni complete, partendo da descrizioni fornite sotto forma di linguaggio naturale. Ciò permette ai team di sviluppo di alleggerire il carico di lavoro generale, facendo svolgere agli agenti AI le parti ripetitive della programmazione.

Ma quali sono i limiti e i rischi degli agenti AI che interessano le software house e i reparti IT? Analizziamo ora come questi strumenti possono influenzare l’organizzazione del lavoro all’interno di un team e la qualità del codice.

Cosa sono e come funzionano gli agenti AI

Con “agenti AI” intendiamo una gamma di strumenti eterogenei, che possono essere integrati per svolgere attività di completamento automatico avanzato o essere entità autonome capaci di interagire con vari sistemi.

In generale, questi agenti si basano su Large Language Model (LLM) addestrati su enormi quantità di codice sorgente. Fornendo loro un prompt (ad esempio la descrizione di una funzione da implementare, un commento TODO, o una richiesta in linguaggio naturale), il modello genera il codice corrispondente o suggerisce i prossimi passi necessari per soddisfare la richiesta.

Sotto l’etichetta di “Agenti AI” rientrano almeno tre categorie di strumenti.

Assistenti integrati nell’IDE

Strumenti come GitHub Copilot o CodeWhisperer suggeriscono codice mentre si programma, completano funzioni e generano test partendo dai prompt immessi dallo sviluppatore. Lavorano sul contesto locale e agiscono come un copilota di programmazione statistica: predicono il frammento di codice più probabile dato ciò che vedono.

In studi controllati, Copilot ha permesso a un team di sviluppatori di implementare un server HTTP in JavaScript circa il 56% più rapidamente rispetto a un altro gruppo che non aveva utilizzato agenti AI nella scrittura del codice..

CodeWhisperer prevede inoltre una funzione molto utile, capace di avvertire il developer se il codice che sta suggerendo somiglia a quello di altri progetti pubblici, segnalandone anche la provenienza e quali regole ne permettono l’uso, rassicurando lo sviluppatore sull’originalità del proprio operato.

Assistenti conversazionali generalisti

In questa categoria rientrano modelli come ChatGPT, usati per generare o spiegare codice via chat: si incolla uno snippet o si descrive il problema (es.“mi serve una funzione che…”) e il modello propone soluzioni e alternative.

Sono utili soprattutto per generare rapidamente esempi e “scheletri” di implementazione, esplorare librerie o linguaggi poco conosciuti e farsi spiegare codice legacy.

    Agenti AI autonomi

    Sono sistemi che, oltre a generare testo o codice, possono pianificare e compiere azioni multiple, come creare file, eseguire comandi, modificare repository o utilizzare API esterni. Per avere degli esempi pratici, prendiamo in considerazione due strumenti: AutoGPT e Devin.

    Il primo collega il modello a una serie di azioni (scrivere file, eseguire comandi, navigare) e può svolgere autonomamente un compito.

    Devin si spinge ancora oltre a questo approccio: è pensato per prendere in carico attività più ampie, come refactoring o piccole feature, ed è già stato utilizzato in progetti reali per migrare grandi quantità di codice in tempi molto più brevi rispetto al lavoro manuale.

    Scenari di utilizzo degli agenti AI

    Gli Agenti AI funzionano particolarmente bene in alcuni ambiti specifici.

    Uno di questi è il codice ripetitivo: tutto ciò che è boilerplate, i pattern già consolidati, le piccole variazioni su soluzioni note. Qui gli agenti AI riducono il lavoro meccanico e correggono gli errori comuni, senza stravolgere il design e l’architettura di partenza.

    Un altro campo in cui l’agente AI può offrire supporto riguarda la scrittura di test e documentazione, due attività percepite come necessarie ma poco gratificanti. Molti sviluppatori usano Copilot o ChatGPT per generare test unitari partendo da una funzione esistente, oppure per ricevere proposte di casi limite che non avevano considerato.

    Tuttavia, gli agenti AI offrono le migliori performance nei lavori lunghi, ripetitivi e strutturati, ad esempio nel refactoring. Il caso Nubank–Devinè uno degli esempi più lampanti: milioni di righe di codice ETL sono state spostate verso un’architettura modulare in poche settimane invece che in mesi. L’agente si occupava dei passaggi meccanici, mentre gli ingegneri si concentravano su esempi, controlli e gestione delle eccezioni.

    In scenari del genere, gli Agenti AI funzionano bene perché possono sostituire lo sviluppatore in compiti ripetitivi, ben definiti e facili da validare con regole oggettive. Come specificato in precedenza, il developer rimane invece indispensabile per la revisione e tutte quelle attività di sviluppo che richiedono una valutazione umana.

    I limiti: qualità del codice e debito tecnico

    Nonostante gli agenti abbiano una grandissima utilità nelle attività di sviluppo software, non sono in grado di vedere l’architettura complessiva. Sono la soluzione ideale per modificare o suggerire singoli snippet, ma sicuramente non per l’intera gestione del progetto nel corso del tempo.

    Alcune analisi su grandi repository hanno rilevato un aumento del code churn (linee aggiunte e poi modificate o rimosse a breve distanza) dopo la diffusione massiva degli agenti AI, segnale che il codice viene prodotto più rapidamente, ma che deve comunque essere ripulito dal team di sviluppo.

    C’è anche da considerare l’aspetto della dipendenza cognitiva. Se chi programma si abitua a scrivere solo commenti e premere tab finché l’AI non produce qualcosa di plausibile, il developer finirà per comprendere sempre meno come funziona e a cosa serve quel pezzo di codice. Il rischio è piuttosto evidente: quando, magari mesi dopo, saranno necessarie modifiche o correzioni, nessuno saprà da dove cominciare per apportarle.

    Gli Agenti AI non eliminano il debito tecnico, anzi: a volte rischiano di accelerarne la crescita. Usarli senza un criterio o un progetto ben realizzato dal punto di vista organizzativo, potrebbe comportare una crescita di tale debito. Se vengono usati per attività di refactoring in modo sistematico, possono invece aiutare a ripagarlo.

    Dati, licenze, responsabilità

    Finché il codice resta in ambiente di test, è difficile rilevare eventuali problemi. Quando si entra nella produzione vera e propria, invece, emergono le questioni più delicate riguardo all’utilizzo degli agenti AI.

    Che cosa succede ai dati che inserisco nel prompt?

    Le aziende hanno cominciato a vietare agli sviluppatori di copiare e incollare codice proprietario in strumenti generici proprio per evitare che frammenti finiscano in log o dataset gestiti da terzi. i fornitori più strutturati offrono modalità “enterprise”, in cui dichiarano di non usare i dati dei clienti per riaddestrare i modelli, o permettono di eseguire il modello in ambienti isolati.

    E le licenze del codice generato?

    Strumenti come Amazon CodeWhisperer hanno introdotto un reference tracker che segnala quando un suggerimento degli agenti Ai assomiglia a codici open source usati per l’addestramento, indicando repository e licenza.

    Strumenti come Copilot di Microsoft si assumono la responsabilità (entro certi limiti) qualora vengano intraprese azioni legali relative al copyright. Tale responsabilità non libera comunque gli sviluppatori dal dover controllare cosa stanno includendo nel codice.

    Le aziende che utilizzano agenti AI devono individuare fornitori affidabili, stabilire quali filtri attivare e quali aree di codice escludere da questi strumenti.

    Sicurezza: non è solo una questione di bug

    Gli agenti AI non hanno un istinto di autodifesa: se lo sviluppatore non guida con attenzione questi strumenti, possono produrre codice che potrebbe anche funzionare, esponendo però il sistema a potenziali attacchi.

    Gli stessi produttori di AutoGPT avvertono che la modalità continua, la funzione principale che permette all’agente di eseguire comandi senza conferme da parte dell’utente, è potenzialmente pericolosa e va usata con molta prudenza. Parallelamente, strumenti come CodeWhisperer hanno iniziato a integrare degli scanner di sicurezza che segnalano eventuali pattern rischiosi, ma non sostituiscono comunque quella che deve essere la revisione umana.

    Il codice generato dagli agenti AI va trattato come non attendibile, almeno finché non è stato verificato e testato.

    Approcciare l’adozione degli agenti AI

    Come si possono integrare gli agenti AI nei flussi di sviluppo senza comprometterne la qualità?

    Innanzitutto, è bene partire da ambiti circoscritti e facilmente controllabili, come test, porzioni di boilerplate o refactoring su componenti già ben coperti da test automatizzati. In questi contesti, gli eventuali errori dell’agente AI emergono rapidamente e hanno un impatto limitato.

    Gli agenti AI devono essere considerati meri strumenti che producono solo una prima versione del codice, mentre la valutazione finale resta in capo allo sviluppatore e al team. In una sperimentazione attuata dal governo britannico su vari assistenti di codice, solo il 15% circa del codice generato è stato accettato così come era stato suggerito. Il resto è stato modificato dagli sviluppatori prima di andare avanti.

    Sul piano operativo, per le aziende sarebbe utile introdurre alcune regole di base:

    1. Il codice generato dagli agenti AI deve essere sottoposto a test prima dell’integrazione;
    2. Quando si trattano parti critiche come sicurezza o componenti regolamentati, non devono mai essere accettate senza una revisione umana approfondita;
    3. Gli agenti autonomi dovrebbero operare esclusivamente in ambienti di test, con ambiti di azione e permessi limitati.

    Nel complesso, si può dire che le aziende considerano ormai gli agenti AI come parte integrante del processo di sviluppo, in qualità di strumenti capaci di supportare la produzione e la manutenzione del software per quanto riguarda la progettazione, i test e i processi di revisione. La presenza umana, tuttavia, rimane imprescindibile.

    Condividi su:

    ARTICOLI CORRELATI

    Iscriviti alla nostra newsletter e scopri come digitalizzare la tua attività!