Saiba como gerar ou manipular texto, incluindo código

O ponto final de conclusão pode ser usado para uma grande variedade de tarefas. Fornece uma interface de texto simples mas poderosa para qualquer um dos nossos modelos. Introduzes algum texto como uma solicitação, e o modelo gerará uma conclusão de texto que tenta corresponder a qualquer contexto ou padrão que lhe tenhas dado. Por exemplo, se der à API o aviso, "Como descartes disse, penso, portanto", devolverá a conclusão "eu sou" com elevada probabilidade.

A melhor maneira de começar a explorar as conclusões é através do nosso parque infantil no Azure OpenAI Studio. É uma caixa de texto simples onde pode submeter um pedido para gerar uma conclusão. Pode começar com um exemplo simples como o seguinte:

write a tagline for an ice cream shop

uma vez submetida, verá algo como o seguinte gerado:

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

Os resultados reais de conclusão podem diferir porque a API é estocástica por padrão. Por outras palavras, pode ter uma conclusão ligeiramente diferente cada vez que a chamar, mesmo que a sua solicitação permaneça a mesma. Pode controlar este comportamento com a temperatura.

Esta interface simples, "texto, texto para fora" significa que pode "programar" o modelo fornecendo instruções ou apenas alguns exemplos do que gostaria que fizesse. O seu sucesso depende geralmente da complexidade da tarefa e da qualidade do seu rápido. Uma regra geral é pensar em como escrever um problema de palavra para um aluno do ensino médio resolver. Um pedido bem escrito fornece informações suficientes para que o modelo saiba o que quer e como deve responder.

Nota

Tenha em mente que os dados de formação dos modelos são cortados em outubro de 2019, para que possam não ter conhecimento dos acontecimentos atuais. Pretendemos adicionar formação mais contínua no futuro.

Design rápido

Noções básicas

Os modelos da OpenAI podem fazer tudo, desde gerar histórias originais até realizar análises complexas de texto. Porque podem fazer tantas coisas, tens de ser explícito em mostrar o que queres. Mostrar, não apenas dizer, é muitas vezes o segredo para uma boa linha de comandos.

As modelos tentam prever o que querem da solicitação. Se enviar as palavras "Dê-me uma lista de raças de gatos", o modelo não assumiria automaticamente que está a pedir uma lista de raças de gatos. Podias facilmente estar a pedir ao modelo para continuar uma conversa onde as primeiras palavras são "Dá-me uma lista de raças de gatos" e as próximas são "e eu digo-te quais é que eu gosto." Se o modelo apenas assumisse que queria uma lista de gatos, não seria tão bom na criação de conteúdos, classificação ou outras tarefas.

Existem três orientações básicas para a criação de solicitações:

Mostrar e contar. Deixar claro o que quer, quer através de instruções, exemplos, quer de uma combinação dos dois. Se quiser que o modelo classifique uma lista de itens por ordem alfabética ou classifique um parágrafo por sentimento, mostre que é isso que quer.

Fornecer dados de qualidade. Se estiver a tentar construir um classificador ou conseguir que o modelo siga um padrão, certifique-se de que existem exemplos suficientes. Certifique-se de rever os seus exemplos - o modelo é geralmente inteligente o suficiente para ver através de erros ortográficos básicos e dar-lhe uma resposta, mas também pode assumir que os erros são intencionais e podem afetar a resposta.

Verifique as definições. As definições de temperatura e top_p controlam o quão determinista o modelo está a gerar uma resposta. Se está a pedir uma resposta onde só há uma resposta certa, então gostaria de definir estas definições para valores mais baixos. Se procura uma resposta que não seja óbvia, então talvez queira defini-las para valores mais elevados. O erro número um que as pessoas usam com estas configurações é assumir que são controlos de "esperteza" ou "criatividade".

Resolução de problemas

Se tiver problemas em fazer com que a API funcione como esperado, siga esta lista de verificação:

  1. Está claro qual deve ser a geração pretendida?
  2. Há exemplos suficientes?
  3. Verificou os seus exemplos por erros? (A API não lhe dirá diretamente)
  4. Está a usar temperaturas temporárias e top_p corretamente?

Classificação

Para criar um classificador de texto com a API fornecemos uma descrição da tarefa e fornecemos alguns exemplos. Nesta demonstração mostramos à API como classificar o sentimento dos Tweets.

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 a pena prestar atenção a várias características neste exemplo:

