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.
Per chi lavora con codice, vale la pena esplorare anche GPT-5.3-Codex, il modello OpenAI ottimizzato specificamente per la generazione e il debug del codice.
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
openaidi Python. Puoi installarla con pip:
pip install openaiConfigurazione
Dopo aver installato la libreria openai, devi configurare la tua chiave API. Puoi farlo impostando la variabile d’ambiente OPENAI_API_KEY:
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.
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.
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.
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.
Per capire come l’AI diventa operativa e porta valore in azienda, leggi la nostra guida agli agenti AI per le imprese.
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.
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()
Domande frequenti
Come si crea un chatbot con le API di OpenAI?
Si crea utilizzando i modelli linguistici di OpenAI (come GPT-3.5 e GPT-4) tramite la libreria openai in Python: dopo aver configurato la chiave API, si scrive una funzione che invia il messaggio dell'utente all'API e restituisce la risposta del modello, racchiudendola in un'interfaccia interattiva. È l'approccio base per costruire un assistente conversazionale personalizzato.
Quali prerequisiti servono per creare il chatbot?
Servono principalmente: una chiave API di OpenAI, l'installazione della libreria openai e conoscenze di base di Python. La chiave API si configura tipicamente impostando la variabile d'ambiente OPENAI_API_KEY, in modo da autenticare le chiamate ai modelli.
Come si mantiene lo stato della conversazione in un chatbot?
Una caratteristica importante di ogni chatbot è poter fare riferimento ai messaggi precedenti. Si ottiene conservando la cronologia dei messaggi (le coppie utente-assistente) e includendola a ogni nuova chiamata all'API, così il modello dispone del contesto della conversazione e produce risposte coerenti con ciò che è stato detto prima.
Quali modelli OpenAI si possono usare per il chatbot?
Si possono usare i modelli linguistici di OpenAI che alimentano ChatGPT, come GPT-3.5 e GPT-4, in grado di generare testo coerente e di alta qualità. La scelta dipende dal bilanciamento tra qualità delle risposte e costo: GPT-4 offre risposte più sofisticate, GPT-3.5 è più economico e veloce per casi d'uso semplici.



