ChatGPT

ChatGPT Prompt Engineering

In questa sezione vengono trattate le più recenti tecniche di prompt engineering per ChatGPT, compresi suggerimenti, applicazioni, limitazioni, documenti e materiali di lettura aggiuntivi.

⚠️

Questa sezione è in fase di forte sviluppo.

Topics:


Introduzione a ChatGPT

ChatGPT è un nuovo modello addestrato da OpenAI (opens in a new tab) che ha la capacità di interagire in modo conversazionale. Questo modello è addestrato a seguire le istruzioni di un prompt per fornire risposte appropriate nel contesto di un dialogo. ChatGPT può aiutare a rispondere a domande, suggerire ricette, scrivere testi in un certo stile, generare codice e molto altro ancora.

ChatGPT è addestrato utilizzando il RLHF - Reinforcement Learning from Human Feedback (apprendimento per rinforzo dal feedback umano). Sebbene questo modello sia molto più capace delle precedenti iterazioni di GPT (e sia anche addestrato per ridurre gli output dannosi e non veritieri), presenta comunque dei limiti. Vediamo alcune delle capacità e dei limiti con esempi concreti.

È possibile utilizzare l'anteprima di ricerca di ChatGPT [qui] (chat.openai.com), ma per gli esempi che seguono utilizzeremo la modalità Chat sul Playground OpenAI.


Revisione del compito di conversazione

In una delle guide precedenti, abbiamo parlato delle capacità di conversazione e delle richieste di ruolo. Abbiamo spiegato come istruire l'LLM a tenere una conversazione in uno stile specifico, con un intento, un comportamento e un'identità specifici.

Rivediamo il nostro precedente esempio di base, in cui abbiamo creato un sistema di conversazione in grado di generare risposte più tecniche e scientifiche alle domande.

Prompt:

La seguente è una conversazione con un assistente di ricerca AI. Il tono dell'assistente è tecnico e scientifico.

Umano: Ciao, chi sei?
IA: Saluto! Sono un assistente di ricerca AI. Come posso aiutarla oggi?
Umano: Puoi parlarmi della creazione dei buchi neri?
IA:

Dall'esempio precedente, si possono notare due componenti importanti:

  • l' intento o spiegazione di cosa è il chatbot
  • l'identità che indica lo stile o il tono che il chatbot utilizzerà per rispondere

Il semplice esempio precedente funziona bene con le API di completamento del testo che utilizzano text-davinci-003. Più recentemente, OpenAI ha annunciato le API ChatGPT (opens in a new tab), un modello più potente e più economico chiamato gpt-3.5-turbo è stato costruito specificamente per questo tipo di funzionalità (completamento di chat). In effetti, OpenAI raccomanda questo modello come il migliore anche per casi d'uso diversi dalla chat. Altri vantaggi dell'utilizzo delle API ChatGPT sono la riduzione significativa dei costi (90%) e l'efficienza.

Grandi aziende come Snap Inc. e Instacart stanno già integrando nei loro prodotti funzioni di conversazione basate su ChatGPT, che vanno dalle raccomandazioni personalizzate agli obiettivi di acquisto aperti.


Conversazioni con ChatGPT

Conversazioni multi-giro

Per iniziare a dimostrare le capacità di ChatGPT, utilizzeremo l'esempio dell'assistente chatbot di cui sopra e discuteremo i risultati. Rispetto a text-davinci-003, il modello gpt-3.5-turbo che alimenta ChatGPT utilizza un formato di chat come input. Il modello si aspetta una serie di messaggi come input e li usa per generare una risposta.

Input:

SISTEMA: sei un assistente di ricerca AI. Usa un tono tecnico e scientifico.
UTENTE: Salve, chi è Lei?
ASSISTENTE: Salve! Sono un assistente di ricerca AI. Come posso aiutarLa oggi?
UTENTE: Può parlarmi della creazione dei buchi neri?

Output:

ASSISTENTE: Certo! I buchi neri si formano quando una stella massiccia esaurisce il suo combustibile e collassa sotto la sua stessa gravità. Questo collasso fa sì che la stella diventi incredibilmente densa, con un campo gravitazionale così forte che nemmeno la luce può sfuggirgli. Questo punto di non ritorno è noto come orizzonte degli eventi. Una volta che una stella attraversa l'orizzonte degli eventi, viene considerata un buco nero...

