Condividi tramite


Tecniche di progettazione delle richieste

I modelli GPT-3, GPT-3.5, GPT-4 e GPT-4o di OpenAI sono basati sulle richieste. Con tali modelli basati su prompt, l'utente interagisce con il modello immettendo una richiesta di testo, a cui il modello risponde con un completamento del testo. Questo completamento è la continuazione del modello del testo di input.

Sebbene questi modelli siano estremamente potenti, il loro comportamento è anche molto sensibile al prompt. Ciò rende la creazione di un prompt una competenza importante da sviluppare.

La costruzione di richieste può essere difficile. In pratica, il prompt agisce per configurare i pesi del modello per completare l'attività desiderata, ma è più un'arte che una scienza, dato che spesso richiede esperienza e intuizione per creare una richiesta di successo. L'obiettivo di questo articolo è quello di iniziare a usare questo processo di apprendimento. Tenta di acquisire concetti e modelli generali che si applicano a tutti i modelli GPT. Tuttavia, è importante comprendere che ogni modello si comporta in modo diverso, quindi gli apprendimenti potrebbero non essere applicabili allo stesso modo a tutti i modelli.

Nozioni di base

Questa sezione illustra i concetti e gli elementi di base delle richieste GPT.

Le richieste di testo sono il modo in cui gli utenti interagiscono con i modelli GPT. Come per tutti i modelli linguistici generativi, i modelli GPT tentano di produrre la serie successiva di parole che hanno la massima probabilità di seguire il testo precedente. È come se dicessimo Qual è la prima cosa che ti viene in mente quando dico <prompt>? Gli esempi seguenti illustrano questo comportamento. Data la prima parola di un contenuto famoso, il modello è in grado di continuare con precisione il testo.

Richiesta Completion
Or sono sedici lustri e sette anni che i nostri avi costruirono su questo continente una nuova nazione, concepita nella Libertà e votata al principio che tutti gli uomini sono stati creati uguali. […]
"Chiamatemi Ismaele". "Qualche anno fa - non importa quando esattamente - avendo poco o nulla in tasca, e niente in particolare che riuscisse a interessarmi a terra, pensai di andarmene un po' per mare, e vedere la parte equorea del mondo". [...]

Man mano che si sviluppano richieste più complesse, è utile tenere presente questo comportamento fondamentale. Indipendentemente dalla richiesta fornita, il modello risponde semplicemente a ciò che ritiene più probabile (in base ai dati di training e agli obiettivi di training). Se si pone una domanda nel prompt, il modello non segue un percorso di codice "Q&A" separato, ma sembra piuttosto rispondere alla domanda perché una risposta è il tipo di risposta più probabile per la domanda specificata come input.

Componenti richiesta

Quando si usa l'API di completamento, anche se non esiste alcuna differenziazione tra parti diverse del prompt, può comunque essere utile per l’apprendimento e la discussione identificare i componenti del prompt sottostanti. Con l'API Completamento chat sono presenti sezioni distinte del prompt inviate all'API sotto forma di una matrice di dizionari con ruoli associati: sistema, utente e assistente. Questo materiale sussidiario è incentrato più in generale su come considerare la costruzione di richieste anziché fornire indicazioni prescrittive specifiche per un'API rispetto a un'altra.

È anche importante comprendere che, anche se potrebbero esserci altri modi validi per analizzare le richieste, l'obiettivo di questa suddivisione è fornire un modo relativamente semplice per pensare alla costruzione di richieste. Con l'API Completamento, tutti i componenti sono facoltativi, ma almeno uno deve essere presente e la maggior parte delle richieste include più componenti. Tra i componenti può essere presente anche un'area grigia. L'ordine presentato di seguito corrisponde approssimativamente alla frequenza con cui viene usato ogni componente, da quella più alta a quella più bassa.

Istruzioni

Le istruzioni sono probabilmente il componente prompt più comunemente usato. Le istruzioni sono semplicemente questo: istruzioni al modello su cosa fare. Sebbene siano semplici nel concetto, possono essere complesse in pratica. La tabella seguente illustra questa operazione mostrando istruzioni semplici e più complesse, in due forme diverse.

Tipo di istruzione Richiesta Completion
Istruzioni semplici Scrivere un'introduzione per una newsletter settimanale. Benvenuti nella nostra newsletter settimanale. Questa settimana abbiamo un focus particolare sulla produttività. Condivideremo suggerimenti e trucchi su come essere produttivi in tutte le aree della propria vita. Speriamo che sia divertente e preghiamo di condividerlo con i propri amici!
Istruzioni complesse Scrivere un'introduzione per una newsletter settimanale all'azienda denominata Contoso. Dovrebbe menzionare la grande riunione di tutti i membri che abbiamo avuto la scorsa settimana e ringraziare il team per tutto il duro lavoro svolto negli ultimi difficili mesi. Benvenuti nella newsletter settimanale di Contoso! La settimana scorsa abbiamo avuto un grande incontro con tutti i membri e voglio ringraziare il team per tutto il duro lavoro svolto negli ultimi mesi. Ci aspetta un futuro brillante e sono sicuro che con la dedizione e l'impegno del nostro team raggiungeremo grandi traguardi. Grazie per essere parte del nostro team e non vedo l'ora di lavorare con voi tutti nelle prossime settimane e mesi. Cordiali saluti, [Il tuo nome].
Istruzioni complesse Scrivi un'introduzione per una newsletter settimanale che includa quanto segue:
- La mia azienda si chiama contoso
- Un saluto esuberante
- Ringraziando il team per il duro lavoro svolto in questi mesi difficili
- Prospettive positive per il prossimo trimestre
- Firmato da SLT
Buongiorno team Contoso! Volevo dedicarvi un attimo per ringraziarvi per tutto il duro lavoro svolto negli ultimi mesi. Sono stati due mesi difficili, ma avete unito le forze e avete fatto un lavoro straordinario. Sono davvero orgoglioso di voi tutti. Guardando avanti al prossimo trimestre, mi sento davvero positivo. Penso che riusciremo a realizzare alcune cose grandiose. Grazie ancora, il team di leadership senior.

