L’AI mira a prevedere e correggere gli errori di codifica degli sviluppatori prima che si verifichi il disastro.

L'AI mira a prevedere e correggere gli errori di codifica dei programmatori prima che si verifichi il disastro.

L'IA generativa viene combinata con i sistemi DevOps che possono individuare le cause dei fallimenti delle applicazioni e prevedere i fallimenti.

L’IA generativa viene combinata con i sistemi DevOps che possono individuare le cause dei fallimenti delle applicazioni e prevedere i fallimenti.

È ancora troppo presto per fidarsi di GitHub Copilot di Microsoft per correggere automaticamente il tuo codice di programmazione. Microsoft stessa ha dichiarato che il programma, venduto come un’aggiunta di $10 al mese a GitHub, “non scrive codice perfetto” e “potrebbe contenere modelli di codifica non sicuri, bug o riferimenti a API o modi di dire obsoleti”.

Special Feature

L’intersezione tra IA generativa e ingegneria

L’aumento dell’IA generativa può sfruttare un enorme potenziale per il campo dell’ingegneria. Può anche comportare sfide, poiché imprese e ingegneri stanno cercando di capire l’impatto dell’IA sui loro ruoli, strategie aziendali, dati, soluzioni e sviluppo del prodotto. Come sarà il futuro di questa fusione tra IA generativa e software? ENBLE analizza da tutti i punti di vista.

Leggi ora

Tuttavia, il sogno dell’automazione suggerisce che un giorno l’intelligenza artificiale prevederà un difetto in un programma che può causare il malfunzionamento o il blocco dei sistemi, e non solo avvertirà lo sviluppatore prima che il codice venga messo in produzione, ma gli dirà anche come modificare il codice per evitare il problema. L’IA potrebbe persino intervenire nel codice dell’applicazione e correggerlo automaticamente per il programmatore, risparmiandogli un notevole sforzo. 

Le basi di un futuro del genere si possono già vedere negli strumenti attuali per DevOps e osservabilità. L’azienda produttrice di strumenti DevOps Dynatrace ha sviluppato negli anni ciò che chiama “IA causale” e “IA predittiva” per identificare le cause dei malfunzionamenti dei programmi e prevedere come falliranno. 

Inoltre: L’IA cambierà in modo drastico lo sviluppo del software 

La fase successiva consiste nell’applicare l’IA generativa a questi strumenti di osservabilità per fornire suggerimenti ai programmatori su come il loro codice incontrerà difficoltà e come alleviarle. 

“La richiesta tipica da parte di un CIO è: per favore ripara il mio sistema prima che si guasti effettivamente”, ha affermato Bernd Greifeneder, direttore tecnico di Dynatrace.

“La richiesta tipica da parte di un CIO è: per favore ripara il mio sistema prima che si guasti effettivamente”, ha detto Bernd Greifeneder, direttore tecnico e co-fondatore di Dynatrace, in un’intervista con ENBLE. Dynatrace è un’azienda di software commerciale nel mercato di DevOps ed osservabilità che vende strumenti per la gestione del ciclo di vita delle applicazioni. 

Considera un problema comune nei sistemi: quando si esaurisce lo spazio su disco in Amazon AWS. 

“È del tutto ironico”, ha osservato Greifeneder. “Anche in questi giorni di tecnologia avanzata, è un problema che i dischi cloud in qualche parte di AWS si esauriscono, e dobbiamo attivare chiamate API per ridimensionarli. Non vogliamo ridimensionarli [i dischi] preventivamente perché è costoso, quindi vogliamo ottimizzare quello che usiamo, ma i modelli di utilizzo possono cambiare a seconda di quanti clienti abbiamo nei nostri cluster e così via.”

Ciò che serve è creare un codice che si azioni quando sembra probabile un errore di spazio su disco basandosi sulle prestazioni passate. 

Per affrontare il problema, l’azienda identifica prima una “causa principale” di un errore del disco con la combinazione di IA causale e IA predittiva. Questi due strumenti non si basano su modelli di linguaggio complessi e altre forme di IA generativa. Invece, si affidano a forme più vecchie e consolidate di intelligenza artificiale che possono garantire risultati rigorosi e consistenti. 

Nel caso dell’IA causale, il programma utilizza diversi algoritmi tra cui la regressione quantile, la stima di densità e quello che viene chiamato un modello di navigazione casuale. A differenza delle reti neurali che vengono addestrate su un insieme statico di dati per rilevare correlazioni tra i punti dei dati, i programmi causali vengono utilizzati per percorrere un grafo che rappresenta gli elementi del sistema IT di un’azienda e le loro relazioni.

“I modelli statistici tipici o i modelli di apprendimento di tipo rete neurale non funzionano per i sistemi IT dinamici nell’ambito più ampio”, ha detto Greifeneder, perché le variabili cambiano troppo. “I nostri clienti possono avere decine di migliaia o centinaia di migliaia di pod, molti dei quali sono interconnessi e cambiano mentre il traffico viene instradato e le cose si ridimensionano e ci sono diverse versioni, ecc.”

