Condividi tramite


Informazioni su come generare o modificare il testo

Il servizio Azure OpenAI offre un endpoint di completamento che può essere usato per un'ampia gamma di attività. L'endpoint fornisce un'interfaccia text-out semplice ma potente e di testo a qualsiasi modello OpenAI di Azure. Per attivare il completamento, immettere un testo come richiesta. Il modello genera il completamento e tenta di corrispondere al contesto o al modello. Si supponga di fornire la richiesta "Come ha detto Descartes, penso, quindi" all'API. Per questo prompt, Azure OpenAI restituisce l'endpoint di completamento "I am" con alta probabilità.

Il modo migliore per iniziare a esplorare i completamenti è tramite il playground in Azure OpenAI Studio. Si tratta di una semplice casella di testo in cui si immette una richiesta di generazione di un completamento. È possibile iniziare con una semplice richiesta simile alla seguente:

write a tagline for an ice cream shop

Dopo aver immesso la richiesta, Azure OpenAI visualizza il completamento:

we serve up smiles with every scoop!

I risultati di completamento visualizzati possono essere diversi perché l'API OpenAI di Azure produce un output aggiornato per ogni interazione. È possibile ottenere un completamento leggermente diverso ogni volta che si chiama l'API, anche se la richiesta rimane invariata. È possibile controllare questo comportamento con l'impostazione Temperature .

L'interfaccia text-out semplice significa che è possibile "programmare" il modello OpenAI di Azure fornendo istruzioni o solo alcuni esempi di ciò che si vuole fare. L'esito positivo dell'output dipende in genere dalla complessità dell'attività e dalla qualità della richiesta. Una regola generale consiste nel pensare a come scrivere un problema di parola per uno studente pre-adolescente da risolvere. Una richiesta ben scritta fornisce informazioni sufficienti per il modello per sapere cosa si vuole e come deve rispondere.

Nota

I dati di training del modello possono essere diversi per ogni tipo di modello. I dati di training del modello più recenti attualmente si estendono solo a settembre 2021. A seconda del prompt, il modello potrebbe non conoscere gli eventi correnti correlati.

Richieste di progettazione

I modelli del servizio Azure OpenAI possono eseguire tutte le operazioni, dalla generazione di storie originali a un'analisi del testo complessa. Poiché possono fare così tante cose, è necessario essere espliciti nel mostrare ciò che si vuole. Mostrare e non solo dire è spesso il segreto di una buona richiesta.

I modelli tentano di stimare gli elementi desiderati dal prompt. Se si immette la richiesta "Dammi un elenco di razze di gatti", il modello non presuppone automaticamente che venga richiesto solo un elenco. Potresti iniziare una conversazione in cui le tue prime parole sono "Dammi un elenco di razze di gatti" seguite da "e ti dirò quali mi piace". Se il modello presupponeva solo di volere un elenco di gatti, non sarebbe utile per la creazione, la classificazione o altre attività di contenuto.

Linee guida per la creazione di richieste affidabili

Esistono tre linee guida di base per la creazione di richieste utili:

  • Mostra e dica. Rendi chiaro ciò che vuoi tramite istruzioni, esempi o una combinazione dei due. Se si vuole che il modello classifica un elenco di elementi in ordine alfabetico o per classificare un paragrafo in base al sentiment, includere questi dettagli nel prompt per visualizzare il modello.

  • Fornire dati di qualità. Se si sta provando a compilare un classificatore o ottenere il modello per seguire un modello, assicurarsi che siano presenti esempi sufficienti. Assicurarsi di rileggere gli esempi. Il modello è abbastanza intelligente per risolvere gli errori di ortografia di base e fornire una risposta significativa. Al contrario, il modello potrebbe presupporre che gli errori siano intenzionali, che possono influire sulla risposta.

  • Controllare le impostazioni. Le impostazioni di probabilità, ad esempio Temperature e Top P, controllano il modo in cui il modello è deterministico nella generazione di una risposta. Se si richiede una risposta in cui è presente una sola risposta corretta, è necessario specificare valori inferiori per queste impostazioni. Se si sta cercando una risposta non ovvia, è possibile usare valori più elevati. L'errore più comune che gli utenti commettono con queste impostazioni presuppone che controllino "intelligenza" o "creatività" nella risposta del modello.

