OpenAI
Questa pagina è stata tradotta automaticamente. Visualizza l'articolo originale in inglese.

Best practice per l’ingegneria dei prompt con l’API OpenAI

Come dare istruzioni chiare ed efficaci ai modelli OpenAI

Aggiornato: 8 days ago

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 chilometri

Nell’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

import

9. 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, riteniamo che `model` e `temperature` siano i parametri più comunemente usati per modificare l’output del modello.

  1. `model` - I modelli con prestazioni più elevate sono generalmente più costosi e possono avere una latenza maggiore.

  2. `temperature` - Una misura della frequenza con cui il modello produce un token meno probabile. Più alta è la temperature, più casuale (e di solito creativo) è l’output. Questo, tuttavia, non equivale alla “veridicità”. Per la maggior parte dei casi d’uso fattuali, come l’estrazione di dati e le domande e risposte veritiere, la temperature pari a 0 è la scelta migliore.

  3. `max_completion_tokens` (lunghezza massima) - Non controlla la lunghezza dell’output, ma imposta un limite rigido per la generazione di token. Idealmente non raggiungerai spesso questo limite, poiché il modello si fermerà quando ritiene di aver finito o quando incontra una sequenza di arresto che hai definito.

  4. `stop` (sequenze di arresto) - Un insieme di caratteri (token) che, quando generati, causano l’arresto della generazione del testo.

Per altre descrizioni dei parametri, consulta il riferimento API.

Questo articolo è stato utile?