L'intelligenza artificiale mira a prevedere e correggere gli errori di codifica degli sviluppatori prima che si verifichi un disastro

  • Nov 01, 2023

L’intelligenza artificiale generativa può essere combinata con forme più tradizionali di intelligenza artificiale per effettuare previsioni secondo Dynatrace, come i sistemi informatici potrebbero guastarsi prima che le applicazioni vengano messe in produzione CTO.

Errore di codifica

L’intelligenza artificiale generativa viene combinata con i sistemi DevOps in grado sia di individuare le cause di fallimento delle applicazioni sia di prevederne il fallimento.

seamartini/Getty Images

È troppo presto per fidarsi di GitHub Copilot di Microsoft per correggere automaticamente il codice di programmazione. La stessa Microsoft ha affermato che il programma, venduto come componente aggiuntivo da $ 10 al mese a GitHub, "non scrive codice perfetto" e "può contenere modelli di codifica, bug o riferimenti ad API o idiomi obsoleti".

Caratteristica speciale

L’intersezione tra intelligenza artificiale generativa e ingegneria

L’ondata di intelligenza artificiale generativa può sfruttare un enorme potenziale per il settore dell’ingegneria. Può anche comportare sfide, poiché sia ​​le imprese che gli ingegneri comprendono l’impatto dell’intelligenza artificiale sui loro ruoli, strategie aziendali, dati, soluzioni e sviluppo dei prodotti. Qual è la tabella di marcia futura per portare l’intelligenza artificiale generativa nel mondo del software? ZDNET decodifica da tutti gli angoli.

Leggi ora

Il sogno dell’automazione, tuttavia, suggerisce che un giorno l’intelligenza artificiale predirà un guasto in un programma che potrebbe interromperne la funzionalità. o disattivare i sistemi, e non solo avvisare uno sviluppatore prima che il codice entri in produzione, ma anche dirgli come alterare il codice per evitare il problema. L’intelligenza artificiale potrebbe anche essere in grado di accedere al codice dell’applicazione e risolverlo automaticamente per il programmatore, risparmiandogli uno sforzo significativo.

Gli ingredienti di un simile futuro possono essere visti negli strumenti odierni per DevOps e osservabilità. Produttore di strumenti DevOps Dynatrace da diversi anni costruisce quella che chiama "AI causale" e "AI predittiva", per identificare il motivo per cui i programmi falliscono e per prevedere come falliranno.

Anche: L’intelligenza artificiale cambierà lo sviluppo del software in modo massiccio

La fase successiva è quella di avvolgere l’intelligenza artificiale generativa attorno a questi strumenti di osservabilità per fornire ai programmatori suggerimenti su come il loro codice andrà incontro a problemi e su come alleviarli.

"La richiesta tipica da parte di un CIO è: sistemare il mio sistema prima che si guasti effettivamente", afferma Bernd Greifeneder, chief technology officer di Dynatrace.

Dynatrace

"La richiesta tipica da parte di un CIO è: sistemare il mio sistema prima che si guasti effettivamente", ha affermato Bernd Greifeneder, chief technology officer e co-fondatore di Dynatrace, in un'intervista a ZDNET. Dynatrace è un fornitore di software commerciale nel mercato DevOps e Osservabilità che vende strumenti per la gestione del ciclo di vita delle applicazioni.

Considera una trappola dei sistemi quotidiani: rimanere senza spazio su disco in AWS di Amazon.

"È assolutamente ironico", ha osservato Greifeneder. "Anche in questi giorni di altissima tecnologia, è un problema che i dischi cloud da qualche parte in AWS esauriscano lo spazio su disco e dobbiamo attivare chiamate API per ridimensionarli. Non vogliamo ridimensionarli [i dischi] in anticipo perché è costoso, quindi vogliamo ottimizzare ciò che utilizzare, ma i modelli di utilizzo possono cambiare a seconda del numero di clienti che abbiamo nei nostri cluster e così via via."

Ciò che serve è creare un codice che entri in azione quando sembra probabile un errore di disco esaurito in base alle prestazioni passate.