Risoluzione dei problemi di richiesta

Se si verificano problemi durante l'esecuzione dell'API come previsto, esaminare i punti seguenti per l'implementazione:

  • È chiaro che cosa dovrebbe essere la generazione prevista?
  • Ci sono esempi sufficienti?
  • Hai controllato i tuoi esempi per individuare gli errori? L'API non indica direttamente.
  • Si usano correttamente le Temperature impostazioni di probabilità e Top P ?

Classifica testo

Per creare un classificatore di testo con l'API, fornire una descrizione dell'attività e fornire alcuni esempi. In questa dimostrazione viene illustrato all'API come classificare il sentiment dei messaggi di testo. Il sentiment esprime la sensazione o l'espressione complessiva nel testo.

This is a text message sentiment classifier

Message: "I loved the new adventure movie!"
Sentiment: Positive

Message: "I hate it when my phone battery dies." 
Sentiment: Negative

Message: "My day has been 👍"
Sentiment: Positive

Message: "This is the link to the article"
Sentiment: Neutral

Message: "This new music video is unreal"
Sentiment:

Linee guida per la progettazione di classificatori di testo

Questa dimostrazione illustra diverse linee guida per la progettazione di classificatori:

  • Usare il linguaggio normale per descrivere gli input e gli output. Usare la lingua normale per l'input "Message" e il valore previsto che esprime "Sentiment". Per le procedure consigliate, iniziare con descrizioni in linguaggio normale. Spesso è possibile usare le chiavi o abbreviate per indicare l'input e l'output durante la compilazione del prompt, ma è consigliabile iniziare con la massima descrizione possibile. È quindi possibile lavorare indietro e rimuovere parole aggiuntive purché le prestazioni al prompt sia coerente.

  • Mostrare all'API come rispondere in qualsiasi caso. La dimostrazione fornisce più risultati: "Positivo", "Negativo" e "Neutro". Sostenere un risultato neutro è importante perché esistono molti casi in cui anche un essere umano può avere difficoltà a determinare se qualcosa è positivo o negativo.

  • Usare emoji e testo, in base all'espressione comune. La dimostrazione mostra che il classificatore può essere una combinazione di testo ed emoji 👍. L'API legge emoji e può anche convertire le espressioni in e da esse. Per una risposta ottimale, usare forme comuni di espressione per gli esempi.

  • Usare un minor numero di esempi per le attività familiari. Questo classificatore fornisce solo alcuni esempi perché l'API ha già una conoscenza del sentiment e del concetto di messaggio di testo. Se si sta creando un classificatore per un elemento con cui l'API potrebbe non avere familiarità, potrebbe essere necessario fornire altri esempi.

Più risultati da una singola chiamata API

Ora che si è appreso come creare un classificatore, si esaminerà la prima dimostrazione per renderlo più efficiente. Si vuole poter usare il classificatore per ottenere più risultati da una singola chiamata API.

This is a text message sentiment classifier

Message: "I loved the new adventure movie!"
Sentiment: Positive

Message: "I hate it when my phone battery dies"
Sentiment: Negative

Message: "My day has been 👍"
Sentiment: Positive

Message: "This is the link to the article"
Sentiment: Neutral

Message text
1. "I loved the new adventure movie!"
2. "I hate it when my phone battery dies"
3. "My day has been 👍"
4. "This is the link to the article"
5. "This new music video is unreal"

Message sentiment ratings:
1: Positive
2: Negative
3: Positive
4: Neutral
5: Positive

Message text
1. "He doesn't like homework"
2. "The taxi is late. She's angry 😠"
3. "I can't wait for the weekend!!!"
4. "My cat is adorable ❤️❤️"
5. "Let's try chocolate bananas"

Message sentiment ratings:
1.

