INTRODUZIONE A OPENAI E CHATGPT

In questo articolo andremo ad esplorare le API di ChatGPT. Iniziamo parlando di OpenAI un laboratorio di ricerca no-profit americano che si occupa di sviluppare e di promuovere l’intelligenza artificiale. Nel 2019 OpenAI ha creato una società a partnership limitato (LP). Uno degli investitori è Microsoft che ha fornito un miliardo di dollari per un accordo di collaborazione strategica. OpenAI sviluppa tutta una serie di applicazioni, quella che noi prenderemo in considerazione è ChatGPT che simula la conversazione tra un utente virtuale e un utente umano. Noi utilizzeremo OpenAI API (Application Program Interface). Queste API sono dei servizi che ci permettono di accedere alle funzionalità di intelligenza artificiale dall’interno delle nostre applicazioni.

IL MODEL

Entriamo nel dettaglio. Per prima cosa parliamo di Model che in ChatGPT è un modello di generazione del linguaggio basato su AI (Intelligenza Artificiale) che è stato addestrato su una quantità estremamente elevata di testo in modo che potesse apprendere in maniera evoluta la struttura del linguaggio naturale. Il testo proviene da libri, pagine web e così via. Il modello GPT prende il nome da Generative Pre-Trained Transformer. In parole semplici GPT è un modello creato da OpenAI. I due modelli principali, in questo momento, sono il GPT-3 e il GPT-4. Parliamo di un altro importante concetto, il Token. I modelli della famiglia GPT processano il testo in Token cioè sequenze di caratteri che vengono riconosciute all’interno del testo. La scomposizione del testo in Token consente ai modelli GPT di apprendere le relazioni tra i Token che si trovano nel testo. I Token vengono usati sia in fase di addestramento, sia quando noi forniamo una frase. Il testo che noi forniamo in ingresso a un modello GPT si chiama Prompt.

IMPOSTAZIONE DELLE API DI OPENAI

In questa sezione andremo ad impostare le API di OpenAI e scaricheremo la libreria Python che ci consente di interagire con le API. La prima cosa che dobbiamo fare è andare con il nostro browser all’indirizzo https://openai.com/ e registrarci. Ci troveremo di fronte una schermata simile alla seguente:

OpenAI Home

Fai click sulla voce di menù login. Si apre la seguente schermata.

API OpenAI

Noi siamo interessati alle API quindi click sul collegamento. Si aprirà la schermata per la registrazione:

Registrazione

Click su Sign up o un metodo a tua scelta e immetti le informazioni richieste per la registrazione. Una volta fatto ciò fai la il Login si aprirà la seguente schermata:

Home

GENERARE LA CHIAVE UNIVOCA

A questo punto dobbiamo generare una chiave univoca che inseriremo nel programma o come variabile di ambiente o tramite un file .env. Tieni presente che questa chiave deve rimanere segreta, quindi ti sconsiglio di cablarla nel codice, inoltre l’utilizzo delle API di OpenAI non è gratuito, hai un credito iniziale che nel momento in cui ti scrivo è di 5$, tuttavia hai a disposizione questo credito solo per la fase iniziale. Per generare la chiave che ti rappresenta in maniera univoca, fai click su Personal e dal menù che si apre seleziona la voce View API Keys.

API Keys

Click sul pulsante Create new secret key, assegnare un nome alla chiave e generarla. Tieni presente che puoi visualizzare questa chiave una sola volta; quindi, ti consiglio di copiarla e incollarla da qualche parte per poi utilizzarla nei programmi Python. Vediamo ora la seconda fase, cioè l’installazione della libreria Python. Apri il tuo editor preferito, io sto utilizzando la versione community di PyCharm, apri un prompt e digita il seguente comando:

pip3 install openai

Nella prossima sezione inizieremo a scrivere qualche programma Python con le API di OpenAI.

LA CLASSE OPENAI.COMPLETION

Con il tuo editor preferito crea una directory e all’interno uno script con il nome test_api.pySotto è riportato il codice.

engine-davinci

COMMENTIAMO IL CODICE

La chiave ricavata dallo step visto in precedenza non è stata cablata nel codice. Nella stessa directory in cui hai sistemato lo script crea un file dal nome .env. Io ho adottato questa soluzione se preferisci utilizza una variabile di ambiente. Nel file .env crea una chiave OPENAI_API_KEY avente come valore la chiave generata. Installa il modulo decouple con il seguente comando:

pip3 install decouple

tramite la seconda riga di codice ora hai accesso al file di configurazione .env. Dopo aver impostato la chiave dichiariamo una funzione test_api() e adesso invochiamo la funzione create della classe Completion. Questa funzione consente di inviare un prompt alle API remote che elaborano la richiesta e restituiscono una response che noi registriamo nella variabile risposta. Vediamo i parametri:

PARAMETRI PASSATI ALLA FUNZIONE

  • engine indica il modello di intelligenza artificiale che le API remote devono utilizzare per fornire la risposta al prompt che forniamo.
  • prompt è il testo che vogliamo passare alle API.
  • max_tokens indica il numero massimo di token che dovranno essere generati per la risposta. In pratica possiamo dire al sistema quanto vogliamo che sia lunga la risposta.
  • n specifica il numero di risposte che il nostro modello dovrà generare.
  • stop specifica una stringa di interruzione nel prompt, in altre parole il modello smette di generare il testo di risposta quando trova una corrispondenza esatta con la stringa di interruzione impostata nel prompt. Nel nostro esempio non è stata impostata (None).
  • temperature controlla il livello di casualità che il modello potrà utilizzare durante la generazione del testo di risposta. Numero reale positivo compreso tra 0 e 1. Con valori vicini allo zero il modello tenderà a fornire risposte molto simili fra loro, viceversa più il valore si avvicina a 1 più il modello dispone di libertà, creatività nel generare la risposta.

Questa è la risposta che le API remote generano al nostro prompt.

response

LA RESPONSE

Ovviamente la parte più interessante della risposta è il testo (text) che si trova nell’unica choices (array) con un solo elemento avente quindi indice 0. L’istruzione:

print(risposta.choices[0].text.strip())

stampa solo la risposta eliminando con il metodo strip() tutti i caratteri speciali che si trovano a inizio e fine stringa.

LINK AL CODICE SU GITHUB

GITHUB

LINK ALLA PROGRAMMAZIONE IN PYTHON

IL LINGUAGGIO PYTHON