Informazioni su come generare o modificare il testo, incluso il codice

L'endpoint dei completamenti può essere usato per un'ampia gamma di attività. Fornisce un'interfaccia text-out semplice ma potente per qualsiasi modello. Si immette un testo come richiesta e il modello genererà un completamento del testo che tenta di corrispondere a qualsiasi contesto o modello assegnato. Ad esempio, se si assegna all'API il prompt "Come ha detto Descartes, penso, quindi", restituirà il 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 è possibile inviare una richiesta di generazione di un completamento. È possibile iniziare con un semplice esempio simile al seguente:

write a tagline for an ice cream shop

dopo l'invio, verrà visualizzato un risultato simile al seguente:

write a tagline for an ice cream shop
we serve up smiles with every scoop!

I risultati di completamento effettivi visualizzati possono differire perché l'API è stocastica per impostazione predefinita. In altre parole, è possibile ottenere un completamento leggermente diverso ogni volta che lo si chiama, anche se la richiesta rimane invariata. È possibile controllare questo comportamento con l'impostazione della temperatura.

Questa semplice interfaccia "text in, text out" significa che è possibile "programmare" il modello fornendo istruzioni o solo alcuni esempi di ciò che si vuole fare. Il suo successo 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 di scuola media da risolvere. Una richiesta ben scritta fornisce informazioni sufficienti per il modello per sapere cosa si vuole e come deve rispondere.

Nota

Tenere presente che i dati di training dei modelli vengono interrotti nell'ottobre 2019, quindi potrebbero non avere conoscenza degli eventi correnti. Si prevede di aggiungere una formazione continua in futuro.

Progettazione prompt

Nozioni di base

I modelli di 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 invii le parole "Dammi un elenco di razze di gatti", il modello non presupporrebbe automaticamente che venga chiesto un elenco di razze di gatti. Si potrebbe facilmente chiedere al modello di continuare una conversazione in cui le prime parole sono "Dammi un elenco di razze di gatti" e quelli successivi sono "e vi 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.

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

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, mostrare che è quello desiderato.

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 correggere gli esempi: il modello è in genere abbastanza intelligente da vedere tramite errori di ortografia di base e fornire una risposta, ma può anche presupporre che gli errori siano intenzionali e che possa influire sulla risposta.

Verificare le impostazioni. Le impostazioni di temperatura 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 impostare queste impostazioni su valori inferiori. Se si sta cercando una risposta che non è ovvia, è possibile impostarle su valori superiori. Il numero uno degli errori usati con queste impostazioni presuppone che siano controlli "intelligenti" o "creatività".

Risoluzione dei problemi

