Informazioni su come generare o modificare il testo con l'API di completamento legacy

Il servizio OpenAI di Azure offre un endpoint di completamento che può essere usato per un'ampia gamma di attività. L'endpoint fornisce un'interfaccia text-out semplice e potente per 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 specificare il prompt "As Descartes said, I think, so" all'API. Per questo prompt, Azure OpenAI restituisce l'endpoint di completamento " I am" con probabilità elevata.

Importante

A meno che non si abbia un caso d'uso specifico che richiede l'endpoint di completamento, è consigliabile usare invece l'endpoint di completamento della chat che consente di sfruttare i modelli più recenti come GPT-4o, GPT-4o mini e GPT-4 Turbo.

Il modo migliore per iniziare a esplorare i completamenti consiste nell'usare il playground in Azure OpenAI Studio. Si tratta di una semplice casella di testo in cui immettere una richiesta di generazione di un completamento. È possibile iniziare con un prompt semplice simile al seguente:

write a tagline for an ice cream shop

Dopo aver immesso il prompt, Azure OpenAI visualizza il completamento:

we serve up smiles with every scoop!

I risultati di completamento visualizzati possono variare 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-in-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 parole che dovrà essere risolto da uno studente pre-adolescente. Un prompt ben scritto fornisce informazioni sufficienti per permettere al modello di sapere cosa si desidera 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 si estendono attualmente solo a settembre 2021. A seconda del prompt, il modello potrebbe non conoscere gli eventi correnti correlati.

Richieste di progettazione

I modelli del Servizio OpenAI di Azure 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 per mostrare ciò che si vuole. Mostrare e non solo dire è spesso il segreto di una buona richiesta.

I modelli tentano di stimare ciò che si vuole ottenere dalla richiesta. Se si immette il prompt "Dammi un elenco di razze di gatti", il modello non presuppone automaticamente che venga richiesto solo un elenco. Si potrebbe iniziare una conversazione in cui le prime parole sono "Dammi un elenco di razze di gatti", seguite da "e dirò quali mi piacciono". Se il modello presupponesse 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 prompt affidabili

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

  • Mostrare e raccontare. Rendere chiaro ciò che si vuole tramite istruzioni, esempi o entrambi. Se si desidera che il modello ordini un elenco di elementi in ordine alfabetico o classifichi un paragrafo in base al sentiment, includere questi dettagli nella richiesta per visualizzare il modello.

  • Fornire dati di qualità. Se si sta provando a compilare un classificatore o a fare in modo che il modello segua un criterio, assicurarsi che siano presenti esempi sufficienti. Assicurarsi di rileggere gli esempi. Il modello è abbastanza intelligente da risolvere gli errori ortografici di base e fornire una risposta significativa. Al contrario, il modello potrebbe presupporre che gli errori siano intenzionali, cosa che può influire sulla risposta.

  • Verificare le impostazioni. Le impostazioni di probabilità, ad esempio Temperature e Top P, controllano quanto è deterministico il modello 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 che non è ovvia, è possibile usare valori più elevati. L'errore più comune che gli utenti commettono con queste impostazioni presuppone che controllino l’"intelligenza" o la "creatività" nella risposta del modello.