Contenuto primario

Il contenuto primario si riferisce a un tipo di testo elaborato o trasformato dal modello. Il contenuto principale viene in genere usato in combinazione con le istruzioni. Un esempio semplice è la traduzione linguistica. Nell'esempio seguente, il testo inglese verrebbe considerato il contenuto principale mentre "Traduci in francese:" è un'istruzione.

Richiesta Completion
Puoi dirmi come arrivare al museo?
Traduci in francese:
Pouvez-vous s'il vous plaît me dire comment aller au musée?

Il contenuto principale può anche essere molto più lungo. Nell'esempio seguente, il contenuto principale è la sezione introduttiva della voce wikipedia sulla complessità del tempo, che è lunga quasi 300 parole. Questo contenuto è stato abbreviato nella tabella per facilitare la visualizzazione.

Richiesta Completion
Nell'informatica, la complessità del tempo è la complessità computazionale che descrive la quantità di tempo necessario per l'esecuzione di un algoritmo. La complessità temporale è comunemente stimata da [...]
Riepilogare il testo precedente in poche frasi:
La complessità del tempo è una misura del tempo necessario per l'esecuzione di un algoritmo. In genere viene espresso come funzione delle dimensioni dell'input. La misura più comune è la complessità del tempo peggiore, ovvero la quantità massima di tempo necessaria per gli input di una determinata dimensione.
Nell'informatica, la complessità del tempo è la complessità computazionale che descrive la quantità di tempo necessario per l'esecuzione di un algoritmo. La complessità temporale è comunemente stimata da [...]
TL;DR (Non letto da troppo tempo)
La complessità temporale di un algoritmo è la quantità di tempo impiegato per eseguire un algoritmo. La complessità del tempo viene comunemente stimata conteggiando il numero di operazioni elementari eseguite dall'algoritmo, supponendo che ogni operazione elementare richiede una quantità fissa di tempo per l'esecuzione. La complessità temporale viene in genere espressa come funzione delle dimensioni dell'input.

I modelli GPT possono anche gestire il contenuto primario strutturato. Nell'esempio seguente, una TSV relativa alle birre in Belgio (abbreviata per la visualizzazione in questo articolo) viene passata al modello come parte della richiesta. È in grado di interpretare correttamente il contenuto e rispondere a domande sui dati.

Richiesta Completion
Belgian Beer Brands
Beer name Beer style color ABV Brewery
"Chimay Gold: ""Doree""" trappist pale ale gold 4.80% Chimay Brewery (official trappist)
"Chimay Blue: ""Grande Reserve""" trappist dark ale dark 9.00%
[…]
Facendo riferimento alla tabella precedente, quanti birre hanno una gradazione alcolica inferiore al 6%?
Nella tabella sono presenti 10 birre con gradazione inferiore al 6%.

Esempi

Le richieste di successo spesso si basano sulla pratica dell'apprendimento "one-shot" o "few-shot". Questo si riferisce all'inclusione di uno o più esempi del comportamento desiderato del modello, in genere includendo coppie di input e output. Questo non è apprendimento nel senso che il modello viene modificato in modo permanente, ma piuttosto che gli esempi migliorano la condizione del modello per rispondere come desiderato solo per l'inferenza corrente. L'uso di prompt senza esempi viene talvolta definito apprendimento "zero-shot". Si noti che con l'API Completamento chat gli esempi di apprendimento few-shot vengono in genere aggiunti alla matrice di messaggi sotto forma di interazioni utente/assistente di esempio dopo il messaggio di sistema iniziale.

Tipo di apprendimento Richiesta Completion
Zero-shot Titolo: L'allenatore è fiducioso che l'infortunio non farà deragliare i Warriors
Argomento:
L'allenatore è fiducioso del fatto che l'infortunio non farà deragliare la stagione dei Warriors. Il team è ancora incentrato sui propri obiettivi e continuerà a lavorare duramente per raggiungerli.
Few-shot Titolo: Correa dei Twins vuole usare l'opt-out e provare l'agenzia libera
Argomento: Baseball
Titolo: Ai Mondiali del Qatar ci saranno zone per smaltire la sbornia
Argomento: Calcio
Titolo: Yates: Informazioni sul fantacalcio per la 6ª settimana
Argomento: Calcio
Titolo: L'allenatore è fiducioso che l'infortunio non farà deragliare i Warriors
Argomento:
Basket

L'esempio precedente illustra l'utilità dell'apprendimento few-shot. Senza gli esempi, il modello sembra indovinare il comportamento desiderato, mentre gli esempi mostrano correttamente il funzionamento del modello. Ciò dimostra anche la potenza del modello, può dedurre la categoria di etichetta desiderata, anche senza un'etichetta "basket" negli esempi.

Segnale

I segnali fungono da "cavi di accensione" per l'output del modello, consentendo di indirizzare il modello all'output desiderato. Spesso si tratta di un prefisso in cui il modello può essere compilato. Nell'esempio seguente viene illustrato il segnale che indirizza la storia in modo da includere elementi chiave. I segnali vengono spesso usati insieme alle istruzioni, ma non sempre. Negli esempi seguenti il modello viene usato per riepilogare un messaggio di posta elettronica di annuncio lungo. Un segnale viene usato in un caso per concentrare l'output del modello e suggerire un formato di output specifico (punti elenco) nell'altro.

Nel contesto dell'API di completamento della chat, le istruzioni assumono la forma del messaggio di sistema e vengono indicati alcuni esempi, fornendo una serie di interazioni utente/assistente di esempio per aiutare ad adattare il modello.