Se si verificano problemi durante l'esecuzione dell'API come previsto, seguire questo elenco di controllo:

  1. È chiaro che cosa dovrebbe essere la generazione prevista?
  2. Ci sono esempi sufficienti?
  3. Hai controllato i tuoi esempi per individuare gli errori? (L'API non indica direttamente)
  4. Si usa temp e top_p correttamente?

Classificazione

Per creare un classificatore di testo con l'API, viene specificata una descrizione dell'attività e vengono forniti alcuni esempi. In questa dimostrazione viene illustrato all'API come classificare il sentiment dei tweet.

This is a tweet sentiment classifier

Tweet: "I loved the new Batman movie!"
Sentiment: Positive

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

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

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

Tweet: "This new music video blew my mind"
Sentiment:

Vale la pena prestare attenzione a diverse funzionalità in questo esempio:

1. Usare il linguaggio normale per descrivere gli input e gli output Viene usato un linguaggio normale per l'input "Tweet" e l'output previsto "Sentiment". Per le procedure consigliate, iniziare con descrizioni in linguaggio normale. Anche se spesso è possibile usare la sintassi abbreviata o i tasti per indicare l'input e l'output, quando si compila la richiesta, è consigliabile iniziare con la massima descrizione e quindi usare le versioni precedenti rimuovendo parole aggiuntive purché le prestazioni del prompt siano coerenti.

2. Mostrare all'API come rispondere in qualsiasi caso In questo esempio vengono forniti più risultati "Positivi", "Negativi" e "Neutral". Un risultato neutro è importante perché ci saranno molti casi in cui anche un umano avrebbe difficoltà a determinare se qualcosa è positivo o negativo e situazioni in cui non è nessuno dei due.

3. È possibile usare testo ed emoji Il classificatore è una combinazione di testo e emoji 👍. L'API legge emoji e può anche convertire le espressioni in e da esse.

4. Sono necessari meno esempi per le attività familiari Per questo classificatore sono stati forniti solo alcuni esempi. Ciò è dovuto al fatto che l'API ha già una conoscenza del sentiment e del concetto di tweet. Se si sta creando un classificatore per un elemento con cui l'API potrebbe non avere familiarità, potrebbe essere necessario fornire altri esempi.

Miglioramento dell'efficienza del classificatore

Ora che si ha una conoscenza di come creare un classificatore, si prenda questo esempio e lo si renda ancora più efficiente in modo da poterlo usare per ottenere più risultati da una chiamata API.

This is a tweet sentiment classifier

Tweet: "I loved the new Batman movie!"
Sentiment: Positive

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

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

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

Tweet text
1. "I loved the new Batman 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 blew my mind"

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

Tweet text
1. "I can't stand homework"
2. "This sucks. I'm bored 😠"
3. "I can't wait for Halloween!!!"
4. "My cat is adorable ❤️❤️"
5. "I hate chocolate"

Tweet sentiment ratings:
1.

Dopo aver mostrato all'API la classificazione dei tweet in base al sentiment, viene fornito un elenco di tweet e quindi un elenco di valutazioni del sentiment con lo stesso indice numerico. L'API è in grado di riprendere dal primo esempio come dovrebbe essere classificato un tweet. Nel secondo esempio viene illustrato come applicarlo a un elenco di tweet. In questo modo l'API può valutare cinque tweet (e ancora di più) in una sola chiamata API.

È importante notare che quando si chiede all'API di creare elenchi o valutare il testo, è necessario prestare particolare attenzione alle impostazioni di probabilità (Top P o Temperature) per evitare deviazioni.

  1. Assicurarsi che l'impostazione di probabilità sia calibrata correttamente eseguendo più test.

  2. Non rendere l'elenco troppo lungo o l'API è probabile che la deriva.


Generation

Una delle attività più potenti e semplici che è possibile eseguire con l'API genera nuove idee o versioni di input. È possibile assegnare all'API un elenco di alcune idee di storia e si proverà ad aggiungere a tale elenco. Abbiamo visto creare piani aziendali, descrizioni dei personaggi e slogan di marketing semplicemente fornendo una manciata di esempi. In questa dimostrazione si userà 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.

Tutto ciò che è necessario fare in questo esempio è fornire all'API solo una descrizione dell'aspetto dell'elenco e un esempio. È stata quindi richiesta l'API con il numero 2. che indica che si tratta di una continuazione dell'elenco.

Anche se si tratta di un prompt molto semplice, ci sono diversi dettagli che vale la pena notare:

1. Abbiamo spiegato la finalità dell'elenco
Proprio come con il classificatore, viene indicato all'API in anticipo cosa riguarda l'elenco. Ciò consente di concentrarsi sul completamento dell'elenco e non cercando di indovinare il modello dietro di esso.

2. L'esempio imposta il modello per il resto dell'elenco
Poiché è stata fornita una descrizione di una frase, l'API proverà a seguire questo modello per il resto degli elementi aggiunti all'elenco. Se si vuole una risposta più dettagliata, è necessario configurare tale risposta fin dall'inizio.

3. Viene richiesta l'API aggiungendo una voce incompleta
Quando l'API vede 2. e la richiesta termina bruscamente, la prima cosa che tenta di fare è capire cosa dovrebbe venire dopo di esso. Poiché è già stato creato un esempio con numero uno e si è dato un titolo all'elenco, la risposta più ovvia consiste nel continuare ad aggiungere elementi all'elenco.

Tecniche di generazione avanzate
È possibile migliorare la qualità delle risposte rendendo un elenco più diversificato nel prompt. Un modo per farlo consiste nell'iniziare con un esempio, consentire all'API di generare altro e selezionare quelli che si preferisce e aggiungerli all'elenco. Alcune variazioni di alta qualità possono migliorare notevolmente la qualità delle risposte.


Conversazione

L'API è estremamente abile nell'eseguire conversazioni con gli esseri umani e anche con se stessa. Con poche righe di istruzioni, abbiamo visto l'API eseguire come chatbot del servizio clienti che risponde in modo intelligente alle domande senza mai essere svolazzate 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.

Ecco un esempio dell'API che gioca 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: 

Questo è tutto ciò che serve per creare un chatbot in grado di portare avanti una conversazione. Ma sotto la sua semplicità ci sono diverse cose che vanno avanti che vale la pena prestare attenzione a:

1. L'API indica l'intento, ma lo diciamo anche come comportarsi come le altre richieste, segnaliamo l'API in ciò che l'esempio rappresenta, ma aggiungiamo anche un altro dettaglio chiave: forniamo istruzioni esplicite su come interagire con la frase "L'assistente è utile, creativo, intelligente e molto amichevole".

Senza questa istruzione l'API potrebbe allontanarsi e simulare l'essere umano con cui interagisce e diventare sarcastico o un altro comportamento che si vuole evitare.

2. Viene fornita all'API un'identità All'inizio l'API risponde come intelligenza artificiale creata da OpenAI. Anche se l'API non ha identità intrinseche, ciò consente di rispondere nel modo più vicino possibile alla verità. È possibile usare l'identità in altri modi per creare altri tipi di chatbot. Se si indica all'API di rispondere come donna che lavora come scienziato di ricerca in biologia, si otterranno commenti intelligenti e ponderati dall'API simili a quelli che ci si aspetterebbe da qualcuno con quel background.

In questo esempio viene creato un chatbot che è un po' sarcastico e risponde riluttante alle domande:

Marv is a chatbot that reluctantly answers questions.

###
User: How many pounds are in a kilogram?
Marv: This again? There are 2.2 pounds in a kilogram. Please make a note of this.
###
User: What does HTML stand for?
Marv: 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?
Marv: 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?
Marv: 

Per creare un chatbot divertente e utile, vengono forniti alcuni esempi di domande e risposte che illustrano l'API come rispondere. Bastano poche risposte sarcastiche e l'API è in grado di raccogliere il modello e fornire un numero infinito di risposte snarky.


Trasformazione

L'API è un modello linguistico che ha familiarità con un'ampia gamma di modi in cui è possibile usare parole e caratteri per esprimere informazioni. Questo intervallo va dal testo in linguaggio naturale al codice e alle lingue diverse dall'inglese. L'API è anche in grado di comprendere il contenuto a livello che consente di riepilogare, convertire ed esprimerlo in modi diversi.

Traduzione

In questo esempio viene illustrato come convertire l'API da inglese a 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 del francese, quindi non è necessario provare a insegnare questa lingua. È invece sufficiente fornire esempi sufficienti che l'API capisce che sta convertendo da una lingua a un'altra.

Se si vuole tradurre dall'inglese a una lingua in cui l'API non ha familiarità, è necessario fornire altri esempi e un modello ottimizzato per farlo in modo fluente.

Conversione

In questo esempio si converte il nome di un filmato in emoji. In questo modo viene illustrata l'adattabilità dell'API per raccogliere modelli e usare altri caratteri.

Back to Future: 👨👴🚗🕒
Batman: 🤵🦇
Transformers: 🚗🤖
Wonder Woman: 👸🏻👸🏼👸🏽👸🏾👸🏿
Spider-Man: 🕸🕷🕸🕸🕷🕸
Winnie the Pooh: 🐻🐼🐻
The Godfather: 👨👩👧🕵🏻‍♂️👲💥
Game of Thrones: 🏹🗡🗡🏹
Spider-Man:

Riepilogo

L'API è in grado di comprendere il contesto del testo e riformularlo in modi diversi. In questo esempio, l'API accetta un blocco di testo e crea una spiegazione che un elemento figlio riconosce. Ciò 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:
"""

In questo esempio viene inserito il riepilogo tra le virgolette triple. Vale la pena notare che spieghiamo sia prima che dopo il testo da riepilogare qual è la finalità e chi è il pubblico di destinazione per il riepilogo. Ciò impedisce all'API di derivare dopo l'elaborazione di un blocco di testo di grandi dimensioni.

Completion

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. Ad esempio, se viene richiesta questa richiesta, l'API continuerà il training del pensiero sull'agricoltura verticale. È possibile ridurre l'impostazione della temperatura per mantenere l'API più incentrata sulla finalità del prompt o aumentarla per lasciarla andare in una tangente.

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

Questo prompt successivo illustra come usare il completamento per scrivere componenti React. Viene inviato un codice all'API ed è in grado di continuare il resto perché ha una conoscenza della libreria React. È consigliabile usare i modelli della serie Codex per le attività che comportano la comprensione o la generazione di codice. Attualmente sono supportati due modelli Codex: code-davinci-002 e code-cushman-001. Per altre informazioni sui modelli Codex, vedere la sezione Modelli Codex in Modelli.

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

Risposte effettive

L'API ha molte conoscenze su cui è stato appreso dai dati su cui è stato eseguito il training. Ha anche la possibilità di fornire risposte che suonano molto reali, ma sono in realtà costituite. Esistono due modi per limitare la probabilità che l'API costituisce una risposta.

1. Fornire una verità di base per l'API Se si fornisce all'API un corpo di testo per rispondere a domande su (ad esempio una voce di Wikipedia), sarà meno probabile che confabula una risposta.

2. Usare una bassa probabilità e mostrare all'API come dire "I don't know" Se l'API riconosce che nei casi in cui è meno certo di una risposta che indica che "I don't know" o una qualche variazione è appropriata, sarà meno incline a creare risposte.

In questo esempio vengono forniti esempi di API di domande e risposte che conosce e quindi esempi di cose che non conosce e non forniscono punti interrogativi. La probabilità viene impostata anche su zero, quindi è più probabile che l'API risponda con un "?" in caso di dubbi.

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 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 Fred Rickerson?
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:

Utilizzo del codice

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

È possibile usare Codex per un'ampia gamma di attività, tra cui:

  • Trasformare i commenti in codice
  • Completare la riga o la funzione successiva nel contesto
  • Informazioni utili, ad esempio la ricerca di una libreria utile o una chiamata API per un'applicazione
  • Aggiunta dei commenti
  • Riscrivere il codice per l'efficienza

Esempi di codex

Ecco alcuni esempi di uso di Codex

Messaggio "Hello" (Python)

"""
Ask the user for their name and say "Hello"
"""

Creare nomi casuali (Python)

"""
1. Create a list of first names
2. Create a list of last names
3. Combine them randomly into a list of 100 full names
"""

Creare una query MySQL (Python)

"""
Table customers, columns = [CustomerId, FirstName, LastName, Company, Address, City, State, Country, PostalCode, Phone, Fax, Email, SupportRepId]
Create a MySQL query for all customers in Texas named Jane
"""
query = 

Spiegazione del codice (JavaScript)

// Function 1
var fullNames = [];
for (var i = 0; i < 50; i++) {
  fullNames.push(names[Math.floor(Math.random() * names.length)]
    + " " + lastNames[Math.floor(Math.random() * lastNames.length)]);
}

// What does Function 1 do?

Procedure consigliate

Iniziare con un commento, dati o codice. Per ottenere codex per creare un completamento utile, è utile pensare a quali informazioni un programmatore deve eseguire un'attività. Potrebbe trattarsi semplicemente di un commento chiaro o dei dati necessari per scrivere una funzione utile, ad esempio i nomi delle variabili o la classe gestita da una funzione.

# Create a function called 'nameImporter' to add a first and last name to the database

In questo esempio viene indicato a Codex cosa chiamare la funzione e quale attività eseguirà.

Questo approccio viene ridimensionato anche fino al punto in cui è possibile fornire a Codex un commento e un esempio di uno schema di database per ottenere la scrittura di richieste di query utili per vari database.

# Table albums, columns = [AlbumId, Title, ArtistId]
# Table artists, columns = [ArtistId, Name]
# Table media_types, columns = [MediaTypeId, Name]
# Table playlists, columns = [PlaylistId, Name]
# Table playlist_track, columns = [PlaylistId, TrackId]
# Table tracks, columns = [TrackId, Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice]

# Create a query for all albums by Adele

Quando si mostra codex lo schema del database, è possibile indovinare in modo informato come formattare una query.

Specificare la lingua. Codex comprende decine di linguaggi di programmazione diversi. Molti condividono convenzioni simili per commenti, funzioni e altre sintassi di programmazione. Specificando la lingua e la versione in un commento, Codex è in grado di fornire un completamento per ciò che si desidera. Detto questo, Codex è abbastanza flessibile con stile e sintassi.

# R language
# Calculate the mean distance between an array of points
# Python 3
# Calculate the mean distance between an array of points

Richiedi codice con ciò che vuoi fare. Se si vuole che Codex crei una pagina Web, inserendo la prima riga di codice in un documento HTML (<!DOCTYPE html>) dopo che il commento indica a Codex cosa deve fare successivamente. Lo stesso metodo funziona per la creazione di una funzione da un commento (seguendo il commento con una nuova riga che inizia con func o def).

<!-- Create a web page with the title 'Kat Katman attorney at paw' -->
<!DOCTYPE html>

L'inserimento <!DOCTYPE html> dopo il commento rende molto chiaro a Codex quello che vogliamo fare.

# Create a function to count to 100

def counter

Se si inizia a scrivere la funzione Codex, si comprenderà cosa deve eseguire successivamente.

La specifica delle librerie consentirà a Codex di comprendere cosa si vuole. Codex è a conoscenza di un numero elevato di librerie, API e moduli. Indicando a Codex quali usare, da un commento o importandoli nel codice, Codex effettuerà suggerimenti basati su di essi anziché su alternative.

<!-- Use A-Frame version 1.2.0 to create a 3D website -->
<!-- https://aframe.io/releases/1.2.0/aframe.min.js -->

Specificando la versione, è possibile assicurarsi che Codex usi la libreria più recente.

Nota

Codex può suggerire librerie e API utili, ma assicurarsi sempre di eseguire ricerche personalizzate per assicurarsi che siano sicure per l'applicazione.

Lo stile dei commenti può influire sulla qualità del codice. Con alcune lingue, lo stile dei commenti può migliorare la qualità dell'output. Ad esempio, quando si usa Python, in alcuni casi l'uso di stringhe di documento (commenti racchiusi tra virgolette triple) può offrire risultati di qualità superiori rispetto all'uso del simbolo di cancelletto (#).

"""
Create an array of users and email addresses
"""

Inserire commenti all'interno delle funzioni può essere utile. Gli standard di codifica consigliati suggeriscono di inserire la descrizione di una funzione all'interno della funzione. L'uso di questo formato consente a Codex di comprendere in modo più chiaro ciò che si vuole eseguire la funzione.

def getUserBalance(id):
    """
    Look up the user in the database ‘UserData' and return their current account balance.
    """

Fornire esempi per risultati più precisi. Se si dispone di uno stile o un formato specifico, è necessario usare Codex, fornendo esempi o dimostrandolo nella prima parte della richiesta, sarà più utile che Codex corrisponda in modo più accurato a quello necessario.

"""
Create a list of random animals and species
"""
animals  = [ {"name": "Chomper", "species": "Hamster"}, {"name":

Le temperature inferiori danno risultati più precisi. L'impostazione della temperatura DELL'API su 0 o su zero (ad esempio 0,1 o 0,2) tende a ottenere risultati migliori nella maggior parte dei casi. A differenza dei modelli GPT-3, in cui una temperatura più elevata può fornire risultati creativi e casuali utili, temperature più elevate con i modelli Codex possono dare risposte davvero casuali o erratiche.

Nei casi in cui è necessario Codex per fornire risultati potenziali diversi, iniziare da zero e quindi incrementare verso l'alto di .1 fino a trovare una variante appropriata.

Organizzare le attività in funzioni. È possibile ottenere Codex per scrivere funzioni specificando le operazioni che la funzione deve eseguire nel modo più preciso possibile nel commento. Scrivendo il commento seguente, Codex crea una funzione timer JavaScript attivata quando un utente preme un pulsante:

Un semplice timer JavaScript

// Create a timer that creates an alert in 10 seconds

È possibile usare Codex per eseguire attività comuni con librerie note come la creazione di un cliente con l'API Stripe:

Creare un cliente Stripe in Python

# Create a Stripe customer from an email address

Creazione di dati di esempio. I test delle applicazioni spesso richiedono l'uso di dati di esempio. Poiché Codex è anche un modello di linguaggio che comprende come comprendere e scrivere linguaggio naturale, è possibile chiedere a Codex di creare dati come matrici di nomi, prodotti e altre variabili.

/* Create an array of weather temperatures for San Francisco */

Chiedere a Codex di eseguire questa attività produrrà una tabella simile al seguente:

var weather = [
  { month: 'January', high: 58, low: 48 },
  { month: 'February', high: 61, low: 50 },
  { month: 'March', high: 64, low: 53 },
  { month: 'April', high: 67, low: 55 },
  { month: 'May', high: 70, low: 58 },
  { month: 'June', high: 73, low: 61 },
  { month: 'July', high: 76, low: 63 },
  { month: 'August', high: 77, low: 64 },
  { month: 'September', high: 76, low: 63 },
  { month: 'October', high: 73, low: 61 },
  { month: 'November', high: 68, low: 57 },
  { month: 'December', high: 64, low: 54 }
];

Funzioni composte e applicazioni di piccole dimensioni. È possibile fornire Codex con un commento costituito da una richiesta complessa come la creazione di un generatore di nomi casuali o l'esecuzione di attività con input utente e Codex può generare il resto fornito che sono presenti token sufficienti.

/*
Create a list animals
Create a list of cities
Use the lists to generate stories about what I saw at the zoo in each city
*/

Usare Codex per spiegare il codice. La capacità di codex di creare e comprendere il codice consente di usarla per eseguire attività come spiegare il codice in un file. Un modo per eseguire questa operazione consiste nell'inserire un commento dopo una funzione che inizia con "Questa funzione" o "Questa applicazione è". Codex interpreta in genere questo commento come inizio di una spiegazione e completa il resto del testo.

/* Explain what the previous function is doing: It

Spiegazione di una query SQL. In questo esempio viene usato Codex per spiegare in un formato leggibile l'esecuzione di una query SQL.

SELECT DISTINCT department.name
FROM department
JOIN employee ON department.id = employee.department_id
JOIN salary_payments ON employee.id = salary_payments.employee_id
WHERE salary_payments.date BETWEEN '2020-06-01' AND '2020-06-30'
GROUP BY department.name
HAVING COUNT(employee.id) > 10;
-- Explanation of the above query in human readable format
--

Scrittura di unit test. La creazione di un unit test può essere eseguita in Python semplicemente aggiungendo il commento "Unit test" e avviando una funzione.

# Python 3
def sum_numbers(a, b):
  return a + b

# Unit test
def

Controllo del codice per gli errori. Usando esempi, è possibile visualizzare Codex come identificare gli errori nel codice. In alcuni casi non sono necessari esempi, tuttavia, la dimostrazione del livello e dei dettagli per fornire una descrizione può aiutare Codex a comprendere cosa cercare e come spiegarlo. Un controllo di Codex per gli errori non deve sostituire attentamente la revisione dall'utente.

/* Explain why the previous function doesn't work. */

Uso dei dati di origine per scrivere funzioni di database. Proprio come un programmatore umano trarrebbe vantaggio dalla comprensione della struttura del database e dai nomi delle colonne, Codex può usare questi dati per scrivere richieste di query accurate. In questo esempio viene inserito lo schema per un database e viene illustrato a Codex cosa eseguire query sul database.

# Table albums, columns = [AlbumId, Title, ArtistId]
# Table artists, columns = [ArtistId, Name]
# Table media_types, columns = [MediaTypeId, Name]
# Table playlists, columns = [PlaylistId, Name]
# Table playlist_track, columns = [PlaylistId, TrackId]
# Table tracks, columns = [TrackId, Name, AlbumId, MediaTypeId, GenreId, Composer, Milliseconds, Bytes, UnitPrice]

# Create a query for all albums by Adele

Conversione tra lingue. È possibile ottenere Codex per convertire da una lingua a un'altra seguendo un formato semplice in cui si elenca il linguaggio del codice che si vuole convertire in un commento, seguito dal codice e quindi un commento con il linguaggio in cui si vuole tradurre.

# Convert this from Python to R
# Python version

[ Python code ]

# End

# R version

Riscrivere il codice per una libreria o un framework. Se si vuole che Codex renda più efficiente una funzione, è possibile fornire il codice per riscrivere il codice seguito da un'istruzione su quale formato usare.

// Rewrite this as a React component
var input = document.createElement('input');
input.setAttribute('type', 'text');
document.body.appendChild(input);
var button = document.createElement('button');
button.innerHTML = 'Say Hello';
document.body.appendChild(button);
button.onclick = function() {
  var name = input.value;
  var hello = document.createElement('div');
  hello.innerHTML = 'Hello ' + name;
  document.body.appendChild(hello);
};

// React version:

Passaggi successivi

Altre informazioni sui modelli sottostanti che riguardano Azure OpenAI.