Per costruire quello che Greifeneder chiama un “modello in memoria e in tempo reale” di tutto il sistema IT di un cliente, i programmi di intelligenza artificiale causali costruiscono un “modello multidimensionale che ha la dipendenza causale, diretta, simile a un grafo multidimensionale” di tutte le entità – da quale servizio cloud viene utilizzato a quale versione di Kubernetes viene utilizzata a quale app viene eseguita. Quel modello, chiamato Smartscape, viene consultato ogni volta che si verifica un problema di sistema che solleva allarmi, “inferendo la causa principale attraverso il percorso di quel modello Smartscape”.

Inoltre: Le aziende hanno bisogno di chiarezza sui prezzi mentre i servizi di IA generativa entrano sul mercato

Quel modello causale non anticiperà le variazioni nel business, però. “Conosce la causa principale” delle cose, “ma ciò che non sa è il tuo modello di business”, ha detto Greifeneder, che significa cose come “il lunedì mattina alle 8:00 AM, hai un grande picco di utilizzo per qualsiasi motivo”.

Per tali aberrazioni, “è necessario un certo tipo di apprendimento basato sulla storia”, ha detto Greifeneder.

Per ottenere quell’apprendimento storico, un componente di intelligenza artificiale predittiva utilizza un altro set di strumenti ben sviluppati, come una media mobile integrata auto regressiva, che è un algoritmo particolarmente adatto per mettere insieme modelli che si verificano nel tempo.

L’IA causale e predittiva di Dynatrace utilizza una varietà di approcci algoritmici collaudati nel tempo per analizzare i segnali di ciò che sta accadendo in un’applicazione di produzione.

È importante sottolineare che l’IA predittiva non guarda solo i sistemi sul backend, come il server. Riceve anche segnali dagli endpoint di una rete, come ad esempio come l’utente finale sta vivendo ritardi o interruzioni del servizio.

“Guardare solo ai sistemi lato server non è sufficiente”, ha detto Greifeneder. “Il monitoraggio degli utenti reali, ad esempio, o il monitoraggio del servizio API, è un aspetto importante per capire le dipendenze”.

Mentre un CIO si preoccupa soprattutto dei sistemi, possono verificarsi problemi degli utenti anche quando i server funzionano correttamente, quindi sia il backend che l’esperienza dell’utente devono essere misurati e confrontati.

Inoltre: Cosa stanno dicendo gli analisti sul futuro dell’IA generativa

“A volte incontriamo persone che si preoccupano solo dei loro server – ‘Oh, il mio server è attivo’ – ma, in realtà, gli utenti sono frustrati”, ha detto. “Esiste anche l’opposto: solo perché una di quelle CPU va fuori controllo, non significa che l’utente finale ne sia influenzato”.

Tornando all’esempio dello spazio su disco, l’IA causale e predittiva può anticipare un futuro problema di spazio su disco. “Possiamo estrapolare dai giorni e dalle settimane precedenti l’utilizzo nel cluster per vedere se” Oh, corriamo il rischio che tra una settimana potremmo rimanere senza spazio su disco “, ha detto Greifeneder.

Questa è la spinta a compiere misure preventive, come ad esempio “Triggeriamo ora una azione di flusso di lavoro dal motore di automazione di Dynatrace per chiamare un’API in AWS per ridimensionare il disco e quindi prevenire automaticamente un’interruzione che abbiamo avuto in passato perché di questo”.

È qui che si collega l’IA generativa nel processo. Davis AI, il programma ombrello di Dynatrace, quest’anno ha aggiunto un componente chiamato Davis CoPilot che si basa sui sistemi causali e predittivi.

Inoltre: 4 modi per aumentare l’usabilità dell’IA

Un utente può digitare al CoPilot: “crea un’automazione che impedisce effettivamente questo [interruzione del disco in modo proattivo].” Il CoPilot può inviare una richiesta all’IA causale e predittiva per chiedere a quali dischi si riferiscono in quella richiesta. In risposta, il programma Davis utilizza Smartscape e le informazioni predittive per creare una richiesta con tutti i dettagli contestuali necessari per comprendere il sistema IT nel suo stato attuale.

Quella richiesta viene quindi inviata al CoPilot, che, una volta forniti i dettagli, “ti restituirà il modello del flusso di lavoro da automatizzare” ridimensionando il disco, spiega Greifeneder. “Darà a te, come utente, la possibilità di rivedere e dire, OK, è approssimativamente corretto, grazie, mi hai aiutato al 90%,” il che può risparmiare tempo all’ingegnere di sistema rispetto alla costruzione di un flusso di lavoro da zero.

Il passo successivo è che il programma Davis AI riporti tutte queste osservazioni al programmatore al momento in cui stanno scrivendo l’applicazione. Il Santo Graal dello sviluppo delle applicazioni è prevenire la scrittura di codice che causa errori prima che l’applicazione venga messa in produzione, anziché dover sistemare le cose successivamente.