Risoluzione dei problemi relativi alla richiesta

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

  • È chiaro quale dovrebbe essere la generazione prevista?
  • Sono disponibili esempi sufficienti?
  • È stato controllato che negli esempi non vi siano errori? (L'API non lo indica direttamente.)
  • Si usano correttamente le impostazioni di probabilità Temperature e Top P?

Classifica testo

Per creare un classificatore di testo con l'API, viene fornita una descrizione dell'attività e vengono forniti 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 il linguaggio normale per l'input "Messaggio" e il valore previsto che esprime il "Sentiment". Per le procedure consigliate, iniziare con descrizioni in linguaggio normale. È spesso possibile usare la sintassi abbreviata o i tasti per indicare l'input e l'output durante la compilazione della richiesta, ma è preferibile iniziare essendo il più descrittivi possibile. È quindi possibile lavorare all'indietro e rimuovere parole aggiuntive purché le prestazioni del prompt siano coerenti.

  • Mostrare all'API come rispondere in qualsiasi caso. La dimostrazione fornisce più risultati: "Positivo", "Negativo" e "Neutro". Il supporto di 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 le emoji e può anche convertire le espressioni da e verso di esse. Per ottenere una risposta ottimale, usare forme comuni di espressione per gli esempi.

  • Usare un minor numero di esempi per 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 mostra all'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 probabilità Top P 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, seppure tra le più semplici, che è possibile eseguire con l'API consiste nel generare nuove idee o versioni di input. Si supponga di scrivere un romanzo di mistero e di avere bisogno di alcune idee sulla storia. È possibile fornire all'API un elenco di alcune idee e prova ad aggiungere altre idee all'elenco. L'API può creare dei piani aziendali, descrizioni di 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 un prompt incompleto "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, si inizia indicando all'API che cos'è l'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 questo modello durante la generazione di nuovi elementi per l'elenco. Se si vuole una risposta più dettagliata, è necessario stabilire tale finalità con input di testo più dettagliato per l'API.

  • Richiedere all'API una voce incompleta per attivare nuove idee. Quando l'API rileva del testo che sembra incompleto, ad esempio il testo del prompt "2.", tenta prima di tutto di determinare qualsiasi testo che potrebbe completare la voce. Poiché la dimostrazione ha un titolo di 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 creando un elenco più lungo e diversificato nella richiesta. Un approccio consiste nell'iniziare con un esempio, consentire all'API di generare altri esempi e quindi selezionare gli esempi che si preferiscono e aggiungerli all'elenco. Alcune varianti di alta qualità negli esempi possono migliorare notevolmente la qualità delle risposte.

Condurre delle conversazioni

A partire dal rilascio di GPT-35-Turbo e GPT-4, è consigliabile creare dei chatbot e una 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 è abile nell'eseguire conversazioni con gli esseri umani e anche con se stessa. Con poche righe di istruzioni, l'API può funzionare come un chatbot del servizio clienti che risponde in modo intelligente alle domande senza andare in agitazione, o un partner di conversazione spiritoso che fa battute 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 in qualche modo utile. Per aiutare l'API a comprendere il carattere del ruolo, è possibile fornire alcuni esempi di domande e risposte. Bastano poche risposte sarcastiche perché l'API possa 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. Sebbene sia semplice, questo approccio segue diverse linee guida importanti:

  • Definire la finalità della conversazione. Proprio come gli altri prompt, 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: "L'assistente è utile, creativo, intelligente e molto amichevole". Senza le istruzioni esplicite, l'API potrebbe allontanarsi e simulare l'uomo con cui interagisce. L'API potrebbe diventare poco amichevole o mostrare altri comportamenti indesiderati.

  • Assegnare un'identità all'API. 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 dice all'API di rispondere come ricercatrice di biologia, si ricevono commenti intelligenti e riflessivi dall'API, simili a quelli che ci si aspetterebbe da una persona 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 conoscenze 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 un 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 in francese le frasi in lingua inglese:

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 degli 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 modelli e lavorare con altri caratteri.

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

Riassumere 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 bambino 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 spesso comporta 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 di grandi dimensioni 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é si forniscono 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 la deriva.

Completare input di codice e testo parziale

Anche se tutti i prompt generano completamenti, può essere utile considerare il completamento del testo come una propria attività nelle 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 componenti di codice React. Per iniziare, inviare codice all'API. Si arresta la voce di codice con una parentesi aperta (. L'API interpreta il codice incompleto come trigger per completare la definizione della 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:

  • Abbassare la temperatura per mantenere attiva l'API. Impostare valori inferiori per l'impostazione Temperature per indicare all'API di fornire risposte incentrate sull’intento descritto nel prompt.

  • Aumentare la temperatura per consentire all'API di andare in tangente. Impostare valori superiori 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 modelli OpenAI di Azure GPT-35-Turbo e GPT-4. 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 capacità di rispondere in un modo che sembra vero, ma che in realtà è inventato.

Esistono alcuni modi per limitare la probabilità che l'API inventi una risposta in risposta all'input. È possibile definire le basi per una risposta vera e effettiva, in modo che l'API elabori la sua risposta dai propri dati. È anche possibile impostare un valore di probabilità Temperature basso 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. È anche possibile fornire 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 è in grado di rispondere in modo concreto.

Come protezione, si imposta la probabilità Temperature su zero, quindi è più probabile che l'API risponda con un punto interrogativo (?) se c'è un dubbio sulla risposta reale e concreta.

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 concreta in base alla finalità. Se si fornisce all'API un corpo di testo da usare per rispondere a domande (ad esempio una voce di Wikipedia), l'API ha meno probabilità di creare una risposta.

  • Usare una bassa probabilità. Impostare un valore di probabilità Temperature bassa in modo che l'API rimanga concentrata sull’intento e non si lasci trasportare dalla creazione di una risposta inventata o confabulata.

  • Mostrare all'API come rispondere con "Non so". È possibile immettere domande e risposte di esempio che insegnano all'API di usare una risposta specifica per le domande per le quali non è possibile trovare una risposta concreta. Nell'esempio si insegna all'API di rispondere con un punto interrogativo (?) quando non è possibile trovare i dati corrispondenti. Questo approccio consente anche all'API di apprendere quando risponde con "Non so" è più "corretto" rispetto a una risposta.

Usare il codice

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

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

Passaggi successivi