Si noti che nell'esempio precedente ho semplificato l'input e l'output, ma l'API di completamento della chat ChatGPT richiede che i messaggi siano in un formato specifico. Di seguito ho aggiunto un'istantanea di come apparirebbe questo esempio utilizzando la modalità Chat nel Playground di OpenAI:

CHATGPT1

La chiamata API più formale per il nostro esempio sarebbe simile a quella riportata di seguito:

import openai
 
openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "Sei un assistente di ricerca AI. Usa un tono tecnico e scientifico."},
        {"role": "user", "content": "Salve, chi è Lei?"},
        {"role": "assistant", "content": "Salve! Sono un assistente di ricerca AI. Come posso aiutarLa oggi?"},
        {"role": "user", "content": "Può parlarmi della creazione dei buchi neri?"}
    ]
)

In effetti, il modo in cui gli sviluppatori interagiranno con ChatGPT in futuro dovrebbe avvenire tramite il Chat Markup Language (opens in a new tab) (ChatML in breve).

Compiti a giro unico

Il formato della chat consente conversazioni a più turni, ma supporta anche compiti a turno singolo simili a quelli utilizzati con testo-davinci-003. Questo significa che possiamo usare ChatGPT per eseguire compiti simili a quelli che abbiamo dimostrato per i modelli GPT originali. Per esempio, proviamo a eseguire il seguente compito di risposta alle domande utilizzando ChatGPT:

Input:

UTENTE: Rispondi alla domanda in base al contesto sottostante. Rispondi in modo breve e conciso. Rispondi "Incerto sulla risposta" se non si è sicuri della risposta.

Contesto: Il teplizumab affonda le sue radici in un'azienda farmaceutica del New Jersey, la Ortho Pharmaceutical. Qui gli scienziati hanno generato una prima versione dell'anticorpo, denominata OKT3. Originariamente ottenuta dai topi, la molecola era in grado di legarsi alla superficie delle cellule T e di limitarne il potenziale di uccisione. Nel 1986 è stato approvato per aiutare a prevenire il rigetto degli organi dopo il trapianto di rene, diventando così il primo anticorpo terapeutico autorizzato per uso umano.

Domanda: Da cosa è stato originariamente ricavato l'OKT3?

Risposta:

Output:

ASSISTENTE: Topi.

Tenete presente che sto aggiungendo le etichette UTENTE' e ASSISTENTE' per dimostrare meglio come l'operazione possa essere eseguita utilizzando ChatGPT. Ecco l'esempio che utilizza l'area di gioco:

CHATGPTCLASSIC

Più formalmente, questa è la chiamata API (ho incluso solo la componente messaggio della richiesta):

CONTENT = """Rispondi alla domanda in base al contesto sottostante. Rispondi in modo breve e conciso. Rispondi \"Incerto sulla risposta\" se non si è sicuri della risposta..
 
Contesto: Il teplizumab affonda le sue radici in un'azienda farmaceutica del New Jersey, la Ortho Pharmaceutical. Qui gli scienziati hanno generato una prima versione dell'anticorpo, denominata OKT3. Originariamente ottenuta dai topi, la molecola era in grado di legarsi alla superficie delle cellule T e di limitarne il potenziale di uccisione. Nel 1986 è stato approvato per aiutare a prevenire il rigetto degli organi dopo il trapianto di rene, diventando così il primo anticorpo terapeutico autorizzato per uso umano.
 
Domanda: Da cosa è stato originariamente ricavato l'OKT3?
 
Risposta:
"""
 
response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": CONTENT},
    ],
    temperature=0,
)

Istruzione dei Modelli di Chat

Secondo i documenti ufficiali di OpenAI, saranno rese disponibili anche le istantanee del modello gpt-3.5-turbo. Per esempio, possiamo accedere allo snapshot del 1 marzo gpt-3.5-turbo-0301. Questo permette agli sviluppatori di optare per versioni specifiche del modello. Ciò significa anche che le migliori pratiche per l'istruzione dei modelli possono cambiare da una versione all'altra.

La raccomandazione attuale per gpt-3.5-turbo-0301 è di aggiungere le istruzioni nel messaggio user rispetto al messaggio system disponibile.


Referenze