Come funziona l’ingegneria dei prompt
Per il modo in cui i modelli OpenAI vengono addestrati, esistono formati di prompt specifici che funzionano particolarmente bene e portano a output del modello più utili. La guida ufficiale all’ingegneria dei prompt di OpenAI è di solito il miglior punto di partenza per consigli sui prompt.
Di seguito presentiamo diversi formati di prompt che riteniamo funzionino bene, ma sentiti libero di esplorare formati diversi, che potrebbero adattarsi meglio al tuo compito.
Regole pratiche ed esempi
Nota: “{text input here}” è un segnaposto per testo/contesto effettivo
1. Usa il modello più recente
Per ottenere i migliori risultati, in genere consigliamo di usare i modelli più recenti e più capaci. I modelli più recenti tendono a essere più facili da gestire con l’ingegneria dei prompt.
Nota: ci sono alcune differenze da considerare quando si crea un prompt per un modello di ragionamento rispetto a un modello GPT. Maggiori dettagli qui.
2. Metti le istruzioni all’inizio del prompt e usa ### o """ per separare istruzione e contesto
Meno efficace ❌:
Riassumi il testo seguente come elenco puntato dei punti più importanti.
{text input here}Meglio ✅:
Riassumi il testo seguente come elenco puntato dei punti più importanti.
Testo: """
{text input here}
"""3. Sii il più specifico, descrittivo e dettagliato possibile su contesto, risultato, lunghezza, formato, stile desiderati, ecc.
Sii specifico su contesto, risultato, lunghezza, formato, stile, ecc.
Meno efficace ❌:
Scrivi una poesia su OpenAI. Meglio ✅:
Scrivi una breve poesia ispiratrice su OpenAI, concentrandoti sul recente lancio del prodotto DALL-E (DALL-E è un modello di ML da testo a immagine) nello stile di {famous poet}4. Articola il formato di output desiderato tramite esempi
Meno efficace ❌:
Estrai le entità menzionate nel testo seguente. Estrai i seguenti 4 tipi di entità: nomi di aziende, nomi di persone, argomenti specifici e temi.
Testo: {text}Mostra e spiega: i modelli rispondono meglio quando vengono mostrati requisiti di formato specifici. Questo rende anche più facile analizzare in modo programmatico più output in modo affidabile.
Meglio ✅:
Estrai le entità importanti menzionate nel testo seguente. Prima estrai tutti i nomi di aziende, poi estrai tutti i nomi di persone, quindi estrai argomenti specifici coerenti con il contenuto e infine estrai temi generali sovraordinati
Formato desiderato:
Nomi di aziende: <comma_separated_list_of_company_names>
Nomi di persone: -||-
Argomenti specifici: -||-
Temi generali: -||-
Testo: {text}5. Inizia con zero-shot, poi few-shot; se nessuno dei due funziona, passa al fine-tuning
✅ Zero-shot
Estrai parole chiave dal testo seguente.
Testo: {text}
Parole chiave:✅ Few-shot: fornisci un paio di esempi
Estrai parole chiave dai testi corrispondenti qui sotto.
Testo 1: Stripe fornisce API che gli sviluppatori web possono usare per integrare l’elaborazione dei pagamenti nei loro siti web e nelle applicazioni mobili.
Parole chiave 1: Stripe, elaborazione dei pagamenti, API, sviluppatori web, siti web, applicazioni mobili
##
Testo 2: OpenAI ha addestrato modelli linguistici all’avanguardia, molto efficaci nel comprendere e generare testo. La nostra API fornisce accesso a questi modelli e può essere usata per risolvere praticamente qualsiasi compito che implichi l’elaborazione del linguaggio.
Parole chiave 2: OpenAI, modelli linguistici, elaborazione del testo, API.
##
Testo 3: {text}
Parole chiave 3:✅ Fine-tune: consulta qui le best practice per il fine-tuning.
6. Riduci le descrizioni “superflue” e imprecise
Meno efficace ❌:
La descrizione di questo prodotto dovrebbe essere abbastanza breve, solo poche frasi, e non molto di più.Meglio ✅:
Usa un paragrafo di 3-5 frasi per descrivere questo prodotto.7. Invece di dire solo cosa non fare, indica cosa fare al suo posto
Meno efficace ❌:
Quella che segue è una conversazione tra un agente e un cliente. NON CHIEDERE NOME UTENTE O PASSWORD. NON RIPETERE.
Cliente: Non riesco ad accedere al mio account.
Agente:Meglio ✅:
Quella che segue è una conversazione tra un agente e un cliente. L’agente tenterà di diagnosticare il problema e suggerire una soluzione, evitando al contempo di porre domande relative a dati personali identificabili (PII). Invece di chiedere dati personali identificabili (PII), come nome utente o password, indirizza l’utente all’articolo della guida www.samplewebsite.com/help/faq
Cliente: Non riesco ad accedere al mio account.
Agente:8. Specifico per la generazione di codice: usa “parole iniziali” per orientare il modello verso uno schema particolare
Meno efficace ❌:
# Scrivi una semplice funzione python che
# 1. Mi chieda un numero in miglia
# 2. Converta le miglia in chilometriNell’esempio di codice qui sotto, aggiungere “import” suggerisce al modello che dovrebbe iniziare a scrivere in Python. (Allo stesso modo, “SELECT” è un buon suggerimento per l’inizio di un’istruzione SQL.)
Meglio ✅:
# Scrivi una semplice funzione python che
# 1. Mi chieda un numero in miglia
# 2. Converta le miglia in chilometri
import9. Usa la funzionalità Generate Anything
Gli sviluppatori possono usare la funzionalità “Generate Anything” per descrivere un compito o un output in linguaggio naturale atteso e ricevere un prompt su misura.
Scopri di più sull’uso della funzionalità “Generate Anything”.
Parametri
In generale, modello e temperatura sono i parametri più usati per modificare l'output del modello.
modello - I modelli più avanzati sono generalmente più costosi e possono avere una latenza maggiore.
temperatura - Indica la frequenza con cui il modello genera un token meno probabile. Più alta è la temperatura, più casuale (e solitamente creativo) sarà l'output. Questo, tuttavia, non equivale alla «veridicità». Per la maggior parte dei casi d'uso basati sui fatti, come l'estrazione di dati e le risposte veritiere a domande, è preferibile impostare la temperatura su 0.
max_completion_tokens (lunghezza massima) - Non controlla la lunghezza dell'output, ma imposta un limite oltre il quale la generazione di token viene interrotta. Idealmente, questo limite verrà raggiunto di rado, perché il modello si fermerà quando riterrà di aver terminato o quando incontrerà una sequenza di arresto definita dall'utente.
stop (sequenze di arresto) - Un insieme di caratteri (token) che, una volta generati, interrompono la generazione del testo.
Per le descrizioni degli altri parametri, consulta la documentazione di riferimento dell'API.