Numero di segnali Richiesta Completion
0 Le revisioni delle prestazioni sono un componente fondamentale dell'approccio Sviluppo e prestazioni in Contoso. […]
Riepilogare il messaggio di posta elettronica precedente:
Lo scopo di questo messaggio di posta elettronica è informare i dipendenti delle modifiche recenti apportate all'esperienza di revisione delle prestazioni, che fa parte dell'approccio Sviluppo e prestazioni di Contoso. Le modifiche includono una struttura migliorata, un'esperienza utente migliorata all'interno dello strumento e richieste mirate. Inoltre, è ora disponibile una sezione facoltativa “Conversation Starters”, in cui i dipendenti possono segnalare gli argomenti che desiderano discutere con i loro manager.
1 Le revisioni delle prestazioni sono un componente fondamentale dell'approccio Sviluppo e prestazioni in Contoso. […]
Riepilogare il messaggio di posta elettronica precedente:
Il punto chiave del messaggio è
che Contoso sta migliorando l'esperienza di revisione delle prestazioni, rendendola più incentrata sulle priorità principali, sulle aspettative e sull'impatto. Inoltre, sta aggiornando l'esperienza utente in-tool con suggerimenti, risorse e indicazioni. Infine, aggiunge indicazioni su come attivare le priorità principali a livello aziendale.
2 Le revisioni delle prestazioni sono un componente fondamentale dell'approccio Sviluppo e prestazioni in Contoso. […]
Riepilogare il messaggio di posta elettronica precedente:
Punti chiave:
Contoso introduce modifiche all'esperienza di revisione delle prestazioni, in base al feedback dei dipendenti.
• Le modifiche includono un nuovo focus sulle priorità principali, sulle aspettative e sull'impatto; un'esperienza utente aggiornata; e nuove linee guida sulle priorità principali a livello aziendale.
• Le revisioni delle prestazioni sono un momento per riflettere sulle prestazioni passate e sull'apprendimento, nonché per pianificare le priorità future e le opportunità di crescita.
• I dipendenti e i responsabili devono scrivere commenti prima della riunione di revisione delle prestazioni.
• Ci dovrebbero essere almeno due revisioni delle prestazioni all'anno.
• L'investimento di tempo per ogni revisione deve rimanere circa lo stesso.

Contenuto di supporto

I contenuti di supporto sono costituiti da informazioni che il modello può utilizzare per influenzare l'output in qualche modo. Differisce dal contenuto primario in quanto non è la destinazione principale dell'attività, ma in genere viene usata insieme al contenuto primario. Gli esempi comuni includono informazioni contestuali, ad esempio la data corrente, il nome dell'utente, le preferenze utente e così via. L'esempio seguente usa il contenuto di supporto per organizzare un set di workshop pianificati per l'utente. Senza il supporto (argomenti importanti) il modello si limita a elencare i workshop (troncati per la visualizzazione), mentre quando viene informato dei miei argomenti importanti, il modello è in grado di raggruppare accuratamente gli incontri.

Contenuto di supporto Richiesta Completion
Senza Elenco workshop:
Descrizione titolo
Inizio del workshop di pianificazione Unitevi a noi per dare il via al nostro workshop! Ascoltate dai nostri leader le priorità e le esperienze trasversali dei gruppi per l'anno a venire. L'invito a questo evento è già stato inviato a tutti in [...]
Riepilogare i workshop precedenti, raggruppati in base all'argomento:
Elenco workshop:
Inizio del workshop di pianificazione
- -Conclusione del workshop di pianificazione
- Incontro principale
- Prospettive basate sui clienti
- Impatto e aree di intervento principali
- Procedure consigliate
- Accelerazione dell'adozione di app [...]
With Elenco workshop:
Descrizione titolo
Inizio del workshop di pianificazione Unitevi a noi per dare il via al nostro workshop! Ascoltate dai nostri leader le priorità e le esperienze trasversali dei gruppi per l'anno a venire. L'invito a questo evento è già stato inviato a tutti in [...]
Argomenti importanti: progettazione, ricerca, modelli GPT
Riepilogare i workshop precedenti, raggruppati in base ai miei argomenti importanti:
1. Progettazione delle richieste:
- Nuovi suggerimenti per la progettazione delle richieste
- L'arte della progettazione delle richieste
2. Ricerca:
- Introduzione alla ricerca vettoriale con incorporamento
3. Modelli GPT:
- Introduzione a GPT-4
- GPT-35-Turbo approfondito.

Linee guida specifiche dello scenario

Anche se i principi di prompt engineering possono essere generalizzati in molti tipi di modello diversi, alcuni modelli prevedono una struttura di prompt specializzata. Per i modelli GPT di Azure OpenAI, esistono attualmente due API distinte in cui entra in gioco il prompt engineering:

  • API di completamento chat.
  • API di completamento.

Ogni API richiede la formattazione dei dati di input in modo diverso, che a sua volta influisce sulla progettazione complessiva delle richieste. L'API di completamento della chat supporta i modelli GPT-35-Turbo e GPT-4. Questi modelli sono progettati per accettare l'input formattato in una trascrizione di tipo chat specifica archiviata all'interno di una matrice di dizionari.

L'API di completamento supporta i modelli GPT-3 precedenti e presenta requisiti di input molto più flessibili in quanto accetta una stringa di testo senza regole di formato specifiche.

Le tecniche descritte in questa sezione illustrano le strategie per aumentare l'accuratezza e la base delle risposte generate con un modello LLM (Large Language Model). È tuttavia importante ricordare che, anche quando si usa il prompt engineering in modo efficace, è comunque necessario convalidare le risposte generate dai modelli. Solo perché un prompt creato accuratamente funzionava bene per uno scenario specifico, non significa necessariamente che si generalizzerà su larga scala per altri determinati casi d'uso. Comprendere le limitazioni dei LLMè altrettanto importante quanto comprendere come sfruttare i propri punti di forza.