Un approccio è quello che Dynatrace chiama un guardiano. Un individuo DevOps può chiedere al CoPilot, in linguaggio naturale, di creare un guardiano per prendersi cura di un obiettivo di prestazioni specifico prima che l’applicazione venga messa in produzione. L’azienda definisce questo “definizione di un obiettivo di qualità nel codice.” Gli elementi causali e predittivi vengono quindi utilizzati per verificare se il codice soddisferà o meno gli obiettivi definiti.

Inoltre: Come ho ingannato ChatGPT facendogli dire bugie

Ovviamente, se il Davis AI nota un codice potenzialmente problematico, il problema è quindi come risolverlo. È possibile fare in modo che il Davis CoPilot consigli al programmatore possibili correzioni nel codice, anche se questa è ancora un’area emergente.

“Stiamo pensando, con questo Davis CoPilot, di fornire raccomandazioni su come abbiamo identificato questa vulnerabilità in produzione basandoci sul tuo stack tecnologico, e Davis CoPilot ti fornisce queste raccomandazioni che dovresti controllare per correggere il tuo codice”, ha detto Greifeneder a ENBLE.

È ancora presto nell’uso dell’IA generativa per quel tipo di raccomandazioni di correzione del codice, ha detto Greifeneder. Mentre l’IA causale-predittiva è progettata per essere affidabile, gli algoritmi generativi soffrono ancora del fenomeno delle “allucinazioni”, il che significa che il programma afferma con sicurezza informazioni inaccurate.

“Ciò che è affidabile è ciò che proviene dall’IA causale perché quello è lo stato di sistema accurato”, ha detto. “Quello che non è affidabile è la raccomandazione potenziale su come modificare il codice perché ciò proviene dai modelli pubblici GPT-4.”

Inoltre: A tutti piace lo sviluppo a basso/no code, ma non tutti sono pronti per questo

Pertanto, le suggerimenti di codice per la correzione possono partire da una premessa valida, ma incontrano lo stesso problema di GitHub Co-pilot: non avere un senso veramente rigoroso di quale codice sia appropriato. È necessario integrare modelli di linguaggio estesi in modo più stretto con gli strumenti che Dynatrace e altri forniscono, per dare una base alle suggestioni dell’IA generativa.

Studi formali su GPT-4 e simili riportano risultati molto misti nel trovare e correggere vulnerabilità del codice. Il articolo tecnico rilasciato da OpenAI con l’introduzione di GPT-4 a marzo ha messo in guardia dal fare affidamento sul programma. GPT-4, ha affermato, “[…] è stato poco efficace nel creare exploit per le vulnerabilità identificate.”

Uno studio a febbraio sul predecessore di GPT-4, GPT-3, condotto dal ricercatore dell’Università della Pennsylvania Chris Koch, è stato incoraggiante. Ha mostrato che GPT-3 è stato in grado di trovare 213 vulnerabilità in una collezione di file di repository GitHub selezionati per le loro vulnerabilità conosciute. Quel numero era molto superiore ai 99 errori trovati da uno strumento di valutazione del codice popolare chiamato Snyk, una forma di “Static Application Security Testing,” o SAST, comunemente usata per testare le vulnerabilità del software.

Ma, ha osservato Koch, sia GPT-3 che Snyk hanno perso molte vulnerabilità, hanno avuto molti “falsi negativi”, come sono conosciuti.

Uno studio successivo, condotto dalla società di sicurezza informatica PeopleTec, si è basato sul lavoro di Koch, testando una versione aggiornata di GPT-4 rilasciata nell’agosto. Ha scoperto che GPT-4 ha individuato quattro volte più vulnerabilità negli stessi file.

Tuttavia, in entrambi gli studi, GPT-4 è stato testato su file che rappresentano un totale di poco più di 2000 righe di codice. Questo è insignificante rispetto alle applicazioni di produzione complete, che possono contenere centinaia di migliaia o milioni di righe di codice, distribuite su numerosi file collegati. Non è chiaro che i successi dei problemi di gioco dei file di GitHub possano adattarsi a una tale complessità.

Inoltre: ChatGPT risponde in modo sbagliato a più della metà delle domande di ingegneria del software

La corsa è iniziata per cercare di amplificare i modelli di linguaggio per questa grande sfida. Oltre a Dynatrace, Snyk Ltd., una società privata del Regno Unito che vende una versione commerciale dello strumento open source, offre quello che chiama “DeepCode AI”. Snyk afferma che questa tecnologia può evitare gli errori dell’IA generativa integrandola con altri strumenti. “L’approccio ibrido di DeepCode AI utilizza modelli multipli e set di addestramento specifici per la sicurezza per un unico scopo: proteggere le applicazioni”, ha dichiarato l’azienda.

È evidente che l’IA generativa deve ancora affrontare anche tipi semplici di debug e correzione della programmazione, senza considerare la complessità di un ambiente IT di produzione in tempo reale. La grande svolta a sinistra attraverso l’IA non è ancora arrivata.

Ciò che è in arrivo, con Davis Copilot e sforzi simili, è l’utilizzo dell’IA generativa come una nuova interfaccia per aiutare i programmatori ad esaminare più aggressivamente il proprio codice, sia prima che dopo l’invio di tale codice.