1. Use linguagem simples para descrever as suas entradas e saídas Usamos linguagem simples para a entrada "Tweet" e a saída esperada "Sentimento". Para as melhores práticas, comece com descrições linguísticas simples. Embora muitas vezes possa utilizar teclas ou teclas para indicar a entrada e a saída, ao construir o seu pedido, o melhor é começar por ser o mais descritivo possível e, em seguida, trabalhar para trás removendo palavras extras, desde que o desempenho para o pedido seja consistente.

2. Mostrar à API como responder a qualquer caso Neste exemplo fornecemos múltiplos resultados "Positivo", "Negativo" e "Neutro". Um resultado neutro é importante porque haverá muitos casos em que mesmo um humano teria dificuldade em determinar se algo é positivo ou negativo e situações em que não é nenhum dos dois.

3. Pode utilizar texto e emoji O classificador é uma mistura de texto e emoji 👍. A API lê emojis e até pode converter expressões de e para eles.

4. Precisa de menos exemplos para tarefas familiares Para este classificador, apenas fornecemos um punhado de exemplos. Isto porque a API já tem uma compreensão do sentimento e do conceito de um tweet. Se está a construir um classificador para algo que a API pode não estar familiarizado, talvez seja necessário dar mais exemplos.

Melhorar a eficiência do classificador

Agora que temos uma compreensão de como construir um classificador, vamos pegar nesse exemplo e torná-lo ainda mais eficiente para que possamos usá-lo para obter vários resultados de volta de uma chamada da 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.

Depois de mostrar à API como os tweets são classificados por sentimento, fornecemos-lhe uma lista de tweets e, em seguida, uma lista de classificações de sentimento com o mesmo índice de número. A API é capaz de captar a partir do primeiro exemplo como um tweet deve ser classificado. No segundo exemplo vê-se como aplicar isto a uma lista de tweets. Isto permite à API classificar cinco (e ainda mais) tweets em apenas uma chamada da API.

É importante notar que quando pede à API para criar listas ou avaliar texto, é necessário prestar uma atenção extra às definições de probabilidade (Top P ou Temperatura) para evitar deriva.

  1. Certifique-se de que a sua definição de probabilidade está calibrada corretamente executando vários testes.

  2. Não faça a sua lista por muito tempo ou a API é provável que se desvie.


Geração

Uma das tarefas mais poderosas mas simples que pode realizar com a API é gerar novas ideias ou versões de entrada. Você pode dar à API uma lista de algumas ideias de história e ele vai tentar adicionar a essa lista. Vimos criar planos de negócios, descrições de personagens e slogans de marketing apenas fornecendo-lhe um punhado de exemplos. Nesta demonstração vamos usar a API para criar mais exemplos para como usar a realidade virtual na sala de aula:

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.

Tudo o que tínhamos de fazer neste exemplo era fornecer à API apenas uma descrição do que é a lista e um exemplo. Em seguida, pedimos à API o número 2. indicando que é uma continuação da lista.

Embora este seja um pedido muito simples, há vários detalhes que merecem ser notando:

1. Explicámos a intenção da lista
Assim como com o classificador, dizemos à API adiantada sobre o que é a lista. Isto ajuda a concentrar-se em completar a lista e não tentar adivinhar qual é o padrão por trás dela.

2. O nosso exemplo define o padrão para o resto da lista
Como fornecemos uma descrição de uma frase, a API vai tentar seguir esse padrão para o resto dos itens que adiciona à lista. Se queremos uma resposta mais verbosa, temos de o preparar desde o início.

3. Solicitamos a API adicionando uma entrada incompleta
Quando a API vê 2. e o pedido termina abruptamente, a primeira coisa que tenta fazer é descobrir o que deve vir depois dela. Como já tínhamos um exemplo com o número um e demos um título à lista, a resposta mais óbvia é continuar a adicionar itens à lista.

Técnicas de geração avançada
Pode melhorar a qualidade das respostas fazendo uma lista mais diversificada no seu pedido. Uma maneira de fazer isso é começar com um exemplo, deixar a API gerar mais e selecionar as que mais gosta e adicioná-las à lista. Algumas variações de alta qualidade podem melhorar drasticamente a qualidade das respostas.


Conversação

A API é extremamente adepta a continuar conversas com humanos e até consigo mesma. Com apenas algumas linhas de instrução, vimos a API atuar como um chatbot de atendimento ao cliente que responde inteligentemente a perguntas sem nunca se ter perturbado ou um parceiro de conversação sensato que faz piadas e trocadilhos. A chave é dizer à API como se deve comportar e, em seguida, fornecer alguns exemplos.