Questa guida non illustra in modo approfondito i meccanismi alla base della struttura dei messaggi per i completamenti della chat. Se non si ha familiarità con l'interazione con i modelli di completamento delle chat a livello di codice, è consigliabile leggere prima di tutto la guida pratica sull'API di completamento della chat.

Nota

Tutti gli esempi in questa sezione della guida sono stati testati su un modello GPT-4 di base in inglese. Se si legge una versione localizzata di questo articolo in un'altra lingua, queste risposte rappresentano una traduzione localizzata dei risultati in inglese. Per altre informazioni sulle potenziali limitazioni a seconda del linguaggio usato per fare richieste a un modello, consultare la Nota sulla trasparenza dell'intelligenza artificiale responsabile.

Few-shot learning

Un modo comune per adattare i modelli linguistici alle nuove attività consiste nell'usare l'apprendimento definito in inglese "few-shot learning". Nel few-shot learning, viene fornito un set di esempi di training come parte del prompt per fornire contesto aggiuntivo al modello.

Quando si usa l'API di completamento delle chat, una serie di messaggi tra l'utente e l'assistente (scritto nel nuovo formato di prompt), possono fungere da esempi per il few-shot learning. Questi esempi possono essere usati per impostare il modello in modo che risponda in maniera specifica, emuli comportamenti specifici e selezioni risposte alle domande comuni.

Messaggio di sistema Esempi di few-shot
L'assistente è un chatbot intelligente progettato per aiutare gli utenti a rispondere a domande sulle tasse.
Istruzioni
- Rispondi solo alle domande relative alle imposte.
- Se non sei certo di una risposta, puoi dire "Non lo so" o "Non sono sicuro" e consigliare agli utenti di andare al sito Web IRS per altre informazioni.
Utente : "Quando devo pagare le tasse?"
Assistente - "Nel 2023, dovrai pagare le tasse entro il 18 aprile. La data cade dopo la consueta scadenza del 15 aprile perché il 15 aprile cade di sabato nel 2023. Per informazioni dettagliate, vedi https://www.irs.gov/filing/individuals/when-to-file"

Utente : "Come posso controllare lo stato del rimborso fiscale?"
Assistente - "È possibile controllare lo stato del rimborso fiscale visitando https://www.irs.gov/refunds "

La tabella precedente descrive la struttura di richieste di base, ma per una spiegazione dettagliata del formato esatto della richiesta è necessario fare riferimento alla guida sul completamento delle chat.

Scenari non di chat

Anche se l'API di completamento delle chat è ottimizzata per lavorare con conversazioni a più turni, può essere usata anche per scenari non di chat. Ad esempio, per uno scenario di analisi del sentiment, è possibile usare il prompt seguente:

Messaggio di sistema User Assistente
Sei un assistente progettato per analizzare la valutazione da dati vocali. Gli utenti incolleranno una stringa di testo e risponderai con una valutazione della risposta della persona che parla. Valuta su una scala da 1-10 (10 è il valore massimo). Spiega perché questa hai dato questa valutazione. ciao grazie per aver chiamato contoso pharmacy con chi sto parlando oggi capisco la sua frustrazione mary um può dirmi cosa esattamente sta cercando di realizzare OK uh sono felice di verificarlo per lei un momento per favore vedo qui che lei stava assumendo una forma generica di lipitor giusto ok u vedo che il suo medico ha smesso di prescriverle questi farmaci nel duemilaventi in realtà ok uh sì sarei felice di controllare che per lei uh perché a volte c'è un gap nel sistema e non viene segnalato mi lasci dare un'occhiata qui solo un momento quindi vedo qui che il suo medico le ha prescritto questi farmaci dal duemiladodici al duemilaventi ok um sì secondo i dati più recenti forniti dall'ufficio del medico ora lei prende un altro farmaco il metformin farmaco vorrebbe andare avanti e compilo io la prescrizione e poi passa ritirarla deve prenderne una piccola parte in cinquecento milligrammi prego mary mi faccia sapere se c'è qualcos'altro che possiamo fare per lei oggi. Valutazione del sentiment: 8
Il relatore in questo testo sembra essere educato, utile e paziente mentre affronta le preoccupazioni del cliente. Si prende il tempo necessario per controllare le informazioni, fornire spiegazioni chiare e offrire assistenza. Tuttavia, la valutazione non è un 10 perché c'è ancora una lieve incertezza in alcune parti della conversazione, che potrebbe non trasmettere fiducia completa al cliente.

Iniziare con istruzioni chiare

La sequenza in cui le informazioni vengono visualizzate nella richiesta è importante. Ciò è dovuto al fatto che i modelli di stile GPT vengono compilati in un determinato modo che definisce come elaborano l'input. La ricerca suggerisce che indicare al modello l'attività che si vuole eseguire all'inizio del prompt, prima di condividere informazioni contestuali aggiuntive o esempi, può contribuire a produrre output di qualità superiore.

Nota

Anche se, in genere, seguire questa tecnica è comunque consigliato, a differenza delle versioni precedenti del modello (GPT-3 e precedenti), i test hanno dimostrato che la risposta del modello con i modelli ChatGPT e GPT-4 era la stessa indipendentemente dal fatto che venga usata. Nel caso dell'esempio seguente, si noterà che aggiungendo l'affermazione "Diverse fonti… eruzione" all'inizio o alla fine del prompt non ha causato alcuna modifica nella risposta finale del modello.

