LA CLASSE CHATCOMPLETION
La classe openai.Completion utilizzata nel precedente post è stata pensata per generare del testo in risposta ad un prompt. Tuttavia, tale classe non tiene conto del contesto della conversazione. È a questo punto che entra in scena la classe ChatCompletion pensata per mantenere la storia della conversazione. Le API di ChatCompletion permettono di simulare una conversazione tra un utente umano e un assistente virtuale che ricorda il dialogo mentre questo si svolge in modo da creare un contesto della conversazione. Con il tuo editor preferito crea uno script dal nome test_api_chat1.py. Ti riporto il codice da inserire nello script.
Il metodo create di ChatCompletion ritorna un oggetto avente una serie di attributi. Ti spiego i parametri passati al metodo create.
- model a differenza di Completion la classe ChatCompletion ci consente di utilizzare i modelli più recenti di GPT.
- messages è un array che contiene degli oggetti che rappresentano i messaggi scambiati tra un utente e un assistente virtuale. Ciascuno degli oggetti contenuti nell’array ha due attributi, il role (ruolo). I ruoli ammessi in un messaggio sono di tre tipi:
- system viene fornito all’assistente virtuale per definire il contesto generale di una conversazione.
- user il messaggio è generato dall’utente, quindi è un prompt.
- assistant è il messaggio di risposta dell’assistente virtuale.
Il secondo attributo è il content che rappresenta il testo dell’utente o dell’assistente virtuale. Vedremo nel prossimo esempio come si può creare una conversazione tra l’utente e l’assistente virtuale scambiando una serie di oggetti.
Con l’ultima istruzione andiamo a leggere il contenuto generato dall’assistente in risposta all’unico prompt utente fornito.
CONVERSAZIONE CON OPENAI CHATCOMPLETION
Imparerai a creare une vera e propria conversazione tra un utente e un assistente virtuale dotata di un contesto. Crea uno script e chiamalo test_api_chat2.py.
SPIEGAZIONE DEL CODICE DI ESEMPIO
Definiamo una funzione chat_with_openai() . Commentiamo il codice: La prima cosa da fare è creare un array che conterrà progressivamente la storia della nostra conversazione (chat_history=[]). Quello che fa brevemente la funzione è quello di prelevare l’input da terminale dell’utente aggiungerlo all’array e passare il prompt alle API remote. In questo esempio anche le risposte dell’assistente virtuale vengono aggiunte a chat_history con il metodo append in modo da mantenere la storia della conversazione, e il ciclo (loop infinito) si ripete fino a che l’utente non digita la parola “fine” sul terminale. Esegui lo script e fai delle domande a tuo piacimento. Ti riporto nell’immagine seguente la mia conversazione.
La cosa interessante da notare è che la domanda “quanti abitanti ha” non avrebbe senso se non inserita in un contesto ben preciso. Le API di ChatGPT sono in grado di mantenere la storia della conversazione e rispondere correttamente.
IL RUOLO SYSTEM
Modifichiamo lo script precedentemente creato aggiungendo il ruolo system. Duplica lo script precedente e fai la seguente modifica (c’è solo la riga chat_history.append({“role”:”system”, “content”:”Usa un tono da teenager.”}). da aggiungere).
Queste sono le risposte che ho ottenuto con il ruolo system e il content “Usa un tono da teenager.”
Scrivi un commento