ChatGPT, Bard e altri importanti Large Language Models (LLM) hanno dominato i nostri feed di notizie nell’ultimo anno. E giustamente. Queste entusiasmanti tecnologie ci offrono uno sguardo al futuro, alla potenza e alle possibilità dell’IA.
Sebbene l’entusiasmo del pubblico si sia concentrato sulla creazione di testi, immagini e video, questi strumenti possono essere utilizzati per molte altre discipline, come l’automazione del software.
Questo articolo è un approfondimento su come il prompt engineering può aiutarci con l’automazione del software. Tuttavia, il nostro primo punto di riferimento dovrebbe essere l’esame dell’ingegneria rapida stessa.
Che cos’è il prompt engineering?
I modelli linguistici di grandi dimensioni come ChatGPT producono output basati sulle richieste o sulle frasi che gli forniamo. Tuttavia, i risultati variano notevolmente a seconda delle parole o delle istruzioni che utilizziamo. Quando si immettono istruzioni vaghe e imprecise, il risultato potrebbe non essere quello desiderato.
L’ingegneria dei prompt si riferisce alla progettazione ponderata degli input che aiutano a ottenere contenuti più precisi, accurati e, in ultima analisi, utilizzabili da questi interessanti sistemi di intelligenza artificiale.
I sistemi Large Language Model (LLM) utilizzano l’elaborazione del linguaggio naturale (NLP) per interpretare le affermazioni che gli forniamo. Le macchine trasformano le domande o le istruzioni (cioè i suggerimenti) in codice e le eseguono attraverso i loro vasti archivi di dati per produrre contenuti in qualsiasi formato da noi specificato (cioè testo, immagini, codice).
ChatGPT è stato addestrato su oltre
570 GB di dati
. Il materiale formativo è costituito da libri, articoli, testi web e così via. In altre parole, questi set di dati contengono una quantità di conoscenza inimmaginabile.
Anche se possiamo comprendere il processo, molto di ciò che accade sotto il cofano di questi sistemi avviene al di fuori della nostra vista. Certo, controlliamo gli input e gli output e addestriamo il sistema, ma come questi algoritmi funzionino e prendano le decisioni è ancora un mistero. Come dice Sam Bowman, professore di AI alla New York University, “L’abbiamo costruito, l’abbiamo addestrato, ma non sappiamo cosa stia facendo”.
L’ingegneria tempestiva ci aiuta a gestire il caos utilizzando output che producono risultati prevedibili e utilizzabili. Ci offrono un percorso per sbloccare le vaste quantità di conoscenze contenute in queste applicazioni.
Questa disciplina sta emergendo come una nuova carriera
con corsi che sorgono ovunque, mentre le aziende cercano di capire come sfruttare questa potente tecnologia.
In che modo l’ingegneria di emergenza può essere d’aiuto
con l’automazione del software?
L’automazione del software e i LLM hanno molto in comune. Entrambi offrono uno scorcio di un futuro in cui le macchine aumenteranno la creatività umana per creare luoghi di lavoro più veloci e produttivi.
Esistono diverse aree interessanti in cui queste due tecnologie possono convergere. Ecco tre modi in cui possiamo utilizzare l’ingegneria dei prompt nell’automazione del software.
#1. Generazione di codice
La scrittura di codice è una delle applicazioni più promettenti dei Large Language Models. I LLM sull’intelligenza artificiale sono agli albori. Nei prossimi anni questa tecnologia dovrebbe migliorare grazie all’aggiunta di maggiori risorse sia per l’informatica che per la formazione.
A lungo termine, questi progressi potrebbero vedere l’intelligenza artificiale scrivere interi programmi con un intervento umano limitato o nullo. Tuttavia, per il momento, gli LLM hanno alcune limitazioni. La qualità dell’output della codifica LLM dipende principalmente dalla qualità dell’input. Spazzatura in entrata, spazzatura in uscita, come si suol dire.
Naturalmente, non è solo l’efficace ingegneria dei tempi a costituire un ostacolo. Come suggerito in ChatGPT e modelli linguistici di grandi dimensioni in ambito accademico: Opportunità e sfide (Meyer, 2023), “Attualmente, ChatGPT ha maggiori probabilità di successo nella scrittura accurata di piccoli blocchi di codice, mentre la sua affidabilità nella scrittura di programmi più grandi e complessi (ad esempio, un pacchetto software) è discutibile”.
Inoltre, in un recente articolo pubblicato sulla rivista Nature, alcuni informatici hanno avvertito che dovremmo affrontare la generazione di codice con gli LLM con una certa cautela. Un altro documento contemporaneo,
Modelli linguistici di grandi dimensioni e bug semplici e stupidi
(Jesse, 2023), ha dimostrato come un popolare LLM, Codex, utilizzato dal fornitore Copilot, produca “SStuB noti e verbatim con una probabilità doppia rispetto al codice noto e verbatim corretto”.
Sebbene questi problemi non possano essere ignorati, c’è ancora molto entusiasmo giustificato per il modo in cui questi programmi possono contribuire a democratizzare lo sviluppo del software, supportando i team tecnici e non tecnici.
Forse la cosa più impressionante da considerare è che strumenti come ChatGPT possono produrre codice funzionale molto rapidamente. Con il prompt giusto, gli ingegneri possono ridurre il tempo necessario per programmare alcuni tipi di codice, garantendo un ciclo di vita di sviluppo del software più rapido.
Alla fine del 2022, il popolare hub di programmazione
Stack Overflow ha vietato la creazione di
risposte sul suo forum. Hanno citato l’alto tasso di errore e le imprecisioni associate all’applicazione. Tuttavia, la tecnologia è ancora in fase nascente; inoltre, l’insoddisfazione per i risultati generati dall’IA è dovuta tanto a una scarsa tempestività dell’ingegneria quanto alla tecnologia stessa.
Nonostante le perplessità sulla tecnologia, un
recente di McKinsey
evidenzia l’impatto che la prompt engineering sta già avendo nel mondo della programmazione. La società di consulenza Lo stato dell’IA nel 2023: L’anno di svolta dell’IA generativa ha condiviso due tendenze interessanti. In primo luogo, il 7% delle organizzazioni che hanno investito nell’IA sta assumendo ingegneri tempestivi. In secondo luogo, le aziende che utilizzano l’IA hanno ridotto i ruoli di ingegneria del software legati all’IA dal 38% al 28%.
Un modo per interpretare queste tendenze è che le aziende si sentono a proprio agio con questa configurazione e sono pronte ad affidare l’automazione del software alle loro macchine. Sebbene queste cifre possano spaventare gli ingegneri esistenti, l’indagine McKinsey suggerisce che “solo l’8% afferma che le dimensioni della propria forza lavoro diminuiranno di oltre un quinto”. In generale, gli ingegneri dovranno probabilmente riqualificarsi per sfruttare la tendenza all’automazione del software generata dall’intelligenza artificiale.
Un’ovvia applicazione dell’automazione software generata dall’intelligenza artificiale è la creazione di bot di automazione. Tuttavia, anche se il prompt engineering è un’interfaccia apparentemente facile da usare grazie al suo focus sulla conversazione, resta da vedere se può soppiantare le soluzioni esistenti.
Per molti versi, un software come ZAPTEST ha già democratizzato il mercato dell’automazione del software. Sono disponibili strumenti no-code che consentono ai team non tecnici di creare bot RPA di alta qualità. Anche se software come ChatGPT possono costruire bot, l’implementazione e la manutenzione potrebbero rivelarsi difficili per chiunque non sia un ingegnere informatico e anche per coloro che lo sono.
Registrare le interazioni uomo-macchina dall’interfaccia grafica e convertire questi movimenti in codice è molto più facile che usare i prompt. Se a ciò si aggiunge il potenziale di LLM di produrre codice instabile e pieno di errori, si può dire che il software RPA non andrà da nessuna parte nel prossimo futuro.
#2. Conversione di dati non strutturati
I dati non strutturati non sono il punto forte della Robotic Process Automation. La tecnologia non è stata costruita per gestire cose come e-mail, immagini, audio e altro. Gli strumenti RPA necessitano di modelli di dati predefiniti con strutture organizzate.
Un’enorme percentuale di dati non strutturati è costituita da testi in linguaggio naturale. Vengono costruiti modelli linguistici di grandi dimensioni per “capire” queste informazioni ed estrarne il significato semantico. Ciò crea una notevole opportunità per i team che desiderano interpretare questi testi e convertirli in un formato accettabile per gli strumenti RPA.
Molti team utilizzano da anni l’elaborazione del linguaggio naturale (NLP) per l’analisi del sentiment. Questo processo, noto anche come opinion mining, aiuta le organizzazioni a tenere sotto controllo i sentimenti e gli atteggiamenti dei consumatori nei confronti dei marchi. Nella maggior parte dei casi, questi strumenti vengono utilizzati per rilevare i sentimenti positivi, negativi e neutri all’interno di un testo. Tuttavia, la tecnologia è in grado di rilevare le emozioni in modo molto più granulare.
Sebbene esistano diversi strumenti sul mercato che offrono questa funzionalità, LLM offre un percorso per un utilizzo più versatile, che va oltre la comprensione di ciò che le persone pensano di un prodotto o di un servizio. Ad esempio, negli ultimi anni la popolarità dei dati analitici è esplosa. I Big Data offrono alle aziende un vantaggio, consentendo loro di ricavare intuizioni e conoscenze che aiutano a prendere decisioni basate sui dati.
Gli strumenti di automazione robotica dei processi possono aiutare a raccogliere i dati. Tuttavia, come abbiamo detto sopra, hanno difficoltà con determinati tipi di informazioni. Tuttavia, se abbinata a strumenti di intelligenza artificiale che utilizzano modelli linguistici di grandi dimensioni, la RPA può raccogliere grandi quantità di dati e utilizzarli per generare le informazioni necessarie agli strumenti di Business Intelligence (BI).
Uno degli aspetti più interessanti dell’IA generativa è la sua capacità di dare un senso agli input di dati. Con la giusta ingegnerizzazione, i team possono trasformare questi dati in un formato adatto agli strumenti RPA.
La RPA può contribuire a rendere più efficienti i flussi di lavoro dei Big Data. Per cominciare, è possibile utilizzarlo per contribuire all’inserimento e all’estrazione dei dati. Tuttavia, forse i casi d’uso più preziosi e intriganti riguardano l’utilizzo di strumenti RPA per la trasformazione, la pulizia e il caricamento dei dati o per garantire che la migrazione dei dati avvenga in modo rapido, efficiente e accurato.
Un altro punto importante è la governance dei dati. L’automatizzazione delle richieste di dati aiuta le organizzazioni a mantenere la conformità e a tenere i dati lontani dalla vista degli operatori manuali.
#3. Automazione dei test
L’automazione dei test ha preso piede nei circoli di sviluppo del software perché offre un modo più rapido di verificare il software. I test e l’assicurazione della qualità sono tradizionalmente processi costosi e lunghi; l’automazione dei test fornisce una soluzione a queste due sfide.
Una delle prime cose che il prompt engineering può fare è migliorare la qualità dei casi di test. Con le giuste indicazioni, queste macchine possono analizzare i casi di test e identificare i problemi e i rimedi. Questo processo può migliorare la portata dei casi di test e portare a test più completi.
Ad esempio, è possibile alimentare il codice di un modello linguistico di grandi dimensioni nello stesso modo in cui si farebbe con un revisore umano. Queste macchine sono in grado di analizzare rapidamente il codice e di individuare errori, bug e persino problemi di prestazioni. Forse ancora più interessante, gli LLM offrono anche la possibilità di completare il codice dei casi di test partendo da semplici snippet, accelerando la creazione dei casi di test.
L’ingegneria tempestiva mira ad affrontare molti dei problemi che hanno portato all’emergere dell’approccio Agile/DevOps allo sviluppo del software. Gli ingegneri vogliono test efficienti e facilmente ripetibili, in grado di individuare i problemi prima che le applicazioni vengano distribuite. L’idea è che, liberando tempo, gli sviluppatori di software possano concentrarsi su attività più creative e orientate al valore.
Come descritto in un classico documento,
Debito tecnico nell’automazione dei test
(K. Wiklund, 2012), i team di sviluppo software possono incorrere in problemi se dedicano troppo tempo al test manuale e alla verifica del loro software. I costi iniziali delle soluzioni di automazione dei test, la mancanza di esperienza nell’automazione e persino la preferenza per i metodi più vecchi possono contribuire a questi rallentamenti.
Uno degli aspetti più interessanti dello sviluppo software Agile riguarda il
lo sviluppo guidato dal comportamento (BDD).
Il concetto si riferisce allo sviluppo di software con i comportamenti attesi dagli utenti. Sebbene l’implementazione di questo approccio possa chiaramente far risparmiare tempo, molti team faticano a dare vita a questa automazione. Tuttavia, gli LLM possono fornire una soluzione.
Alcuni dei sintomi più comuni del debito tecnico sono la scarsa documentazione e la mancanza di test robusti. Questi sono problemi che i LLM di oggi possono aiutare a risolvere. Tuttavia, altri sintomi degni di nota, come il refactoring, sono troppo complessi per l’attuale IA generativa e potrebbero non comportare un risparmio di tempo.
Riflessioni finali
Le applicazioni di IA generativa hanno un potenziale immenso. Tuttavia, l’interfaccia intuitiva e colloquiale può trarre in inganno. Molti credono che sia semplice generare risultati di qualità da queste macchine. Tuttavia, un’eccellente ingegneria dei tempi è più complicata di quanto si possa pensare.
Un’efficace tecnica di prompt engineering richiede molti tentativi ed errori. Inoltre, è necessario che l’ingegnere sia molto previdente per garantire che le risposte siano utili. Infine, controllare e ricontrollare il lavoro è importante a causa del ben noto potenziale di errori.
Sebbene i lavori di ingegneria rapida siano in aumento, non tutti ne sono convinti. Scrivendo sull’Harvard Business Review, Oguz A. Acar sostiene in maniera affascinante che “Le future generazioni di sistemi di intelligenza artificiale diventeranno sempre più intuitive e abili nel comprendere il linguaggio naturale, riducendo la necessità di suggerimenti meticolosamente studiati”.
Qualunque sia il futuro, l’IA generativa sarà presente nel mix. Sebbene l’ingegneria rapida sia molto promettente, è difficile dire con certezza quale sarà il suo ruolo preciso.
È interessante notare che il software di automazione dei test è già ricco di casi d’uso e di storie di successo che dimostrano la sua idoneità a velocizzare lo sviluppo del software senza compromettere l’accuratezza o la verifica completa delle applicazioni.
Strumenti come ZAPTEST consentono già agli sviluppatori di affrontare problemi come l’inadeguatezza di tempo e risorse, il debito tecnico, la documentazione, i test completi e la RPA. Inoltre, questi strumenti sono più facili da usare rispetto al prompt engineering, il che li rende molto più adatti ai team non tecnici. Come sempre, il vero potenziale si trova all’incrocio di queste interessanti tecnologie di automazione.