Aqui está um exemplo da API desempenhando o papel de uma IA respondendo perguntas:

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: 

Isto é tudo o que é preciso para criar um chatbot capaz de continuar uma conversa. Mas, por baixo da sua simplicidade, há várias coisas que valem a pena prestar atenção:

1. Dizemos à API a intenção, mas também lhe dizemos como se comportar tal como as outras solicitações, colocamos a API naquilo que o exemplo representa, mas também adicionamos outro detalhe fundamental: damos-lhe instruções explícitas sobre como interagir com a frase "O assistente é útil, criativo, inteligente e muito amigável".

Sem essa instrução, a API pode desviar-se e imitar o humano com quem interage e se tornar sarcástico ou outro comportamento que queremos evitar.

2. Damos à API uma identidade No início temos a API a responder como UMA IA que foi criada pela OpenAI. Embora a API não tenha identidade intrínseca, isso ajuda-a a responder de uma forma o mais próxima possível da verdade. Pode usar a identidade de outras formas para criar outros tipos de chatbots. Se disseres à API para responder como uma mulher que trabalha como cientista de biologia, receberás comentários inteligentes e atenciosos da API semelhantes ao que seria de esperar de alguém com essa formação.

Neste exemplo criamos um chatbot que é um pouco sarcástico e relutantemente responde a perguntas:

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: 

Para criar um chatbot divertido e um pouco útil, fornecemos alguns exemplos de perguntas e respostas que mostram à API como responder. Basta apenas algumas respostas sarcásticas e a API é capaz de captar o padrão e fornecer um número infinito de respostas sarcásticas.


Transformação

A API é um modelo linguístico que está familiarizado com uma variedade de formas de que palavras e caracteres podem ser usados para expressar informação. Isto vai desde o texto da linguagem natural até códigos e idiomas que não o inglês. A API também é capaz de compreender o conteúdo a um nível que lhe permita resumir, converter e expressá-lo de diferentes formas.

Tradução

Neste exemplo mostramos à API como se converter do inglês para o francês:

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:

Este exemplo funciona porque a API já tem uma compreensão do francês, por isso não há necessidade de tentar ensinar-lhe esta língua. Em vez disso, só precisamos de dar exemplos suficientes que a API entende que está a converter-se de uma língua para outra.

Se quiser traduzir do inglês para uma língua que a API não conhece, precisa de lhe dar mais exemplos e um modelo afinado para o fazer fluentemente.

Conversão

Neste exemplo, convertemos o nome de um filme em emoji. Isto mostra a adaptabilidade da API para pegar em padrões e trabalhar com outros personagens.

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

Resumo

