Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Un chatbot in stile ChatGPT con Python e le API OpenAI

Creiamo un chatbot in stile ChatGPT utilizzando le API di OpenAI, il linguaggio Python e la libreria Python OpenAI
Creiamo un chatbot in stile ChatGPT utilizzando le API di OpenAI, il linguaggio Python e la libreria Python OpenAI
Link copiato negli appunti

Un'API (Application Programming Interface) è un'interfaccia di programmazione che consente ad uno script o ad un'applicazione di interagire con un servizio e di accedere alle sue funzionalità. Nel caso di GPT, il modello generativo alla base di ChatGPT, gli sviluppatori di OpenAI hanno reso disponibili delle API a pagamento il cui prezzo varia a seconda dell'engine utilizzato. In linea generale più quest'ultimo è avanzato maggiore è il costo.

In questa breve lezione scopriremo come sfruttare le API di OpenAI in Python per la creazione di un semplice chatbot in grado di funzionare in modo simile a ChatGPT.

API OpenAI: token, tariffe e credito gratuito

Nel momento in cui viene scritto questo articolo il modello linguistico più potente è Davinci (versione text-davinci-3), utilizzabile per 0.0200 dollari ogni mille token. Quello più veloce è invece Ada (0.0004 dollari a token). Le API di GPT-4, il modello implementato anche nel chatbot Bing Chat del motore di ricerca di Microsoft, sono disponibili per ora ad accesso limitato.

Nello specifico un "token" non è un intero output generato dal modello. Non è quindi la risposta ad una domanda ma più semplicemente una singola sillaba di una parola. Per questo motivo in lingua inglese mille token corrispondono mediamente a 750 parole. Da questo punto di vista l'Italiano non ci aiuta a risparmiare perché in media una parola ha circa 2-3 sillabe. Quindi 750 parole potrebbero avere un totale compreso tra 1.500 e 2.250 sillabe.

Fortunatamente OpenAI permette di testare le sue API e i modelli linguistici fornendo gratuitamente 18 dollari di credito nel momento in cui viene fornita la prima API Key. Tale chiave è in pratica l'identificatore univoco che consente di autenticarsi al servizio.

Richiedere l'API Key di OpenAI

Per richiedere una API Key ad OpenAI è necessario innanzitutto loggarsi con il proprio account. Se non si è ancora iscritti basta aprire questa pagina, inserire il proprio indirizzo di posta elettronica da utilizzare come username e scegliere una password per l'autenticazione. Una volta creato l'account ed effettuato il login si ha a disposizione un'area personale dalla quale generare e gestire le API Key.

Per fare ciò si deve cliccare sulla voce di menu "Personal", modificabile con il nome della propria organizzazione, per poi selezionare la voce "View API keys".

La nuova finestra così aperta contiene il pulsante "Create new secret key" da cliccare per completare l'operazione, è possibile creare più API Key da un singolo account per più organizzazioni. Prima di procedere è bene tenere presente che l'API Key generata deve rimanere segreta ed è consigliabile non condividerla con terze parti. In ogni caso il sistema la mostrerà una volta sola, al momento della sua creazione, quindi è bene che venga conservata in modo sicuro.

Tutte le API Key generate vengono elencate ma non mostrate "in chiaro" nella sezione "View API keys" da dove è anche possibile cancellarle, visualizzare la data di creazione e quella dell'ultima volta in cui è stata utilizzata. Cliccando sulla voce "Usage" è possibile consultare il sommario relativo all'impiego delle API compreso di spese sostenute fino al momento corrente per il calcolo del credito residuo.

Installare la libreria OpenAI per Python

Oltre che di un'API Key, per utilizzare le interfacce di programmazione di OpenAI in un'applicazione Python è necessario disporre della libreria chiamata, appunto, OpenAI. Essa include i metodi necessari per l'interazione con le API e viene rilasciata sotto licenza Open Source. Il suo codice sorgente è disponibile in un repository dedicato su GitHub. Per installarlo è necessario disporre del package manager pip per Python che può essere facilmente integrato nel proprio ambiente di sviluppo seguendo le indicazioni contenute in questa guida. In ogni caso pip è già presente di default in Python a partire dalla versione 3.4 del linguaggio.

