Usare i completamenti di testo in Azure OpenAI
I modelli GPT-35-Turbo e GPT-4 sono modelli di linguaggio ottimizzati per le interfacce conversazionali. I modelli si comportano in modo diverso rispetto ai modelli GPT-3 precedenti. I modelli precedenti erano di tipo "testo in ingresso e testo in uscito", ovvero accettavano una stringa di richiesta e restituivano un completamento per aggiungere al prompt appena appreso.
Tuttavia, i modelli GPT-35-Turbo e GPT-4 sono di tipo conversazione in entrata e messaggio in uscita. I modelli prevedono la formattazione dell'input in un formato di trascrizione simile a una chat specifica e restituiscono un completamento che rappresenta un messaggio scritto da modello nella chat.
GPT-35-Turbo e GPT-4 possono comunque accettare e generare completamento del testo, ma il loro punto di forza è la chat.
In OpenAI di Azure sono disponibili due opzioni diverse per interagire con questi tipi di modelli:
- API di completamento chat.
- API di completamento con Chat Markup Language (ChatML).
L'API di completamento chat è una nuova API dedicata per interagire con i modelli GPT-35-Turbo e GPT-4 e la useremo qui.
Informazioni sui ruoli dell'API di completamento chat
OpenAI ha eseguito il training dei modelli GPT-35-Turbo e GPT-4 per accettare l'input formattato come conversazione. Ogni input o prompt inviato al modello e ogni risposta restituita dal modello vengono aggiunti a una conversazione complessiva nell'API Completamento chat.
L'API di completamento chat fa riferimento alle richieste in ingresso e alle risposte in uscita come messaggi.
Il modello accetta una matrice di oggetti messaggio con una conversazione organizzata in base ai ruoli. Esistono tre tipi di ruoli: Sistema, Utente e Assistente.
Il ruolo Sistema
Il ruolo di sistema, noto anche come messaggio di sistema, è incluso all'inizio della matrice. Questo messaggio fornisce le istruzioni iniziali per il modello. È possibile fornire varie informazioni nel ruolo di sistema, tra cui:
- Breve descrizione dell'assistente
- Tratti di personalità dell'assistente
- Istruzioni o regole che si desidera far seguire all'assistente
- Dati o informazioni necessarie per il modello, ad esempio domande rilevanti dalle domande frequenti
È possibile personalizzare il ruolo di sistema per il caso d'uso o includere solamente istruzioni di base. Il ruolo/messaggio di sistema è facoltativo, ma è consigliabile includerne almeno uno di base per ottenere i risultati migliori.
I ruoli utente e assistente
La conversazione ha luogo tra un utente e l'assistente. L'utente è la persona che immette i prompt e interagisce con il modello. Le risposte del modello sono rappresentate dal ruolo di sistema.
Il messaggio inviato dall'utente al modello deve seguire le procedure consigliate per la progettazione di richieste per ottenere le risposte di qualità più elevata.
Esempi di prompt dei messaggi
Ecco alcuni esempi di stili diversi di richieste che è possibile usare con i modelli GPT-35-Turbo e GPT-4. Gli esempi sono solo un punto di partenza ed è possibile sperimentare con richieste diverse per personalizzare il comportamento.
Esempio di base
Se si vuole che il modello GPT-35-Turbo si comporti in modo analogo a chat.openai.com, è possibile usare un messaggio di sistema di base come "Assistente è un modello linguistico di grandi dimensioni sottoposto a training da OpenAI".
Si apprenderà come usare .NET SDK dell'API di completamento chat nell'unità successiva, per il momento si useranno nomi di variabile come esempio.
string systemMessage = "Assistant is a large language model trained by OpenAI";
string userMessage = "Who were the founders of Microsoft?";
Esempio con istruzioni
Per alcuni scenari, è possibile fornire istruzioni aggiuntive al modello per definire guardrail per ciò che il modello è in grado di eseguire.
string systemMessage = """
Assistant is an intelligent chatbot designed to help users answer their tax related questions.
Instructions:
- Only answer questions related to taxes.
- If you're unsure of an answer, you can say "I don't know" or "I'm not sure" and recommend users go to the IRS website for more information.
""";
string userMessage = "When are my taxes due?";
Gestione delle conversazioni
Il modello non ha memoria, quindi necessita di una trascrizione aggiornata con ogni nuova domanda e con tutte le domande e le risposte, altrimenti perderà il contesto.
Ciò significa che sarà necessario inviare l'intera conversazione aggiornata al modello ogni volta che si interagisce con esso e quindi il limite di token per ogni modello potrebbe essere facilmente raggiunto.
Il limite di token per gpt-35-turbo
è 4096 token, mentre i limiti dei token per gpt-4
e gpt-4-32k
sono rispettivamente 8192 e 32768. È necessario rimanere sotto tali limiti, altrimenti si riceverà un errore.
È possibile tenere traccia del conteggio dei token e rimuovere i messaggi meno recenti dalla matrice inviata al modello. È consigliabile mantenere sempre il messaggio di sistema e rimuovere solo i messaggi dell'assistente o degli utenti. Tuttavia, nel tempo questo metodo di gestione della conversazione può causare un degrado della qualità della conversazione, per via della perdita del contesto delle parti precedenti.
In alternativa, una volta raggiunto il limite di token, è possibile richiedere all'utente di avviare una nuova conversazione.