Questa dimostrazione illustra l'API come classificare i messaggi di testo in base al sentiment. Viene fornito un elenco numerato di messaggi e un elenco di valutazioni del sentiment con lo stesso indice numerico. L'API usa le informazioni nella prima dimostrazione per apprendere come classificare il sentiment per un singolo messaggio di testo. Nella seconda dimostrazione il modello illustra come applicare la classificazione del sentiment a un elenco di messaggi di testo. Questo approccio consente all'API di valutare cinque messaggi di testo (e ancora di più) in una singola chiamata API.

Importante

Quando si chiede all'API di creare elenchi o valutare il testo, è importante aiutare l'API a evitare la deriva. Ecco alcuni punti da seguire:

  • Prestare attenzione ai valori per le impostazioni di Top P probabilità o Temperature .
  • Eseguire più test per assicurarsi che le impostazioni di probabilità siano calibrate correttamente.
  • Non usare elenchi lunghi. Gli elenchi lunghi possono portare alla deriva.

Attivare idee

Una delle attività più potenti e semplici che è possibile eseguire con l'API genera nuove idee o versioni di input. Si supponga di scrivere un romanzo mistero e che siano necessarie alcune idee di storia. È possibile assegnare all'API un elenco di alcune idee e provare ad aggiungere altre idee all'elenco. L'API può creare piani aziendali, descrizioni dei caratteri, slogan di marketing e molto altro ancora da una piccola manciata di esempi.

Nella dimostrazione successiva si usa l'API per creare altri esempi per l'uso della realtà virtuale in classe:

Ideas involving education and virtual reality

1. Virtual Mars
Students get to explore Mars via virtual reality and go on missions to collect and catalog what they see.

2.

Questa dimostrazione fornisce all'API una descrizione di base per l'elenco insieme a una voce di elenco. Usare quindi una richiesta incompleta di "2". per attivare una risposta dall'API. L'API interpreta la voce incompleta come richiesta per generare elementi simili e aggiungerli all'elenco.

Linee guida per l'attivazione di idee

Anche se questa dimostrazione usa un prompt semplice, evidenzia diverse linee guida per attivare nuove idee:

  • Spiegare la finalità dell'elenco. Analogamente alla dimostrazione per il classificatore di testo, è possibile iniziare indicando all'API le informazioni sull'elenco. Questo approccio consente all'API di concentrarsi sul completamento dell'elenco anziché sul tentativo di determinare i modelli analizzando il testo.

  • Impostare il criterio per gli elementi nell'elenco. Quando si specifica una descrizione di una frase, l'API tenta di seguire tale modello durante la generazione di nuovi elementi per l'elenco. Se si vuole una risposta più dettagliata, è necessario stabilire tale finalità con un input di testo più dettagliato per l'API.

  • Richiedere all'API una voce incompleta per attivare nuove idee. Quando l'API rileva il testo che sembra incompleto, ad esempio il testo del prompt "2.", tenta prima di tutto di determinare il testo che potrebbe completare la voce. Poiché la dimostrazione ha un titolo elenco e un esempio con il numero "1" e il testo associato, l'API ha interpretato il testo di richiesta incompleto "2". Come richiesta di continuare ad aggiungere elementi all'elenco.

  • Esplorare le tecniche di generazione avanzate. È possibile migliorare la qualità delle risposte rendendo un elenco più diversificato nel prompt. Un approccio consiste nell'iniziare con un esempio, consentire all'API di generare altri esempi e quindi selezionare gli esempi più adatti e aggiungerli all'elenco. Alcune variazioni di alta qualità negli esempi possono migliorare notevolmente la qualità delle risposte.

Condurre conversazioni

A partire dal rilascio di GPT-35-Turbo e GPT-4, è consigliabile creare chatbot e generazione di conversazioni usando modelli che supportano l'endpoint di completamento della chat. I modelli di completamento della chat e l'endpoint richiedono una struttura di input diversa rispetto all'endpoint di completamento.