Per affrontare il problema, l’azienda identifica innanzitutto una “causa principale” di un guasto del disco con la combinazione di intelligenza artificiale causale e predittiva. Questi due strumenti non si basano su grandi modelli linguistici e altre forme di intelligenza artificiale generativa. Si affidano invece a forme di intelligenza artificiale più vecchie e consolidate su cui si può contare per produrre risultati rigorosi e coerenti.

Nel caso dell'intelligenza artificiale causale, il programma utilizza diversi algoritmi tra cui la regressione quantilica, la stima della densità e il cosiddetto modello di navigazione casuale. A differenza delle reti neurali addestrate su un insieme statico di dati per rilevare le correlazioni tra i punti dati, il i programmi causali vengono utilizzati per attraversare un grafico che rappresenta gli elementi del sistema IT di un'azienda e dei suoi relazioni.

"I modelli statistici tipici o i modelli di apprendimento del tipo di rete neurale non funzionano per i sistemi IT dinamici in un ambito più ampio", ha affermato Greifeneder, perché le variabili cambiano troppo. "I nostri clienti possono avere decine di migliaia o centinaia di migliaia di pod, e molti di loro lo sono sono interconnessi e cambiano mentre il traffico viene instradato, e le cose si ridimensionano, e ci sono versioni diverse, eccetera."

Per costruire quello che Greifeneder chiama un "modello in memoria e in tempo reale" dell'intero sistema IT di un cliente, i programmi di intelligenza artificiale causale costruiscono un "modello multidimensionale che ha il causale, dipendenza diretta, una sorta di grafico multidimensionale" di tutte le entità: da quale servizio cloud si tratta a quale versione di Kubernetes viene utilizzata a quale app è corsa. Quel modello, chiamato Paesaggio intelligente, viene consultato ogni volta che si verifica un problema di sistema che solleva allarmi, "deducendo la causa principale in base all'attraversamento di quel modello Smartscape".

Anche: Le aziende hanno bisogno di chiarezza sui prezzi man mano che i servizi di intelligenza artificiale generativa arrivano sul mercato

Tuttavia, questo modello causale non anticiperà le variazioni nel business. "Conosce la causa principale" delle cose, "ma quello che non sa è qual è il vostro modello di business", ha detto Greifeneder, ovvero cose come: "Lunedì mattina alle 8:00 c'è un forte picco nell'utilizzo per qualunque cosa motivo."

Per tali aberrazioni, "è necessaria una qualche forma di apprendimento basato sulla storia", ha affermato Greifeneder.

Per ottenere tale apprendimento storico, un componente di intelligenza artificiale predittiva utilizza un altro set di strumenti ben sviluppati, come un autoregressivo media mobile integrata, che è un algoritmo particolarmente adatto a mettere insieme i modelli che si verificano nei dati tempo.

L'intelligenza artificiale casuale e predittiva di Dynatrace utilizza una varietà di approcci algoritmici testati nel tempo per analizzare i segnali di ciò che sta accadendo in un'applicazione di produzione.

Dynatrace

Fondamentalmente, l’intelligenza artificiale predittiva non guarda solo ai sistemi back-end, come il server. Riceve anche segnali dagli endpoint di una rete, ad esempio il modo in cui l'utente finale riscontra ritardi o interruzioni del servizio.

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

Sebbene un CIO si preoccupi maggiormente dei sistemi, i problemi degli utenti possono verificarsi anche quando i server funzionano correttamente, quindi sia il back-end che l'esperienza dell'utente devono essere misurati e confrontati.

Anche: Cosa dicono gli analisti sul futuro dell’intelligenza artificiale generativa

"A volte incontriamo la persona IT che si preoccupa solo dei propri server - 'Oh, il mio server è attivo' - ma, in realtà, gli utenti sono frustrati", ha detto. "Esiste il contrario: solo perché una di quelle CPU impazzisce, non significa che l'utente finale ne risenta."

Tornando all'esempio dello spazio su disco, l'intelligenza artificiale causale e predittiva può anticipare un futuro problema del disco. "Possiamo estrapolare dai giorni e dalle settimane di utilizzo del cluster passati per vedere: 'Oh, corriamo il rischio che tra una settimana potremmo esaurire lo spazio su disco'", ha affermato Greifeneder.