Messaggio di sistema User Assistente
Sei un assistente di intelligenza artificiale che aiuta le persone a trovare informazioni. L'attività consiste nel verificare se l'affermazione "Diverse fonti indicano che esiste la possibilità di un'altra eruzione di grandi dimensioni" è supportata da una citazione specifica proveniente dal set di frammenti seguente.
---
• FRAMMENTI
[1] 14% di probabilità che si verifichi un "megaterremoto" nella zona di Seattle, secondo gli esperti
SEATTLE - C'è una probabilità del 14% che un terremoto di magnitudo 9, la stessa del famoso terremoto di Cascadia, colpisca Seattle, negli Stati Uniti, nei prossimi 50 anni. Stime dell'indagine geologica. "Purtroppo, non siamo in grado di...

[2] Gli esperti hanno illustrato le ultime prospettive per il grave terremoto che colpirà Seattle, definito "The Really Big One", per la magnitudo prevista.
"Secondo i dati c'è circa un 14% di probabilità che si registri un altro terremoto di magnitudo 9 circa nei prossimi 50 anni", dice un geofisico presso l'Università di Washington...
---
L'affermazione "Diverse fonti menzionano la possibilità di un'altra eruzione di grandi dimensioni" è direttamente sottintesa o dichiarata nei frammenti?
No, l'affermazione non è direttamente sottintesa o dichiarata nei frammenti. I frammenti menzionano la possibilità che si verifichi un "megaterremoto" e un terremoto di "magnitudo 9, la stessa del famoso terremoto di Cascadia" che colpirà Seattle nei prossimi 50 anni, ma non accennano alla possibilità di un'altra grande eruzione.

Ripetere le istruzioni alla fine

I modelli possono essere soggetti a recency bias, ovvero a distorsioni dovute al fatto che le informazioni alla fine della prompt potrebbero avere un'influenza più significativa sull'output, rispetto alle informazioni all'inizio. Pertanto, vale la pena provare a ripetere le istruzioni alla fine della richiesta e valutare l'impatto sulla risposta generata.

Impostare l'output

Questo si riferisce all'inclusione di alcune parole o frasi alla fine del prompt per ottenere una risposta del modello che segue il modulo desiderato. Ad esempio, l'uso di un segnale, ad esempio “Here’s a bulleted list of key points:\n- ”, può essere utile per assicurarsi che l'output sia formattato come elenco puntato.

Messaggio di sistema User Assistente
Sei un assistente di intelligenza artificiale che aiuta le persone a trovare informazioni. Rispondi nel minor numero possibile di parole. John Smith è sposato con Lucy Smith. Hanno cinque figli e lui lavora come ingegnere del software presso Microsoft. Quali query di ricerca è consigliabile eseguire per verificare queste informazioni? ## Una possibile query di ricerca è: "John Smith sposato Lucy Smith cinque bambini ingegnere del software Microsoft"

Nel prompt precedente, il testo Una possibile query di ricerca è: prepara il modello per produrre un singolo output. Senza questo segnale il modello produce diverse query di ricerca come output.

Aggiungere una sintassi chiara

L'uso di una sintassi chiara per il prompt, inclusi punteggiatura, titoli e marcatori di sezione, consente di comunicare finalità e spesso semplifica l'analisi degli output.

Nell'esempio seguente sono stati aggiunti dei separatori (---, in questo caso) tra le diverse fonti di informazioni o i vari passaggi. Ciò consente l'uso di --- come condizione di arresto per la generazione. Inoltre, i titoli delle sezioni o le variabili speciali vengono presentate in lettere maiuscole per distinguerle.

Messaggio di sistema User Assistente
Sei un assistente di intelligenza artificiale che aiuta le persone a trovare informazioni. Leggerai un paragrafo ed eseguirai query in un motore di ricerca per verificare le informazioni. Spiegare anche le query.
---
PARAGRAFO
John Smith è sposato con Lucy Smith. Hanno cinque figli e lui lavora come ingegnere del software presso Microsoft. Quali query di ricerca è consigliabile eseguire per verificare queste informazioni?
---
QUERY
1. "John Smith Microsoft" - Per verificare se John Smith è effettivamente un'impiegato di Microsoft.
2. "John Smith Lucy Smith" - Per verificare se John Smith è sposato con Lucy Smith.
3. "John Smith figli" - Per controllare se John Smith ha cinque figli.

Se non si è certi della sintassi da usare, è consigliabile usare Markdown o XML. I modelli sono stati sottoposti a training su una quantità elevata di contenuti Web in XML e Markdown, pertanto potrebbero offrire risultati migliori.

Suddividere l'attività

I modelli di linguaggio di grandi dimensioni spesso offrono prestazioni migliori se l'attività è suddivisa in passaggi più piccoli. Ad esempio, nel prompt di query di ricerca a cui si fa riferimento in precedenza, il prompt può essere ristrutturato in modo che al modello venga prima richiesto di estrarre i fatti rilevanti, e poi di generare query di ricerca che possono essere usate per verificare tali fatti.

Messaggio di sistema User Assistente
Sei un assistente di intelligenza artificiale che aiuta le persone a trovare informazioni. Leggerai un paragrafo ed eseguirai query in un motore di ricerca per verificare le informazioni.
---
PARAGRAFO
John Smith è sposato con Lucy Smith. Hanno cinque figli e lui lavora come ingegnere del software presso Microsoft. Quali query di ricerca è consigliabile eseguire per verificare queste informazioni?
---
A questo punto si estrarranno le affermazioni fattuali e si eseguiranno query per verificarle. Quando si esegue una query, usare la funzione RICERCA("query")

AFFERMAZIONI FATTUALI
1. John Smith è sposato con Lucy Smith
2. Hanno cinque figli
3. Lavora come ingegnere del software presso Microsoft

QUERY
RICERCA("John Smith sposato Lucy Smith")
RICERCA("John Smith dimensioni famiglia")
RICERCA("John Smith ingegnere del software Microsoft")