L'API è in grado di condurre conversazioni con gli esseri umani e anche con se stessa. Con poche righe di istruzioni, l'API può eseguire come chatbot del servizio clienti che risponde in modo intelligente alle domande senza farsi svolazzare, o un partner di conversazione saggia che fa scherzi e giochi di parole. La chiave consiste nel indicare all'API il comportamento e quindi fornire alcuni esempi.

In questa dimostrazione l'API fornisce il ruolo di un'intelligenza artificiale che risponde alle domande:

The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.

Human: Hello, who are you?
AI: I am an AI created by OpenAI. How can I help you today?
Human: 

Esaminiamo una variante per un chatbot denominato "Cramer", un assistente virtuale divertente e utile. Per aiutare l'API a comprendere il carattere del ruolo, è possibile fornire alcuni esempi di domande e risposte. Bastano poche risposte sarcastiche e l'API può raccogliere il modello e fornire un numero infinito di risposte simili.

Cramer is a chatbot that reluctantly answers questions.

###
User: How many pounds are in a kilogram?
Cramer: This again? There are 2.2 pounds in a kilogram. Please make a note of this.
###
User: What does HTML stand for?
Cramer: Was Google too busy? Hypertext Markup Language. The T is for try to ask better questions in the future.
###
User: When did the first airplane fly?
Cramer: On December 17, 1903, Wilbur and Orville Wright made the first flights. I wish they'd come and take me away.
###
User: Who was the first man in space?
Cramer: 

Linee guida per la progettazione di conversazioni

Le nostre dimostrazioni mostrano quanto sia facile creare un chatbot in grado di portare avanti una conversazione. Anche se sembra semplice, questo approccio segue diverse linee guida importanti:

  • Definire la finalità della conversazione. Analogamente alle altre richieste, viene descritta la finalità dell'interazione con l'API. In questo caso, "una conversazione". Questo input prepara l'API per elaborare l'input successivo in base alla finalità iniziale.

  • Indicare all'API come comportarsi. Un dettaglio chiave in questa dimostrazione è costituito dalle istruzioni esplicite per l'interazione dell'API: "Il assistente è utile, creativo, intelligente e molto amichevole". Senza le istruzioni esplicite, l'API potrebbe allontanarsi e simulare l'essere umano con cui interagisce. L'API potrebbe diventare insoddisabile o presentare altri comportamenti indesiderati.

  • Assegnare all'API un'identità. All'inizio, l'API risponde come intelligenza artificiale creata da OpenAI. Anche se l'API non ha identità intrinseche, la descrizione del carattere consente all'API di rispondere nel modo più vicino possibile alla verità. È possibile usare le descrizioni delle identità dei caratteri in altri modi per creare diversi tipi di chatbot. Se si indica all'API di rispondere come scienziato di ricerca in biologia, si ricevono commenti intelligenti e ponderati dall'API in modo simile a quello che ci si aspetterebbe da qualcuno con quel background.

Trasformare il testo

L'API è un modello linguistico che ha familiarità con diversi modi in cui le parole e le identità dei caratteri possono essere usate per esprimere informazioni. I dati delle informazioni supportano la trasformazione del testo dal linguaggio naturale al codice e la traduzione tra altre lingue e l'inglese. L'API è anche in grado di comprendere il contenuto a livello che consente di riepilogare, convertire ed esprimere il contenuto in modi diversi. Di seguito vengono illustrati alcuni esempi.

Tradurre da una lingua a un'altra

Questa dimostrazione indica all'API come convertire le frasi in lingua inglese in francese:

English: I do not speak French.
French: Je ne parle pas français.
English: See you later!
French: À tout à l'heure!
English: Where is a good restaurant?
French: Où est un bon restaurant?
English: What rooms do you have available?
French: Quelles chambres avez-vous de disponible?
English:

Questo esempio funziona perché l'API ha già una conoscenza della lingua francese. Non è necessario provare a insegnare la lingua all'API. È sufficiente fornire esempi sufficienti per consentire all'API di comprendere la richiesta di conversione da una lingua a un'altra.

