mirror of
https://github.com/dair-ai/Prompt-Engineering-Guide
synced 2024-11-19 21:25:35 +00:00
107 lines
6.7 KiB
Plaintext
107 lines
6.7 KiB
Plaintext
# Suggerimenti generali per la progettazione di Prompt
|
|
|
|
Ecco alcuni suggerimenti da tenere a mente durante la progettazione dei prompt:
|
|
|
|
|
|
### Inizio semplice
|
|
Quando si inizia a progettare i prompt, bisogna tenere presente che si tratta di un processo iterativo che richiede molta sperimentazione per ottenere risultati ottimali. L'utilizzo di una semplice strumento come OpenAI o Cohere è un buon punto di partenza.
|
|
|
|
Si può iniziare con prompt semplici e aggiungere altri elementi e contesti man mano che si punta a ottenere risultati migliori. Per questo motivo è fondamentale modificare i prompt durante il percorso. Leggendo la guida, vedrete molti esempi in cui la specificità, la semplicità e la concisione vi daranno spesso risultati migliori.
|
|
|
|
Quando si ha un compito grande che coinvolge molti sottocompiti differenti, si può cercare di suddividere il compito in sottocompiti più semplici e continuare a costruirci sopra man mano che si ottengono risultati migliori. Questo evita di aggiungere troppa complessità all'inizio del processo di progettazione del prompt.
|
|
|
|
### Le istruzioni
|
|
È possibile progettare prompt efficaci per vari compiti semplici, utilizzando comandi per indicare al modello ciò che si desidera ottenere, come "Scrivi", "Classifica", "Riassumi", "Traduci", "Ordina", ecc.
|
|
|
|
Tenete presente che dovete anche sperimentare molto per capire cosa funziona meglio. Provate diverse istruzioni con parole chiave, contesti e dati diversi e vedete cosa funziona meglio per il vostro caso d'uso e la vostra attività. Di solito, più il contesto è specifico e rilevante per l'attività che si sta cercando di svolgere, meglio è. Nelle prossime guide parleremo dell'importanza del campionamento e dell'aggiunta di ulteriore contesto.
|
|
|
|
Altri raccomandano di collocare le istruzioni all'inizio del prompt. Si raccomanda anche di usare un separatore chiaro, come "###", per separare l'istruzione dal contesto.
|
|
|
|
Per esempio:
|
|
|
|
*Prompt:*
|
|
```
|
|
### Istruzione ###
|
|
Traduci il seguente testo in spagnolo
|
|
|
|
Testo: "ciao!"
|
|
```
|
|
|
|
*Output:*
|
|
```
|
|
¡Hola!
|
|
```
|
|
|
|
### Specificità
|
|
Siate molto specifici riguardo all'istruzione e al compito che volete che il modello esegua. Più la richiesta è descrittiva e dettagliata, migliori saranno i risultati. Questo è particolarmente importante quando si cerca un risultato o uno stile di generazione desiderato. Non esistono token o parole chiave specifiche che portano a risultati migliori. È più importante avere un buon formato e un prompt descrittivo. In effetti, fornire esempi nel prompt è molto efficace per ottenere i risultati desiderati in formati specifici.
|
|
|
|
Quando si progettano i prompt si deve tenere presente anche la loro lunghezza, poiché ci sono dei limiti riguardo a quanto possono esserlo. Bisogna pensare a quanto sia necessario essere specifici e dettagliati. Includere troppi dettagli non necessari non è necessariamente un buon approccio. I dettagli devono essere pertinenti e contribuire al compito da svolgere. Questo è un aspetto che dovrete sperimentare molto. Incoraggiamo la sperimentazione e l'iterazione per ottimizzare i prompt per le vostre applicazioni.
|
|
|
|
A titolo di esempio, proviamo un semplice prompt per estrarre informazioni specifiche da un testo.
|
|
|
|
*Prompt:*
|
|
```
|
|
Estrarre il nome dei luoghi nel seguente testo.
|
|
|
|
Formato desiderato:
|
|
Luogo: <lista_dei_nomi_delle_aziende_separata_da_virgola>
|
|
|
|
Input: Input: "Sebbene questi sviluppi siano incoraggianti per i ricercatori, molto rimane ancora un mistero. “Spesso abbiamo una scatola nera tra il cervello e l'effetto che vediamo in periferia”, dice Henrique Veiga-Fernandes, neuroimmunologo presso il Centro Champalimaud per l'Ignoto di Lisbona. “Se vogliamo utilizzarla nel contesto terapeutico, dobbiamo effettivamente comprenderne il meccanismo”".
|
|
```
|
|
|
|
*Output:*
|
|
```
|
|
Luogo: Centro Champalimaud per l'Ignoto, Lisbona".
|
|
```
|
|
|
|
Il testo di input è ottenuto da [questo articolo di Nature](https://www.nature.com/articles/d41586-023-00509-z).
|
|
|
|
### Evitare l'imprecisione
|
|
|
|
Alla luce dei suggerimenti precedenti sull'essere dettagliati e migliorare il formato, è facile cadere nella trappola di voler essere troppo intelligenti con i prompt e creare descrizioni imprecise. Spesso è meglio essere specifici e diretti. L'analogia è molto simile a quella della comunicazione efficace: più è diretta, più il messaggio è efficace.
|
|
|
|
Ad esempio, potreste essere interessati a conoscere il concetto di ingegneria del prompt. Potreste provare qualcosa come:
|
|
```
|
|
Spiega il concetto di prompt engineering. Mantieni la spiegazione breve, solo poche frasi, e non essere troppo descrittivo.
|
|
```
|
|
|
|
Non è chiaro dal prompt di cui sopra quante frasi usare e con quale stile. Potreste comunque ottenere delle buone risposte con il prompt sopra, ma il prompt migliore sarebbe uno molto specifico, conciso e diretto. Qualcosa come:
|
|
```
|
|
Usa 2-3 frasi per spiegare il concetto di prompt engineering a uno studente di scuola superiore.
|
|
```
|
|
|
|
### Fare o non fare?
|
|
Un altro consiglio comune quando si progettano i prompt è quello di evitare di dire cosa non fare, ma di dire invece cosa fare. Questo incoraggia una maggiore specificità e si concentra sui dettagli che portano a buone risposte da parte del modello.
|
|
|
|
Ecco un esempio di chatbot per la raccomandazione di film che non riesce a fare esattamente ciò che non vogliamo che faccia a causa del modo in cui abbiamo scritto l'istruzione, concentrandoci su cosa non fare.
|
|
|
|
*Prompt:*
|
|
```
|
|
Di seguito viene presentato un agente che consiglia dei film a un cliente. NON CHIEDERE INTERESSI. NON CHIEDERE INFORMAZIONI PERSONALI.
|
|
|
|
Cliente: Per favore, raccomandami un film basato sui miei interessi.
|
|
Agente:
|
|
```
|
|
|
|
*Output:*
|
|
```
|
|
Certo, posso consigliarle un film in base ai suoi interessi. Che tipo di film le piacerebbe vedere? Preferisce l'azione, la commedia, il romanticismo o altro?
|
|
```
|
|
|
|
Qui un prompt migliore:
|
|
|
|
*Prompt:*
|
|
```
|
|
Il seguente è un agente che raccomanda film a un cliente. L'agente ha il compito di consigliare un film tra quelli di maggiore tendenza a livello globale. Deve astenersi dal chiedere agli utenti le loro preferenze ed evitare di chiedere informazioni personali. Se l'agente non ha un film da raccomandare, deve rispondere "Spiacente, non è stato possibile trovare un film da raccomandare oggi".
|
|
|
|
Cliente: Per favore, mi raccomandi un film basato sui miei interessi.
|
|
Agente:
|
|
```
|
|
|
|
*Output:*
|
|
```
|
|
Mi dispiace, non ho informazioni sui tuoi interessi. Tuttavia, ecco un elenco dei film di tendenza a livello globale in questo momento: [elenco dei film]. Spero che troviate qualcosa di vostro gradimento!
|
|
```
|
|
|
|
Alcuni degli esempi sopra riportati sono stati ripresi dall'articolo ["Best practices for prompt engineering with OpenAI API" article.](https://help.openai.com/en/articles/6654000-best-practices-for-prompt-engineering-with-openai-api)
|