Si noti l'uso di una sintassi chiara per distinguere le sezioni e impostare l'output. In questo semplice esempio la suddivisione dell'attività per ottenere da uno a due passaggi non comporta vantaggi particolarmente rilevanti, ma quando si prova a eseguire questa operazione per un pezzo più grande di testo con molte affermazioni fattuali, la suddivisione dell'attività può avere un impatto significativo.

Sfruttare le affordance

A volte è possibile fare in modo che il modello utilizzi un'affordance, anziché basarsi sui propri parametri per informazioni e risposte. La ricerca, ad esempio, può essere un'affordance per attenuare le risposte create e ottenere informazioni aggiornate.

Un modo semplice per usare un'affordance consiste nell'arrestare la generazione dopo che le chiamate vengono generate dal modello, poi incollare nuovamente i risultati nel prompt. Di seguito, è riportato un esempio di come la chiamata successiva potrebbe essere, dopo aver eseguito le chiamate di RICERCA precedenti. Si noti come i risultati della ricerca sono stati incollati nel prompt e hanno sostituito le chiamate di RICERCA precedenti.

Messaggio di sistema User Assistente
Sei un assistente di intelligenza artificiale che aiuta le persone a trovare informazioni. Leggerai un paragrafo, estrarrai affermazioni fattuali e quindi userai i risultati del motore di ricerca per verificarle
---
PARAGRAFO
John Smith è sposato con Lucy Smith. Hanno cinque figli e lui lavora come ingegnere del software presso Microsoft. Quali query di ricerca è consigliabile eseguire per verificare queste informazioni?
---
AFFERMAZIONI FATTUALI
- John Smith è sposato con Lucy Smith
- John e Lucy hanno cinque figli
- John lavora come ingegnere del software presso Microsoft
---
Di seguito, sono riportate varie query di ricerca eseguite per fare ricerca sulle affermazioni precedenti:
QUERY DI RICERCA
- John Smith sposato con Lucy Smith
- John Smith numero di figli
- John Smith ingegnere del software Microsoft
---
Ecco alcuni frammenti dei risultati della ricerca:
FRAMMENTI:
[1] John Smith si è sposato il 25 settembre 2012 …
[2] John Smith è stato accompagnato a una festa dalla moglie Lucy
[3] John è stato accompagnato alla partita di calcio dalle sue due figlie e tre figli
[4] Dopo aver trascorso 10 anni presso Microsoft, Smith ha fondato la sua startup, Tailspin Toys
[5] John M è lo smith della città e si è sposato con Fiona. Hanno una figlia di nome Lucy
---
In base a questi frammenti, verifica ognuna delle affermazioni fattuali sopra riportate:
- John Smith è sposato con Lucy Smith: confermato. Entrambi i frammenti [1] e [2] menzionano la moglie di John Smith, Lucy.

- John e Lucy hanno cinque figli: Confermato. Il frammento [3] cita che John è stato accompagnato dalle sue due figlie e tre figli.

- John lavora come ingegnere del software presso Microsoft: Parzialmente confermato. Il frammento [4] menziona che John ha trascorso 10 anni in Microsoft, ma non dichiara esplicitamente che attualmente lavora lì. Potrebbero essere necessarie ulteriori ricerche per confermare lo stato di occupazione attuale.

Prompt Chain-of-Thought (a catena di pensieri)

Si tratta di una variante della tecnica di suddivisione dell'attività. Invece di suddividere un'attività in passaggi più piccoli, in questo approccio, al modello viene richiesto di creare una risposta procedendo passo per passo e presentando tutti i passaggi fatti. In questo modo ci sono meno possibilità che i risultati siano imprecisi e si semplifica la valutazione della risposta del modello.

Messaggio di sistema User Assistente
Sei un assistente di intelligenza artificiale che aiuta le persone a trovare informazioni. Chi è stato l'atleta individuale più decorato (massimo numero di medaglie) nei Giochi olimpici che si sono tenuti a Sydney? Adotta un approccio passo per passo per creare la risposta, cita le fonti e fornisci una descrizione del ragionamento fatto prima di condividere la risposta finale nel formato seguente: RISPOSTA: <name> Passo 1: Determina l'anno dei Giochi olimpici di Sydney. I Giochi olimpici di Sydney si sono disputati nell'anno 2000.

Passo 2: Trova una lista di atleti individuali che elenca quelli che hanno vinto varie nelle Olimpiadi di Sydney 2000.

Secondo il sito ufficiale dei Giochi olimpici, ci sono stati diversi atleti individuali che hanno vinto varie medaglie nelle Olimpiadi di Sydney del 2000. Alcuni dei nomi più rilevanti includono:
• Ian Thorpe (Australia) - 3 oro, 2 argento, 0 bronzo
• Pieter van den Hoogenband (Paesi Bassi) - 2 oro, 0 argento, 2 bronzo
• Lenny Krayzelburg (USA) - 3 oro, 0 argento, 0 bronzo
• Inge de Bruijn (Paesi Bassi) - 3 oro, 1 argento, 0 bronzo

Passo 3: Determina l'atleta che ha vinto più medaglie. Dopo aver esaminato l'elenco dei singoli atleti che hanno vinto più medaglie nelle Olimpiadi di Sydney del 2000, possiamo vedere che l'atleta con ilo maggior numero di medaglie è Ian Thorpe dall'Australia, che ha vinto un totale di 5 medaglie (3 oro e 2 argento).

Pertanto, la RISPOSTA è: Ian Thorpe.

Specificare la struttura di output

Usare la richiesta per specificare la struttura dell'output può avere un effetto significativo sulla natura e sulla qualità dei risultati. A volte gli input dei messaggi di sistema come "scrivi solo fatti veri" o "non inventare informazioni" potrebbero non essere misure di mitigazione adeguate. Invece, chiedere che la risposta del modello includa anche citazioni può contribuire a ridurre la prevalenza di risposte errate.