A API é capaz de compreender o contexto do texto e reformular-lo de diferentes maneiras. Neste exemplo, a API pega num bloco de texto e cria uma explicação que uma criança entenderia. Isto ilustra que a API tem uma profunda compreensão da linguagem.

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:
"""

Neste exemplo colocamos o que queremos resumido entre as cotações triplas. Vale a pena notar que explicamos antes e depois do texto para resumir qual é a nossa intenção e quem é o público-alvo para o resumo. Isto é para evitar que a API se desvie depois de processar um grande bloco de texto.

Conclusão

Embora todas as solicitações resultem em conclusões, pode ser útil pensar na conclusão do texto como sua própria tarefa em casos em que você quer que a API retome onde você para fora. Por exemplo, se for dada esta solicitação, a API continuará a pensar na agricultura vertical. Pode baixar a temperatura para manter a API mais focada na intenção da solicitação ou aumentá-la para deixá-la sair em tangente.

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

Esta próxima mensagem mostra como pode usar a conclusão para ajudar a escrever React componentes. Enviamos um código para a API, e é capaz de continuar o resto porque tem um entendimento da biblioteca React. Recomendamos a utilização de modelos da nossa série Codex para tarefas que envolvam compreensão ou geração de código. Atualmente, apoiamos dois modelos codex: code-davinci-002 e code-cushman-001. Para obter mais informações sobre os modelos Codex, consulte a secção de modelos codex em Modelos.

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

Respostas factuais

A API tem muito conhecimento de que aprendeu com os dados em que foi treinado. Também tem a capacidade de fornecer respostas que soam muito reais, mas que são, de facto, inventadas. Há duas formas de limitar a probabilidade de a API inventar uma resposta.

1. Fornecer uma verdade básica para a API Se fornecer à API um conjunto de textos para responder a perguntas sobre (como uma entrada na Wikipédia) será menos provável que confabule uma resposta.

2. Use uma baixa probabilidade e mostre à API como dizer "não sei" Se a API entender que nos casos em que é menos certo sobre uma resposta que dizer "não sei" ou alguma variação é apropriada, será menos inclinado a inventar respostas.

Neste exemplo damos à API exemplos de perguntas e respostas que conhece e, em seguida, exemplos de coisas que não saberia e forneceria pontos de interrogação. Também definimos a probabilidade para zero para que a API seja mais provável de responder com um "?" se houver alguma dúvida.

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:

Trabalhar com código

A série modelo Codex é um descendente da série GPT-3 base da OpenAI que foi treinada tanto em linguagem natural como em biliões de linhas de código. É mais capaz em Python e proficiente em mais de uma dúzia de idiomas, incluindo C#, JavaScript, Go, Perl, PHP, Ruby, Swift, TypeScript, SQL e até Mesmo Shell.

Pode utilizar o Códice para uma variedade de tarefas, incluindo:

  • Transforme comentários em código
  • Complete a sua próxima linha ou função em contexto
  • Traga conhecimento para si, como encontrar uma biblioteca útil ou chamada API para uma aplicação
  • Adicionar comentários
  • Reescrever código para eficiência

Exemplos de códice

Aqui estão alguns exemplos de utilização do Códice

Dizendo "Olá" (Python)

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

Criar nomes aleatórios (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
"""

Criar uma consulta 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 = 

Código explicativo (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?

Melhores práticas

Comece com um comentário, dados ou código. Para obter o Codex para criar uma conclusão útil é útil pensar em que informação um programador precisaria para executar uma tarefa. Isto pode ser apenas um comentário claro ou os dados necessários para escrever uma função útil, como os nomes de variáveis ou que classe uma função lida.

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

Neste exemplo dizemos ao Codex o que chamar à função e que tarefa vai desempenhar.

Esta abordagem escala até ao ponto em que você pode fornecer ao Codex um comentário e um exemplo de um esquema de base de dados para fazê-lo escrever pedidos de consulta úteis para várias bases de dados.

# 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 mostras o código de dados do Codex, é capaz de fazer uma suposição informada sobre como formatar uma consulta.

Especifique o idioma. O Codex compreende dezenas de diferentes linguagens de programação. Muitos partilham convenções semelhantes para comentários, funções e outras sintaxe de programação. Ao especificar o idioma e qual a versão num comentário, o Codex é mais capaz de fornecer uma conclusão para o que deseja. Dito isto, o Codex é bastante flexível com estilo e sintaxe.

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

Instrua o Codex com o que quer que faça. Se quiser que o Codex crie uma página web, coloque a primeira linha de código num documento HTML (<!DOCTYPE html>) depois de o seu comentário dizer ao Codex o que deve fazer a seguir. O mesmo método funciona para criar uma função a partir de um comentário (seguindo o comentário com uma nova linha começando com func ou ).def

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

A colocação <!DOCTYPE html> após o nosso comentário deixa bem claro ao Codex o que queremos que ele faça.

# Create a function to count to 100

def counter

Se começarmos a escrever a função Codex vai entender o que precisa fazer a seguir.

Especificar bibliotecas ajudará o Codex a entender o que quer. O codex está ciente de um grande número de bibliotecas, APIs e módulos. Ao dizer ao Codex quais os que devem ser utilizados, seja a partir de um comentário ou importando-os para o seu código, o Codex irá fazer sugestões com base neles em vez de alternativas.

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

Ao especificar a versão, pode certificar-se de que o Codex utiliza a biblioteca mais atual.

Nota

O codex pode sugerir bibliotecas e APIs úteis, mas certifique-se sempre de fazer a sua própria pesquisa para se certificar de que estão seguras para a sua aplicação.

O estilo de comentário pode afetar a qualidade do código. Com algumas línguas, o estilo de comentários pode melhorar a qualidade da saída. Por exemplo, ao trabalhar com python, em alguns casos usando cordas doc (comentários embrulhados em cotações triplas) pode dar resultados de qualidade mais elevados do que usar o símbolo libra (#).

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

Colocar comentários dentro das funções pode ser útil. As normas de codificação recomendadas sugerem a colocação da descrição de uma função dentro da função. A utilização deste formato ajuda o Codex a compreender melhor o que pretende que a função faça.

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

Fornecer exemplos para resultados mais precisos. Se tiver um determinado estilo ou formato que necessite de Códice para utilizar, fornecendo exemplos ou demonstrando-o na primeira parte do pedido ajudará o Codex a corresponder com mais precisão ao que precisa.

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

Temperaturas mais baixas dão resultados mais precisos. Definir a temperatura API para 0, ou perto de zero (como 0,1 ou 0,2) tende a dar melhores resultados na maioria dos casos. Ao contrário dos modelos GPT-3, onde uma temperatura mais alta pode fornecer resultados criativos e aleatórios úteis, temperaturas mais altas com modelos codex podem dar-lhe respostas realmente aleatórias ou erráticas.

Nos casos em que precisa de códice para fornecer resultados potenciais diferentes, comece a zero e, em seguida, incremente para cima em .1 até encontrar uma variação adequada.

Organizar tarefas em funções. Podemos obter o Codex para escrever funções especificando o que a função deve fazer em termos tão precisos quanto possível em comentários. Ao escrever o seguinte comentário, o Codex cria uma função temporizador JavaScript que é acionada quando um utilizador carrega num botão:

Um temporizador JavaScript simples

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

Podemos usar o Codex para executar tarefas comuns com bibliotecas bem conhecidas, como criar um cliente com a API stripe:

Criar um cliente Stripe em Python

# Create a Stripe customer from an email address

Criar dados de exemplo. As aplicações de teste requerem frequentemente a utilização de dados de exemplo. Como o Codex é também um modelo linguístico que compreende como compreender e escrever linguagem natural, pode pedir ao Codex para criar dados como matrizes de nomes, produtos e outras variáveis inventadas.

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

Pedir à Codex para executar esta tarefa produzirá uma tabela como esta:

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 }
];