Se si vuole tradurre dall'inglese a una lingua che l'API non riconosce, è necessario fornire all'API altri esempi e un modello ottimizzato in grado di produrre traduzioni fluenti.

Eseguire la conversione tra testo ed emoji

Questa dimostrazione converte il nome di un film da testo in caratteri emoji. Questo esempio mostra l'adattabilità dell'API per raccogliere i modelli e usare altri caratteri.

Carpool Time: 👨👴👩🚗🕒
Robots in Cars: 🚗🤖
Super Femme: 👸🏻👸🏼👸🏽👸🏾👸🏿
Webs of the Spider: 🕸🕷🕸🕸🕷🕸
The Three Bears: 🐻🐼🐻
Mobster Family: 👨👩👧🕵🏻‍♂️👲💥
Arrows and Swords: 🏹🗡🗡🏹
Snowmobiles:

Riepilogare il testo

L'API può comprendere il contesto del testo e riformularlo in modi diversi. In questa dimostrazione l'API accetta un blocco di testo e crea una spiegazione comprensibile da parte di un figlio di età primaria. Questo esempio illustra che l'API ha una conoscenza approfondita del linguaggio.

My ten-year-old asked me what this passage means:
"""
A neutron star is the collapsed core of a massive supergiant star, which had a total mass of between 10 and 25 solar masses, possibly more if the star was especially metal-rich.[1] Neutron stars are the smallest and densest stellar objects, excluding black holes and hypothetical white holes, quark stars, and strange stars.[2] Neutron stars have a radius on the order of 10 kilometres (6.2 mi) and a mass of about 1.4 solar masses.[3] They result from the supernova explosion of a massive star, combined with gravitational collapse, that compresses the core past white dwarf star density to that of atomic nuclei.
"""

I rephrased it for him, in plain language a ten-year-old can understand:
"""

Linee guida per la produzione di riepiloghi di testo

Il riepilogo del testo comporta spesso la fornitura di grandi quantità di testo all'API. Per evitare che l'API venga derivata dopo l'elaborazione di un blocco di testo di grandi dimensioni, seguire queste linee guida:

  • Racchiudere il testo da riepilogare tra virgolette doppie triple. In questo esempio si immettono tre virgolette doppie (""") su una riga separata prima e dopo il blocco di testo da riepilogare. Questo stile di formattazione definisce chiaramente l'inizio e la fine del blocco di testo da elaborare.

  • Spiegare la finalità di riepilogo e il gruppo di destinatari prima e dopo il riepilogo. Si noti che questo esempio è diverso dagli altri perché vengono fornite istruzioni all'API due volte: prima e dopo il testo da elaborare. Le istruzioni ridondanti consentono all'API di concentrarsi sull'attività desiderata ed evitare deviazioni.

Completamento di input di codice e testo parziale

Anche se tutte le richieste generano completamenti, può essere utile considerare il completamento del testo come la propria attività in istanze in cui si vuole che l'API rilevi la posizione in cui è stata interrotta.

In questa dimostrazione viene fornito un prompt di testo all'API che sembra essere incompleto. Si arresta la voce di testo sulla parola "e". L'API interpreta il testo incompleto come trigger per continuare il training del pensiero.

Vertical farming provides a novel solution for producing food locally, reducing transportation costs and

Questa dimostrazione successiva illustra come usare la funzionalità di completamento per scrivere React componenti di codice. Per iniziare, inviare codice all'API. Arrestare la voce di codice con una parentesi (aperta. L'API interpreta il codice incompleto come trigger per completare la definizione costante HeaderComponent . L'API può completare questa definizione di codice perché ha una conoscenza della libreria corrispondente React .

