Quando un’azienda di software pubblica un importante aggiornamento, di solito non cerca di superarlo con un’altra release altrettanto significativa dopo pochi mesi. Tuttavia, nel campo dell’intelligenza artificiale le dinamiche sono diverse. In questo settore, infatti, l’innovazione procede così rapidamente che le aziende sentono la necessità di rilasciare nuove versioni molto ravvicinate tra loro, anche a distanza di pochi mesi, come nel caso di OpenAI.
Da GPT-4o a OpenAI 01, il sistema che ragiona
Dopo aver rilasciato il suo nuovo modello GPT-4o a metà maggio, l’azienda, infatti, si è data parecchio da fare… Già a novembre scorso, Reuters aveva pubblicato un’indiscrezione secondo cui OpenAI stava lavorando a un modello linguistico di nuova generazione, allora noto come Q*. A maggio la notizia è stata confermata: Q* era in realtà Strawberry, ribattezzato poi OpenAI o1-preview. Il nuovo modello è ora disponibile come opzione per gli abbonati a ChatGPT Plus, selezionabile dal menu a tendina.
Il “pezzo forte” di OpenAI o1 è il ragionamento logico. Quando deve rispondere ad una domanda o risolvere un problema, infatti, suddivide il compito in varie fasi e passaggi. Prima di fornire una risposta, espone all’utente un riepilogo di tutto il ragionamento svolto, passo dopo passo e il tempo impiegato. In questo modo l’AI spiega il proprio processo logico e come è giunta alla soluzione finale. Attivando l’apposito menu a tendina, è possibile visualizzare tutte le fasi del ragionamento.
Un aspetto degno di nota è che tra i vari step del processo, OpenAI 01 include autonomamente dei passaggi dedicati al controllo di possibili errori e alla loro gestione. Ciò che colpisce è che questa parte di verifica viene catalogata dalla stessa AI sotto la categoria “Conformità alle normative”. Sembra quindi che o1 consideri il controllo preventivo su potenziali errori come un requisito necessario al rispetto di standard etici e linee guida sull’intelligenza artificiale.
Doppio controllo in tempo reale tramite la catena di pensiero, il vero punto di forza di OpenAI 01
Un aspetto fondamentale di OpenAI o1 è l’utilizzo della cosiddetta “catena di pensiero“. Questa tecnica prevede che ogni catena di ragionamento generata come risposta venga sottoposta ad un doppio controllo in tempo reale. Il vantaggio di questa verifica incrociata è che riduce notevolmente il rischio di risposte incoerenti e fantasiose, dette “allucinazioni” dell’intelligenza artificiale.
In questo modo o1 garantisce maggiore accuratezza e correttezza etica delle sue risposte. Tuttavia, il rovescio della medaglia è che o1 impiega più tempo per elaborare le risposte, facendo attendere l’utente anche fino a 30 secondi in più rispetto ai modelli precedenti. Questo ritardo aggiuntivo, seppur fastidioso, è il prezzo da pagare per ottenere da o1 risultati qualitativamente migliori, più sicuri e in linea con gli standard etici.
OpenAI 01 per programmare
1. Scrivere un plugin per WordPress
OpenAI 01 preview è in grado di scrivere un plugin per WordPress. Può generare codice PHP e supportare nella creazione di plugin personalizzati secondo specifiche esigenze. Tuttavia, vale sempre la stessa regola: è importante verificare attentamente il codice generato per assicurarsi che sia sicuro ed efficiente prima di implementarlo sul proprio sito web. Ecco un esempio:
Nome del plugin: Messaggio personalizzato a fine post
Descrizione: Questo plugin aggiunge un messaggio personalizzato al contenuto di ogni post del blog.
Codice:
<?php
/*
Plugin Name: Messaggio Personalizzato a Fine Post
Plugin URI: https://esempio.com/messaggio-personalizzato-fine-post
Description: Aggiunge un messaggio personalizzato alla fine del contenuto di ogni post del blog.
Version: 1.0
Author: Il Tuo Nome
Author URI: https://esempio.com
License: GPL2
*/
// Impedisce l'accesso diretto al file
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
// Funzione per aggiungere il messaggio personalizzato al contenuto del post
function mp_messaggio_fine_post( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$messaggio_personalizzato = '<p style="color: gray; font-style: italic;">Grazie per aver letto!</p>';
$content .= $messaggio_personalizzato;
}
return $content;
}
// Collega la funzione al filtro 'the_content'
add_filter( 'the_content', 'mp_messaggio_fine_post' );
?>
Istruzioni per creare e utilizzare il plugin:
Creare un nuovo file plugin:
- Aprire un editor di testo semplice (ad esempio, Notepad++, Sublime Text).
- Copiare e incollare il codice PHP fornito sopra in un nuovo file.
- Salvare il file come
messaggio-personalizzato-fine-post.php
.
Strutturare la cartella del plugin:
- Creare una nuova cartella sul computer chiamata
messaggio-personalizzato-fine-post
. - Inserire il file
messaggio-personalizzato-fine-post.php
all’interno di questa cartella.
Caricare il plugin su WordPress:
- Utilizzare un client FTP o il gestore file del proprio hosting per accedere alla directory di installazione di WordPress.
- Navigare fino alla cartella
wp-content/plugins/
. - Caricare la cartella
messaggio-personalizzato-fine-post
(che contiene il file PHP) nella directoryplugins
.
Attivare il plugin
- Accedere alla dashboard amministrativa di WordPress.
- Andare su Plugin > Plugin Installati.
- Individuare Messaggio Personalizzato a Fine Post nell’elenco e cliccare su Attiva.
Verificare il funzionamento del plugin:
- Visitare qualsiasi post singolo sul sito.
- Scorrere fino alla fine del contenuto del post per vedere il messaggio personalizzato aggiunto.
Personalizzazione
Modificare il messaggio:
- Per cambiare il messaggio personalizzato, modificare la variabile
$messaggio_personalizzato
nel codice PHP. - Esempio:
$messaggio_personalizzato = '<p style="color: blue;">Il tuo messaggio personalizzato qui.</p>
Stilizzazione del messaggio
- Gli stili CSS inline possono essere modificati all’interno del tag
<p>
per cambiare l’aspetto. - In alternativa, si può aggiungere una classe CSS e definire gli stili nel foglio di stile del tema
Spiegazione del Codice:
Commenti di intestazione del plugin:
- Forniscono a WordPress le informazioni sul plugin (nome, descrizione, versione, autore).
Controllo di sicurezza
-
if ( ! defined( 'ABSPATH' ) ) { exit; }
impedisce l’accesso diretto al file PHP per motivi di sicurezza.
Funzione principale (mp_messaggio_fine_post
):
- Verifica che la visualizzazione corrente sia un post singolo, all’interno del loop principale e della query principale di WordPress.
- Aggiunge il messaggio personalizzato al contenuto originale del post.
Collegamento al Filtro di WordPress:
add_filter( 'the_content', 'mp_messaggio_fine_post' );
aggiunge la funzione al filtrothe_content
, permettendo di modificare il contenuto del post prima della visualizzazione.
2. Riscrittura di una funzione per invertire una stringa
Funzione originale:
def inverti_stringa(stringa):
risultato = ''
indice = len(stringa) - 1
while indice >= 0:
risultato += stringa[indice]
indice -= 1
return risultato
Funzione riscritta utilizzando liste e il metodo count():
def conta_vocali(stringa):
vocali = ['a', 'e', 'i', 'o', 'u']
conteggio = 0 for vocale in vocali:
conteggio += stringa.count(vocale) return conteggio
3. Trovare un bug
OpenAI 01 preview è in grado di aiutare a trovare bug nel codice. Può analizzare il codice che si fornisce, identificare potenziali errori e suggerire correzioni. Ecco un esempio semplice che mostra come individuare e correggere un bug in un programma per una persona inesperta.
Esempio: individuare e correggere un bug in una funzione Python
Descrizione del problema:
Abbiamo una funzione in Python che dovrebbe calcolare la somma di tutti i numeri da 1 a n
. Tuttavia, il risultato ottenuto non è corretto. Il nostro obiettivo è trovare e correggere il bug nella funzione.
Codice con il bug:
def somma_da_uno_a_n(n):
totale = 0
for i in range(1, n):
totale += i
return totale
Test della funzione:
print(somma_da_uno_a_n(5)) # Dovrebbe restituire 15
Risultato ottenuto:
10
Analisi del bug:
- Comportamento atteso: La somma dei numeri da 1 a 5 dovrebbe essere 1+2+3+4+5=15.
- Comportamento osservato: La funzione restituisce 10, che corrisponde a 1+2+3+4=10.
- Possibile Causa: Il ciclo
for
sta iterando solo fino an-1
invece che fino an
.
Individuazione del bug:
- La funzione
range(1, n)
genera una sequenza di numeri da 1 fino an-1
. - Per includere
n
nella sequenza, dobbiamo modificare ilrange
per estenderlo fino an
compreso.
Correzione del codice:
Opzione 1: Modificare il range
in range(1, n + 1)
.
def somma_da_uno_a_n(n):
totale = 0
for i in range(1, n + 1):
totale += i
return totale
Verifica della correzione:
print(somma_da_uno_a_n(5)) # Dovrebbe restituire 15
Risultato Dopo la correzione:
15