Funções compostas e pequenas aplicações. Podemos fornecer ao Codex um comentário que consiste num pedido complexo como a criação de um gerador de nomes aleatórios ou a realização de tarefas com a entrada do utilizador e o Codex pode gerar o resto desde que existam fichas suficientes.

/*
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
*/

Use o Códice para explicar o código. A capacidade do Codex de criar e compreender código permite-nos usá-lo para executar tarefas como explicar o que o código de um ficheiro faz. Uma maneira de o conseguir é colocar um comentário após uma função que começa com "Esta função" ou "Esta aplicação é." O codex normalmente interpreta este comentário como o início de uma explicação e completa o resto do texto.

/* Explain what the previous function is doing: It

Explicando uma consulta SQL. Neste exemplo usamos o Codex para explicar num formato legível humano o que uma consulta SQL está a fazer.

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
--

A escrever testes de unidade. A criação de um teste de unidade pode ser realizado em Python simplesmente adicionando o comentário "Teste de Unidade" e iniciando uma função.

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

# Unit test
def

Verificando o código de erros. Ao utilizar exemplos, pode mostrar ao Codex como identificar erros em código. Em alguns casos, não são necessários exemplos, no entanto, demonstrar o nível e o detalhe para fornecer uma descrição pode ajudar o Codex a compreender o que procurar e como explicá-lo. (Uma verificação por erros do Codex não deve substituir uma revisão cuidadosa pelo utilizador.

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

Utilização de dados de origem para escrever funções de base de dados. Assim como um programador humano beneficiaria da compreensão da estrutura da base de dados e dos nomes das colunas, o Codex pode usar estes dados para ajudá-lo a escrever pedidos de consulta precisos. Neste exemplo, inserimos o esquema para uma base de dados e dizemos ao Codex para que consultar a base de dados.

# 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

Converter entre línguas. Pode obter o Codex para converter de um idioma para outro, seguindo um formato simples onde lista o idioma do código que pretende converter num comentário, seguido do código e, em seguida, um comentário com o idioma em que pretende que seja traduzido.

# Convert this from Python to R
# Python version

[ Python code ]

# End

# R version

Reescrevendo código para uma biblioteca ou enquadramento. Se quiser que o Codex torne uma função mais eficiente, pode fornecer-lhe o código para reescrever seguido de uma instrução sobre o formato a utilizar.

// 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:

Passos seguintes

Saiba mais sobre os modelos subjacentes que alimentam o Azure OpenAI.