Questo è l'impulso a intraprendere azioni proattive, come ad esempio "Attivamo ora un'azione del flusso di lavoro dal motore di automazione di Dynatrace" chiamare un'API in AWS per ridimensionare il disco e quindi prevenire automaticamente un'interruzione che abbiamo avuto in passato a causa di Questo."

È qui che l'intelligenza artificiale generativa viene inserita nel processo. Il programma ombrello Dynatrace, DavisAI, quest'anno ha aggiunto un componente chiamato Davis CoPilota che si sovrappone ai sistemi causali e predittivi.

Anche: 4 modi per aumentare l'usabilità dell'intelligenza artificiale

Un utente può digitare su CoPilot "creami un'automazione che impedisca effettivamente questa [interruzione del disco in modo proattivo]". Il CoPilot può inviare una richiesta all'IA causale e predittiva per chiedere a quali dischi si fa riferimento richiesta. In risposta, il programma Davis utilizza Smartscape e le informazioni predittive per creare un prompt con tutti i dettagli contestuali necessari per comprendere il sistema IT nel suo stato attuale.

Tale richiesta viene poi inviata a CoPilot che, una volta forniti i dettagli, "ti restituirà il modello del flusso di lavoro per automatizzare" il ridimensionamento del disco, ha spiegato Greifeneder. "Ti darà, come utente, la possibilità di rivedere e dire, OK, è più o meno giusto, grazie, mi hai aiutato a raggiungere il 90% dei risultati", il che può far risparmiare tempo al tecnico di sistema rispetto alla creazione di un flusso di lavoro da graffio.

Il passo successivo è che il programma Davis AI riporti tutte queste osservazioni al programmatore nel momento in cui sta codificando per la prima volta l'applicazione. Il Santo Graal dello sviluppo di applicazioni è prevenire la codifica che causa errori prima che l'applicazione venga messa in produzione anziché dover correggere le cose in un secondo momento.

Un approccio è quello che Dynatrace chiama tutore. Un individuo DevOps può chiedere a CoPilot in linguaggio naturale di creare un tutore per vigilare su un particolare obiettivo di prestazioni dell'applicazione prima che tale applicazione venga messa in produzione. L'azienda definisce questo "definire un obiettivo di qualità nel codice". Gli elementi causali e predittivi vengono poi utilizzati per verificare se il codice soddisferà o meno gli obiettivi definiti.

Anche: Come ho ingannato ChatGPT facendomi dire bugie

Naturalmente, se l’intelligenza artificiale di Davis rileva un codice potenzialmente problematico, il problema è come risolverlo. È possibile che Davis CoPilot consigli il programmatore su possibili correzioni del codice, sebbene questa sia ancora un'area emergente.

"Stiamo pensando, con questo Davis CoPilot, di fornire consigli su come identificare questa vulnerabilità nella produzione basata su il tuo stack tecnologico e Davis CoPilot ti fornisce questi consigli che dovresti controllare per correggere il tuo codice," ha detto Greifeneder ZDNET.

È ancora presto per l’uso dell’intelligenza artificiale generativa per questo tipo di raccomandazioni per la correzione del codice, ha affermato Greifeneder. Sebbene l’intelligenza artificiale causale-predittiva sia progettata per essere affidabile, gli algoritmi generativi continuano a soffrire dal fenomeno delle "allucinazioni", significato che il programma afferma con sicurezza inesatto informazione.

"Ciò che è affidabile è ciò che proviene dall'intelligenza artificiale causale perché questo è lo stato accurato del sistema", ha affermato. "Quindi sappiamo esattamente cosa c'è; ciò che non è affidabile è la potenziale raccomandazione su come modificare il codice perché proviene dai modelli GPT-4 pubblici." 

Anche: Tutti amano lo sviluppo low-code/no-code, ma non tutti sono pronti per questo

