Deprecated: Creation of dynamic property Timber\Site::$pingback is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Site.php on line 180

Deprecated: Creation of dynamic property Timber\User::$name is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/User.php on line 118

Deprecated: Creation of dynamic property Timber\Post::$_edit_lock is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_edit_last is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$onesignal_meta_box_present is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$onesignal_send_notification is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$onesignal_modify_title_and_content is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$onesignal_notification_custom_heading is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$onesignal_notification_custom_content is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_focuskw is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_metadesc is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_linkdex is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_content_score is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_estimated-reading-time-minutes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_wordproof_timestamp is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$tipologia is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_tipologia is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$attributi is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_attributi is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$in_evidenza_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_in_evidenza_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$inviato_in_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_inviato_in_newsletter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$fonte is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_fonte is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$fonte_url is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_fonte_url is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_category is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_content_type is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_attributes is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_yoast_wpseo_primary_speciali is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$_thumbnail_id is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$response_body is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_date_gmt is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$ping_status is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_password is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_name is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$to_ping is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$pinged is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_modified_gmt is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_content_filtered is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$guid is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$menu_order is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$post_mime_type is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$comment_count is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71

Deprecated: Creation of dynamic property Timber\Post::$filter is deprecated in /var/www/html/web/app/themes/ilsoftware/vendor/timber/timber/lib/Core.php on line 71
Programmare con ChatGPT: sei consigli utili

Programmare con ChatGPT: sei consigli utili

Un chatbot come ChatGPT, specie nella più recente versione basata sul modello generativo GPT-4 di OpenAI, offre risposte sempre più articolate, pertinenti e ampiamente argomentate. Su qualunque tema. Un po’ come GitHub Copilot, è possibile programmare con ChatGPT: l’utente del servizio può infatti chiedere all’intelligenza artificiale di produrre contenuti utilizzando uno specifico linguaggio di programmazione. Basta presentare il problema da risolvere, evitando di essere avari in termini di dettagli, per ottenere codice funzionante riutilizzabile nelle proprie applicazioni e nei propri progetti.

La nota rivista Nature, una delle pubblicazioni scientifiche più prestigiose e influenti al mondo, ha pubblicato alcuni consigli pratici per trarre beneficio dall’utilizzo di ChatGPT nello sviluppo software. “Anche se le risposte iniziali di ChatGPT sono instabili“, osserva Nature, “spesso il chatbot produce alla fine risultati accurati, compreso codice di programmazione“.

Già a marzo 2023, Nature sosteneva che ChatGPT poteva risolvere il 76% dei 184 compiti previsti in un corso introduttivo di bioinformatica dopo un singolo tentativo. Ben il 97% dei problemi venivano comunque risolti entro sette tentativi.

I sei consigli per programmare con ChatGPT

Secondo Nature, sentiti tanti esperti del settore, sono complessivamente sei i consigli da tenere a mente se ci si accinge a usare ChatGPT per programmare. Li elenchiamo di seguito per poi offrire una trattazione più dettagliata:

  1. Scegliere bene il campo applicativo
  2. Verificare sempre il codice fornito senza dare nulla per scontato
  3. Valutare gli aspetti legati alla sicurezza
  4. Avviare una conversazione con ChatGPT per raffinare via via l’output
  5. Assegnare a ChatGPT un ruolo preciso, come in un gioco
  6. Abbracciare il cambiamento

ChatGPT è un pappagallo stocastico

A una prima lettura, potrebbe sembrare una pesante offesa. In realtà l’appellativo di “pappagallo stocastico” non potrebbe calzare più a pennello per uno strumento come ChatGPT. Parlando di modelli open source come LLaMa e Alpaca, abbiamo descritto il processo di addestramento che è necessario per fare inferenza. Ovvero per indurre il modello a fare previsioni su nuovi dati.

La qualità delle risposte di ChatGPT dipende dall’input o prompt

Le risposte generate dai modelli generativi derivano dalle associazioni tra le parole apprese durante la fase di addestramento e la loro qualità, oltre che dalla dimensione del set di dati utilizzato, dipende molto anche dal livello di dettaglio del prompt (il quesito posto dall’utente). Quando si pongono domande a ChatGPT, per ottenere risposte migliori va evitata l’ambiguità. È inoltre bene suddividere il problema in parti più piccole e più facilmente gestibili.

È inoltre bene esortare il chatbot a calarsi in un ruolo specifico. Facendo assumere un certo ruolo a ChatGPT, è possibile aiutare il chatbot a muoversi nel giusto spazio probabilistico.

I termini pappagallo e stocastico: generare contenuti con un processo probabilistico

Il termine “pappagallo” si riferisce alla capacità dei modelli, come quelli usati da ChatGPT, di generare testo coerente e fluido, riproducendo ciò sono stati addestrati a fare, ma senza una “comprensione” del significato o del contesto delle parole.

Parlavamo di “previsioni” sui nuovi dati. Il termine “stocastico” si riferisce alla natura imprevedibile delle risposte generate da questi modelli. Poiché ChatGPT non ha una vera comprensione del significato delle parole, le risposte possono essere molto variabili (e questa è anche la bellezza del sistema) e possono essere influenzate da piccole variazioni nelle domande o nel contesto.