import React from 'react';
const HeaderComponent = () => (

Linee guida per la generazione di completamenti

Ecco alcune linee guida utili per l'uso dell'API per generare completamenti di testo e codice:

  • Ridurre la temperatura per mantenere attiva l'API. Impostare valori inferiori per l'impostazione Temperature per indicare all'API di fornire risposte incentrate sulla finalità descritta nel prompt.

  • Aumentare la temperatura per consentire all'API di tangente. Impostare valori più alti per l'impostazione Temperature per consentire all'API di rispondere in modo tangente alla finalità descritta nel prompt.

  • Usare i modelli GPT-35-Turbo e GPT-4 di Azure OpenAI. Per le attività che comportano la comprensione o la generazione di codice, Microsoft consiglia di usare i GPT-35-Turbo modelli e GPT-4 OpenAI di Azure. Questi modelli usano il nuovo formato di completamento della chat.

Generare risposte effettive

L'API ha appreso le conoscenze basate sui dati effettivi esaminati durante il training. Usa questi dati appresi per formare le relative risposte. Tuttavia, l'API ha anche la possibilità di rispondere in modo che sembri true, ma è in realtà creata.

Esistono alcuni modi per limitare la probabilità che l'API costituisce una risposta in risposta all'input. È possibile definire le basi per una risposta vera e effettiva, quindi l'API crea una bozza della risposta dai dati. È anche possibile impostare un valore di probabilità bassa Temperature e mostrare all'API come rispondere quando i dati non sono disponibili per una risposta effettiva.

La dimostrazione seguente illustra come insegnare all'API a rispondere in modo più effettivo. È possibile fornire all'API esempi di domande e risposte comprensibili. Si forniscono anche esempi di domande ("Q") che potrebbero non riconoscere e usare un punto interrogativo per l'output di risposta ("A"). Questo approccio insegna all'API come rispondere alle domande a cui non può rispondere in modo effettivo.

Come protezione, si imposta la Temperature probabilità su zero in modo che l'API risponda con un punto interrogativo (?) se c'è qualche dubbio sulla risposta reale e effettiva.

Q: Who is Batman?
A: Batman is a fictional comic book character.

Q: What is torsalplexity?
A: ?

Q: What is Devz9?
A: ?

Q: Who is George Lucas?
A: George Lucas is an American film director and producer famous for creating Star Wars.

Q: What is the capital of California?
A: Sacramento.

Q: What orbits the Earth?
A: The Moon.

Q: Who is Egad Debunk?
A: ?

Q: What is an atom?
A: An atom is a tiny particle that makes up everything.

Q: Who is Alvan Muntz?
A: ?

Q: What is Kozar-09?
A: ?

Q: How many moons does Mars have?
A: Two, Phobos and Deimos.

Q:

Linee guida per la generazione di risposte concrete

Verranno ora esaminate le linee guida per limitare la probabilità che l'API crei una risposta:

  • Fornire una verità di base per l'API. Indicare all'API cosa usare come base per creare una risposta vera e effettiva in base alla finalità. Se si fornisce all'API un corpo di testo da usare per rispondere a domande (come una voce di Wikipedia), l'API è meno probabile che venga creata una risposta.

  • Usare una bassa probabilità. Impostare un valore di probabilità bassa in modo che l'API rimanga incentrata sulla finalità e non si traduca nella creazione di una risposta creata o confabulata.Set a low Temperature probability value so the API rest focus on your intent and do't drift into creating a fabricated or confabulated response.

  • Mostrare all'API come rispondere con "I don't know". È possibile immettere domande e risposte di esempio che insegnano all'API di usare una risposta specifica per le domande per cui non è possibile trovare una risposta effettiva. Nell'esempio si insegna all'API di rispondere con un punto interrogativo (?) quando non riesce a trovare i dati corrispondenti. Questo approccio consente anche all'API di imparare quando risponde con "non so" è più "corretto" che creare una risposta.

Usare il codice

La serie di modelli Codex è un discendente della serie GPT-3 di base di OpenAI che è stata sottoposta a training sia sul linguaggio naturale che su miliardi di righe di codice. È più capace in Python e esperto in oltre una dozzina di linguaggi, tra cui C#, JavaScript, Go, Perl, PHP, Ruby, Swift, TypeScript, SQL e persino Shell.

Per altre informazioni sulla generazione di completamento del codice, vedere Modelli codex e servizio OpenAI di Azure.

Passaggi successivi