OpenAI, sempre èiù sulla bocca di tutti nel mondo della ricerca sull’intelligenza artificiale, ha sviluppato modelli di linguaggio potenti come GPT-3.5 e GPT-4 che sono il motore di ChatGPT. Questi modelli possono generare testo coerente e di alta qualità, rendendoli strumenti ideali per una serie di applicazioni, tra cui la creazione di chatbot. In questa guida, esploreremo come utilizzare le API di OpenAI per costruire una chatbot interattiva in Python. In alternativa potete valutare di creare la vostra chat con i vostri documenti usando Chatcode come descriviamo in questo articolo.
Contents
Prerequisiti
Prima di iniziare, avrai bisogno di:
- Un account OpenAI. Puoi registrarti su OpenAI.
- Python 3.6 o superiore installato sul tuo computer.
- La libreria
openai
di Python. Puoi installarla con pip:
1 | pip install openai |
Configurazione
Dopo aver installato la libreria openai
, devi configurare la tua chiave API. Puoi farlo impostando la variabile d’ambiente OPENAI_API_KEY
:
1 2 | import os os.environ["OPENAI_API_KEY"] = "your-api-key" |
Ricorda di sostituire "your-api-key"
con la tua chiave API personale. Questa chiave API ti permette di interagire con le API di OpenAI e dovrebbe essere tenuta segreta. Se la tua chiave API viene compromessa, dovresti revocarla immediatamente attraverso il tuo account OpenAI.
Creazione della Struttura di Base per la Chatbot
Ora che hai configurato la tua chiave API, possiamo iniziare a costruire la struttura di base per la nostra chatbot. Creeremo una funzione chat_with_gpt3
che accetta un messaggio dall’utente e restituisce una risposta dall’API di OpenAI.
1 2 3 4 5 6 7 8 9 10 11 12 13 | import openai openai.api_key = os.getenv("OPENAI_API_KEY") def chat_with_gpt3(message): response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": message} ] ) return response.choices[0].message['content'] |
In questo esempio, stiamo utilizzando il modello gpt-3.5-turbo
di OpenAI.
Il metodo ChatCompletion.create
accetta un array di messaggi. Ogni messaggio è un dizionario che ha due chiavi: role
e content
. Il role
può essere "system"
, "user"
o "assistant"
, e content
è il contenuto del messaggio.
Il messaggio di sistema è utilizzato per impostare il comportamento dell’assistente. Nel nostro caso, stiamo dicendo all’assistente di essere utile.
Il messaggio dell’utente è il messaggio che l’utente invia all’assistente. Nel nostro caso, stiamo passando il messaggio come parametro alla funzione chat_with_gpt3
.
La risposta dell’API sarà un oggetto che contiene molte informazioni, ma ci interessa principalmente il contenuto del messaggio dell’assistente, che èquello che la nostra funzione restituisce.
Mantenere lo Stato della Conversazione
Una caratteristica importante di qualsiasi chatbot è la capacità di mantenere lo stato della conversazione. Questo significa che il chatbot dovrebbe essere in grado di fare riferimento ai messaggi precedenti nella conversazione.
Per fare questo, manteniamo un elenco di tutti i messaggi che sono stati inviati e ricevuti durante la conversazione. Ogni volta che l’utente invia un messaggio, viene aggiunto all’elenco.
Poi, quando l’API di OpenAI risponde, la risposta dell’assistente viene anch’essa aggiunta all’elenco. In questo modo, ogni volta che invii un messaggio all’API, include tutti i messaggi precedenti, permettendo a GPT-3.5 o GPT-4 di fare riferimento a essi.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import openai openai.api_key = os.getenv("OPENAI_API_KEY") # Inizializza la conversazione con il messaggio di sistema conversation = [ {"role": "system", "content": "You are a helpful assistant."}, ] def chat_with_gpt3(message): # Aggiungi il messaggio dell'utente alla conversazione conversation.append({"role": "user", "content": message}) # Ottieni la risposta dell'API di OpenAI response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=conversation ) # Aggiungi la risposta dell'assistente alla conversazione assistant_message = response.choices[0].message['content'] conversation.append({"role": "assistant", "content": assistant_message}) return assistant_message |
Ricorda che GPT-3.5 e GPT-4 hanno un limite di token (4096 per gpt-3.5-turbo), che include sia i messaggi di input che di output. Se la tua conversazione diventa troppo lunga, potresti dover rimuovere o abbreviare alcuni dei messaggi precedenti.
Creazione di un’Interfaccia Interattiva
Ora che abbiamo la nostra funzione di chat, possiamo creare un’interfaccia interattiva per l’utente. Questo può essere fatto utilizzando un semplice ciclo while in Python.
1 2 3 4 5 6 | while True: user_message = input("You: ") if user_message.lower() == "quit": break assistant_message = chat_with_gpt3(user_message) print("Assistant: ", assistant_message) |
In questo esempio, il programma chiede all’utente di inserire un messaggio, che viene poi passato alla funzione chat_with_gpt3
. La risposta dell’assistente viene quindi stampata sullo schermo. L’utente può continuare a inserire messaggi fino a quando non digita “quit”, momento in cui il programma si interrompe.
Conclusione
In questa guida, abbiamo esplorato come creare una chatbot utilizzando le API di OpenAI.
Le API di OpenAI offrono una vasta gamma di possibilità, e questo è soloun esempio di ciò che è possibile fare. Puoi personalizzare il comportamento dell’assistente, gestire conversazioni più lunghe, e molto altro ancora.
Per ulteriori informazioni, ti consigliamo di consultare la documentazione di OpenAI.
Speriamo che questa guida ti abbia fornito una solida introduzione su come utilizzare le API di OpenAI per costruire una chatbot. Buona programmazione!
Codice completo
Ecco il codice completo che puoi, una volta fatte le installazioni necessarie e configurato la tua API Key fa runnare sul tuo pc.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | import openai import os # Imposta la chiave API di OpenAI openai.api_key = os.getenv("OPENAI_API_KEY") # Inizializza la conversazione con il messaggio di sistema conversation = [ {"role": "system", "content": "You are a helpful assistant."}, ] def chat_with_gpt3(message): # Aggiungi il messaggio dell'utente alla conversazione conversation.append({"role": "user", "content": message}) # Ottieni la risposta dell'API di OpenAI response = openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=conversation ) # Aggiungi la risposta dell'assistente alla conversazione assistant_message = response.choices[0].message['content'] conversation.append({"role": "assistant", "content": assistant_message}) return assistant_message def main(): while True: user_message = input("You: ") if user_message.lower() == "quit": break assistant_message = chat_with_gpt3(user_message) print("Assistant: ", assistant_message) if __name__ == "__main__": main() |