In generale, il termine “stocastico” si riferisce a un processo o a un fenomeno che è caratterizzato da una certa dose di casualità o imprevedibilità. È un concetto ampiamente utilizzato in matematica, statistica, fisica, informatica e in altre discipline. La stocasticità implica che il risultato di un processo stocastico non può essere determinato con precisione, ma può essere descritto solo in termini di probabilità. Ciò significa che, anche con informazioni complete sullo stato iniziale e sulle regole che governano il processo, non si può prevedere con certezza l’esito finale.

Servizi come ChatGPT, e in generale i vari modelli generativi, si basano su un processo probabilistico, non certo deterministico. Il chatbot “prevede” le parole successive più probabili  nella composizione della risposta ma alla fine esse potrebbero non essere quelle effettivamente più accurate. “Non dovresti fare affidamento sull’accuratezza fattuale dell’output dei nostri modelli“, aveva osservato OpenAI riportando ChatGPT in Italia alcune settimane fa.

Programmazione: ChatGPT non è un vestito per tutte le stagioni

Riportando le valutazioni di Neil Ernst, informatico dell’Università di Victoria in Canada, Nature sottolinea che i chatbot basati sull’intelligenza artificiale funzionano meglio per attività di programmazione limitate. Si pensi alle operazioni da eseguire su un insieme discreto di dati, l’esecuzione di manipolazioni di dati, la creazione di meccanismi per la visualizzazione dei contenuti e di pagine Web. Qualcosa di molto lontano dal concetto di ingegneria del software.

“L’ingegneria del software è molto più che risolvere un rompicapo di programmazione“, spiega Ernst. “Bisogna pensare ai framework di test, scrivere codice gestibile e comprendere i compromessi coinvolti nella costruzione di un sistema. Non credo che gli strumenti attuali risolvano nessuno di questi problemi“.

Al netto dei punti cruciali posti sul tavolo da Ernst, i chatbot come ChatGPT si rivelano utilissimi in molte situazioni, Può capitare di non ricordare come si usa una certa sintassi o una libreria specifica per un linguaggio di programmazione. Secondo il docente accademico, sono un po’ come un’interfaccia conversazionale per Stack Overflow, un forum online di domande e risposte per programmatori.

I chatbot sono comunque anche molto bravi nello spiegare perché un codice di programmazione non funziona e correggere l’errore. Emery Berger, un informatico dell’Università del Massachusetts Amherst, ha creato lo strumento chiamato cwhy che utilizza ChatGPT per spiegare gli errori del compilatore nel gestire codice scritto con linguaggi come C, C++ e Rust. Un altro tool, ChatDBG, fornisce un’interfaccia conversazionale per il debug dei programmi. Una terza applicazione, Scalene, utilizza l’intelligenza artificiale per suggerire ottimizzazioni del codice al fine di migliorare le prestazioni.

I chatbot possono persino tradurre il codice da un linguaggio di programmazione a un altro. Mathieu Coppey, un biofisico del Curie Institute di Parigi, sta usando ChatGPT per passare da MATLAB, il suo linguaggio preferito, a Python.

Verificare il codice di programmazione creato con ChatGPT

Citando uno studio di Emily Morgan, dell’Università della California, i chatbot come ChatGPT introducono spesso bug “stupidi”. Ad esempio utilizzano l’operatore > invece di >= in un’istruzione condizionale: problemi facili da correggere, ma difficili da trovare.

Iza Romanowska, una scienziata che lavora presso l’Aarhus Institute of Advanced Studies in Danimarca, ha utilizzato ChatGPT per produrre codice in un linguaggio chiamato NetLogo. Poiché c’è meno codice online scritto in NetLogo rispetto ad altri linguaggi, ChatGPT è meno convincente. A volte, l’intelligenza artificiale arricchisce il codice restituito in output con funzioni che in realtà non esistono. Un comportamento battezzato con il termine di allucinazione.

Oltretutto, come abbiamo detto più volte, i chatbot generano un codice che riflette i loro dati di addestramento. La qualità complessiva del codice che appare sul Web è piuttosto bassa. Capita che l’intelligenza artificiale consigli codice di programmazione che espone a vulnerabilità di sicurezza, anche quelle di base. Brendan Dolan-Gavitt, un informatico della New York University, afferma che quando lo strumento di programmazione Copilot venne lanciato nel 2021, a valle di una serie di test stabilì che veniva prodotto codice vulnerabile nel 40% dei casi.

La morale, insomma, è verificare attentamente ciò che viene fornito da ChatGPT o da altri strumenti simili senza mai accettarlo ciecamente.

Come suggerisce Nature, infine, sviluppare codice con ChatGPT non dovrebbe essere considerata come un’esperienza basata su un unico tentativo. È una conversazione. “Scrivi qualcosa su ChatGPT, ottieni qualcos’altro in cambio, lo leggi con scetticismo, chiedi maggiori dettagli, richiedi di applicare delle ottimizzazioni“, commenta Amy Ko, un’informatica dell’Università di Washington a Seattle.

Ti consigliamo anche

Link copiato negli appunti