Una volta verificata la disponibilità di pip nel proprio sistema tramite il comando pip -V si può procedere con l'installazione della libreria OpenAI digitando da terminale l'istruzione:

pip3 install openai

L'immagine seguente mostra un'installazione conclusa con successo su Windows, ma il comando è il medesimo anche sulle distribuzioni Linux o altri sistemi operativi che supportano Python.

Un chatbot con Python e OpenAI

Ora che abbiamo a disposizione tutti gli strumenti necessari possiamo passare alla realizzazione del nostro chatbot. Per far questo la prima operazione da effettuare riguarda l'importazione della libreria OpenAI:

import openai

Successivamente bisogna indicare l'API Key con cui l'applicazione si autenticherà al servizio e si potrà inizializzare l'API:

openai.api_key = "sk-xxxxxxxxxxxxxxxxxxx"

Se la chiave dovesse essere corretta il chatbot sarà in grado di interagire con uno dei modelli messi a disposizione da OpenAI. Per il nostro progetto abbiamo scelto Davinci, e per la precisione la versione text-davinci-3, che è stato descritto all'inizio di questo articolo. Tale dato viene definito attraverso il paramento engine:

engine = "text-davinci-003",

Oltre ad engine è possibile specificare altri 3 parametri:

  • prompt: nel caso specifico dell'esempio viene specificato text perché l'input atteso dal chatbot è appunto una stringa testuale. Sostanzialmente una richiesta espressa in linguaggio naturale.
  • temperature: esso attiene al tipo di risposta che si desidera ottenere dal chatbot. Sono consentiti valori compresi tra 0 e 1. Più il valore tende a 0 maggiore è la possibilità di ricevere output strutturati, quando invece esso è più vicino ad 1 le risposte tendono ad essere più creative. In ogni caso il sistema cercherà di fornire output nel modo più preciso possibile.
  • max_tokens: determina ovviamente il numero massimo di token che possono essere generati in output. Ad un valore elevato corrispondono in genere risposte più articolate ma ciò può determinare costi più elevati per l'utilizzo dell'API.

Esistono anche altri parametri, quelli elencati sono però sufficienti per ottenere dei comportamenti prevedibili dal chatbot. Una volta valorizzati è possibile raccoglierli all'interno di una funzione come la seguente, chiamata chatBot():

def chatBot(text):
    openai.api_key = "sk-xxxxxxxxxxxxxxxxxxx"
    response = openai.Completion.create(
        engine = "text-davinci-003",
        prompt = text,
        temperature = 0.3,
        max_tokens = 200,
    )
    return print(response.choices[0].text)

A questo punto non rimane altro che implementare la parte destinata a raccogliere l'input dell'utente e a restituire l'output del chatbot:

def main():
    while True:
        print('Chiedimi quello che vuoi:\n')
        domanda = input()
        chatBot(domanda)
        print('\n')
main()

Il codice completo dell'applicazione è quindi il seguente:

import openai
def chatBot(text):
    openai.api_key = "sk-xxxxxxxxxxxxxxxxxxx"
    response = openai.Completion.create(
        engine = "text-davinci-003",
        prompt = text,
        temperature = 0.3,
        max_tokens = 200,
    )
    return print(response.choices[0].text)
def main():
    while True:
        print('Chiedimi quello che vuoi:\n')
        domanda = input()
        chatBot(domanda)
        print('\n')
main()

Eseguendo il codice dopo averlo salvato in un file .py il sistema aprirà innanzitutto una finestra per l'invio del prompt in attesa della richiesta formulata dall'utente:

Quest'ultimo potrà quindi porre la sua domanda e rimanere in attesa che il chatbot fornisca la sua risposta attraverso l'interazione con l'API di OpenAI.

Una volta generato l'output il sistema rimarrà in attesa della prossima richiesta da parte dell'utente.

Conclusione

OpenAI fornisce delle API che gli sviluppatori possono utilizzare in applicazioni che interagiscono con il modello generativo GPT. In questa lezione abbiamo visto come sia semplice utilizzarle per creare un chatbot in Python ma presto affronteremo task ancora più articolati.

Ti consigliamo anche