Se si indica al modello di citare le fonti quando crea affermazioni, tali affermazioni saranno probabilmente più fondate. Richiedere le citazioni fa in modo che il modello debba fare due errori ogni volta che genera una risposta: il primo errore è la risposta creata e il secondo è la citazione errata. Si noti che più la citazione è vicina al testo che supportata, più breve è la distanza che deve percorrere il modello per prevedere la citazione, il che suggerisce che le citazioni inline sono migliori mitigazioni per la generazione di contenuti falsi, rispetto alle citazioni poste alla fine del contenuto.

Analogamente, se si chiede al modello di estrarre le affermazioni fattuali da un paragrafo, potrebbe estrarre affermazioni composte come "X sta facendo Y E ANCHE Z", che potrebbero essere più difficili da verificare. Questo risultato può essere evitato specificando una struttura di output, ad esempio (entità1, relazione, entità2).

Gli esempi seguenti illustrano l'uso di citazioni e di indirizzamento della risposta in modo che il modello la crei in base a una struttura definita.

Messaggio di sistema User Assistente
Sei un assistente di intelligenza artificiale che aiuta le persone a trovare informazioni Elenca i diversi comportamenti mostrati dall'agente del supporto tecnico nella conversazione seguente.
---
ciao grazie per aver chiamato contoso pharmacy con chi sto parlando oggi capisco la sua frustrazione mary um può dirmi cosa esattamente sta cercando di realizzare OK uh sono felice di verificarlo per lei un momento per favore vedo qui che lei stava assumendo una forma generica di lipitor giusto ok u vedo che il suo medico ha smesso di prescriverle questi farmaci nel duemilaventi in realtà ok uh sì sarei felice di controllare che per lei uh perché a volte c'è un gap nel sistema e non viene segnalato mi lasci dare un'occhiata qui solo un momento quindi vedo qui che il suo medico le ha prescritto questi farmaci dal duemiladodici al duemilaventi ok um sì secondo i dati più recenti forniti dall'ufficio del medico ora lei prende un altro farmaco il metformin farmaco vorrebbe andare avanti e compilo io la prescrizione e poi passa ritirarla deve prenderne una piccola parte in cinquecento milligrammi prego mary mi faccia sapere se c'è qualcos'altro che possiamo fare per lei oggi.
---
Come è stata la risposta dell'agente del supporto tecnico?
Classifica ed elenca i diversi comportamenti e cita i motivi alla base della classificazione fornita, usando il formato COMPORTAMENTO("motivo")
1. Saluto educato COMPORTAMENTO("L'agente inizia la conversazione con un saluto educato e chiede il nome della persona che chiama")
2. Empatico COMPORTAMENTO("L'agente riconosce la frustrazione di Mary e cerca di comprendere le sue preoccupazioni")
3. Attento COMPORTAMENTO("L'agente ascolta il problema del cliente e chiede ulteriori dettagli")
4. Proattivo COMPORTAMENTO("L'agente offre di verificare il problema per il cliente")
5. Informativo COMPORTAMENTO("L'agente fornisce le informazioni pertinenti sulle passate prescrizioni del cliente")
6. Scrupoloso COMPORTAMENTO("L'agente verifica eventuali lacune nel sistema e fornisce una risposta completa")
7. Confirmatorio COMPORTAMENTO("L'agente conferma il farmaco attuale con il cliente")
8. Orientato alla soluzione COMPORTAMENTO("L'agente offre di compilare la nuova prescrizione per il cliente")
9. Cortese COMPORTAMENTO("L'agente ringrazia il cliente e offre ulteriore assistenza, se necessario")
Messaggio di sistema User Assistente
Sei un assistente di intelligenza artificiale che aiuta le persone a trovare informazioni. Raggruppa i titoli delle notizie seguenti in categorie di argomenti in base agli schemi all'interno del testo. Menziona anche il ragionamento alla base di come hai definito queste categorie.
Output format (Formato output):
{
"NOME_ARGOMENTO": "",
"TITOLI": [],
"RAGIONAMENTO": ""
}

Titoli delle notizie di input:
1. "Dai libri alle presentazioni in 10 secondi con AR + ML"
2. "Demo del 1993 di Yann LeCun che, a 32 anni, mostra la prima Rete neurale convoluzionale del mondo per il riconoscimento del testo"
3. "First Order Motion Model utilizzato per animare i dipinti"
4. "Robinhood e altri broker bloccano letteralmente l'acquisto di $GME, $NOK, $BB, $AMC; consenti vendite"
5. "Azioni di United Airlines in ribasso di più del 5% nel trading premarket"
Output:

{
"INTELLIGENZA_ARTIFICIALE": {
"TITOLI": [
"Dai libri alle presentazioni in 10 secondi con AR + ML",
"Demo del 1993 di Yann LeCun che, a 32 anni, mostra la prima Rete neurale convoluzionale del mondo per il riconoscimento del testo",
"First Order Motion Model utilizzato per animare i dipinti"
],
"RAGIONAMENTO": "Questi titoli sono correlati al tema dell'intelligenza artificiale, dell'apprendimento automatico e alle relative applicazioni in vari campi".
},
"MERCATI_FINANZIARI": {
"TITOLI": [
"Robinhood e altri broker bloccano letteralmente l'acquisto di $GME, $NOK, $BB, $AMC; consenti vendite",
"Azioni di United Airlines in ribasso di più del 5% nel trading premarket",
"Ad oggi, un anno fa, Bitcoin era quasi a $ 20.000"
],
"RAGIONAMENTO": "Questi titoli sono correlati a temi come mercati finanziari, azioni, criptovalute e piattaforme di trading".
}
}

Parametri Temperatura e Top_p