Pertanto, i suggerimenti sul codice per la correzione possono iniziare da una premessa valida, ma incontrano lo stesso problema di GitHub Co-pilot: non avere un'idea veramente rigorosa di quale codice sia appropriato. È necessario integrare più strettamente i modelli linguistici di grandi dimensioni con gli strumenti forniti da Dynatrace e altri, per dare una base ai suggerimenti dell'intelligenza artificiale generativa.

Studi formali su GPT-4 e simili riportano risultati molto contrastanti nell'individuazione e risoluzione delle vulnerabilità del codice. IL documento tecnico rilasciato da OpenAI con il introduzione di GPT-4 a marzo ha messo in guardia dal fare affidamento sul programma. GPT-4, si afferma, "[...] ha ottenuto scarsi risultati nella creazione di exploit per le vulnerabilità identificate".

UN studiare a febbraio del predecessore di GPT-4, GPT-3, del ricercatore dell'Università della Pennsylvania Chris Koch, è stato incoraggiante. Ha dimostrato che GPT-3 è stato in grado di trovare 213 vulnerabilità in una raccolta di file del repository GitHub curati per le loro vulnerabilità note. Quel numero era ben al di sopra dei 99 errori rilevati da un popolare strumento di valutazione del codice denominato Snyk, una forma di "Test statico di sicurezza delle applicazioni" o SAST, comunemente utilizzato per testare le vulnerabilità del software.

Ma, ha osservato Koch, sia GPT-3 che Snyk non hanno rilevato molte vulnerabilità: avevano molti "falsi negativi", come sono conosciuti.

Uno studio successivo, della società di sicurezza informatica PeopleTec, basato sul lavoro di Koch, testando un GPT-4 aggiornato rilasciato ad agosto. È emerso che GPT-4 ha scoperto quattro volte più vulnerabilità negli stessi file.

Tuttavia, in entrambi gli studi, GPT-4 è stato testato su file che rappresentavano un totale complessivo di poco più di 2.000 righe di codice. Si tratta di una cifra minuscola rispetto alle applicazioni di produzione complete, che possono contenere da centinaia di migliaia a milioni di righe di codice, in numerosi file collegati. Non è chiaro se i successi sui problemi giocattolo dei file GitHub raggiungeranno tale complessità.

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

È in corso la corsa per cercare di amplificare i modelli linguistici per questo compito più grande. Oltre a Dynatrace, società privata Snyk Ltd. del Regno Unito, che vende una versione commerciale dello strumento open source, offre quello che chiama "DeepCode AI". Questa tecnologia, ha affermato Snyk, può evitare gli inciampi dell’intelligenza artificiale generativa integrandola con altri strumenti. "L'approccio ibrido di DeepCode AI utilizza più modelli e set di formazione specifici per la sicurezza per un unico scopo: proteggere le applicazioni", ha affermato la società.

È chiaro che l'intelligenza artificiale generativa ha molta strada da fare per risolvere anche semplici tipi di debug e correzione della programmazione, lasciando da parte la complessità di un ambiente IT di produzione live. Il grande cambiamento lasciato dall’intelligenza artificiale non è ancora arrivato.

Ciò che è all’orizzonte, con Davis Copilot e iniziative simili, è l’utilizzo dell’intelligenza artificiale generativa come una novità per aiutare i programmatori a esaminare il proprio codice in modo più aggressivo sia prima che dopo averlo spedito codice.

Intelligenza artificiale

L'impatto dell'intelligenza artificiale sullo sviluppo del software? Ancora poco chiaro
Gli sfondi generati dall'intelligenza artificiale di Android 14 sono super divertenti. Ecco come crearli
L'intelligenza artificiale mira a prevedere e correggere gli errori di codifica degli sviluppatori prima che si verifichi un disastro
L’intelligenza artificiale generativa è tutto, ovunque, tutto in una volta
  • L'impatto dell'intelligenza artificiale sullo sviluppo del software? Ancora poco chiaro
  • Gli sfondi generati dall'intelligenza artificiale di Android 14 sono super divertenti. Ecco come crearli
  • L'intelligenza artificiale mira a prevedere e correggere gli errori di codifica degli sviluppatori prima che si verifichi un disastro
  • L’intelligenza artificiale generativa è tutto, ovunque, tutto in una volta