La modifica del parametro Temperatura modifica l'output del modello. Il parametro Temperatura può essere impostato tra 0 e 2. Un valore più alto, ad esempio 0,7, rende l'output più casuale e produce risposte più divergenti, mentre un valore inferiore, ad esempio 0.2, rende l'output più mirato e concreto. Una storia fittizia potrebbe essere generata usando una Temperatura più elevata. Mentre per generare un documento legale è consigliabile usare una Temperatura molto più bassa. Top_probability è un altro parametro ed è simile alla Temperatura, in quanto controlla anch'esso la casualità della risposta del modello, ma lo fa in modo diverso. La raccomandazione generale è di modificare solo uno di questi due parametri alla volta, non entrambi.

Fornire un contesto fondato

Uno dei modi più efficaci per avere risposte affidabili consiste nel fornire al modello dati da cui trarre le risposte (dati di base). Se il caso d'uso si basa su informazioni aggiornate e affidabili e non è puramente uno scenario immaginario, è consigliabile fornire dati di base. In generale, più si riesce a mantenere simili le fonti alla forma finale della risposta desiderata, minore è il lavoro che deve fare il modello, pertanto si riduce la probabilità di errore. Ecco un esempio in cui al sistema viene fornito un blog recente che descrive il lancio di GPT-4 nel Servizio OpenAI di Azure e poi gli viene richiesto di nominare alcuni dei suoi primi clienti.

Messaggio di sistema User Assistente
Sei un assistente di intelligenza artificiale che aiuta le persone a trovare informazioni. Le risposte che fornirai avranno origine esclusivamente nel testo seguente e risponderai con un massimo di 100 parole:
"Microsoft scopre costantemente nuovi modi per liberare la creatività, sbloccare la produttività e migliorare le competenze, per consentire a più persone di trarre vantaggio dall'uso dell'IA. Questo consente ai nostri clienti di…

… riducendo così la probabilità che il modello generi una risposta dannosa".1

Rispondi con massimo 100. Utilizza elenchi puntati laddove possibile.
Chi sono alcuni dei primi clienti dei modelli GPT-4 del Servizio OpenAI di Azure? Ecco alcuni dei primi clienti dei modelli GPT-4 del Servizio OpenAI di Azure:
- Epic Healthcare: prevede di usare GPT-4 per aiutare medici e infermieri a dedicare meno tempo all'immissione e all'indagine dei dati.
- Coursera: usano il Servizio OpenAI di Azure con GPT-4 per creare nella piattaforma una nuova esperienza di apprendimento basata su intelligenza artificiale.
- Coca-Cola: usano il Servizio OpenAI di Azure per creare un hub di conoscenze e prevedono di usare le funzionalità multidimensionali di GPT-4 per marketing, pubblicità, pubbliche relazioni e relazioni con i clienti.
- Altre aziende di tutte le dimensioni usano Azure per intelligenza artificiale per migliorare le esperienze dei clienti, riepilogare contenuti lunghi, contribuire a scrivere software e ridurre i rischi stimando i dati fiscali corretti.

1 Testo dal Blog di lancio di GPT-4 nel Servizio OpenAI di Azure.

Procedure consigliate

  • Essere specifici. Lasciare il minimo possibile interpretazione. Limitare lo spazio operativo.
  • Ricorrere a indicazioni descrittive. Usare le analogie.
  • Ribadire. A volte potrebbe essere necessario ripetersi nel modello. Fornire istruzioni prima e dopo il contenuto principale, usare un'istruzione e un segnale e così via.
  • L'ordine è importante. L'ordine in cui vengono presentate le informazioni al modello potrebbe influire sull'output. Se si inseriscono istruzioni prima del contenuto ("riepilogare quanto segue…") o dopo ("riepilogare quanto sopra…") può fare la differenza nell'output. Anche l'ordine degli esempi few-shot può essere importante. Questo processo viene chiamato recency bias.
  • Fornire al modello un'alternativa. A volte può essere utile fornire al modello un percorso alternativo se non è in grado di completare l'attività assegnata. Ad esempio, quando si pone una domanda su una parte di testo, è possibile includere qualcosa di simile a "rispondere con "non trovato" se la risposta non è presente". Ciò consente al modello di evitare la generazione di risposte false.

Efficienza dello spazio

Anche se le dimensioni di input aumentano con ogni nuova generazione di modelli GPT, continueranno a esistere scenari che forniscono più dati rispetto a quelli che il modello può gestire. I modelli GPT suddividono le parole in "token". Anche se le parole multisillabiche comuni sono spesso un singolo token, le parole meno comuni vengono suddivise in sillabe. I token possono talvolta essere contro-intuitivi, come illustrato nell'esempio seguente, che mostra i limiti dei token per formati di data diversi. In questo caso, l'ortografia dell'intero mese è più efficiente dal punto di vista dello spazio rispetto a una data completamente numerica. L'intervallo corrente di supporto dei token va da 2.000 token con modelli GPT-3 precedenti fino a 32.768 token con la versione 32k del modello GPT-4 più recente.

Screenshot di una stringa di testo con colori evidenziati che delineano i limiti del token.

Dato questo spazio limitato, è importante usarlo nel modo più efficiente possibile.

  • Tabelle: come illustrato negli esempi della sezione precedente, i modelli GPT possono comprendere facilmente i dati in formato tabulare. Può trattarsi di un modo efficiente dal punto di vista dello spazio per includere i dati, invece di far precedere ogni campo da un nome (come nel caso di JSON).
  • Spazio vuoto: gli spazi vuoti consecutivi vengono considerati come token separati che possono essere un modo semplice per sprecare spazio. Gli spazi che precedono una parola, d'altra parte, vengono in genere considerati come parte dello stesso token della parola. Fare attenzione all'uso degli spazi vuoti e non usare la punteggiatura quando basta uno spazio.