Entender os recursos de geração de código do OpenAI

Concluído

Os modelos GPT são capazes de converter linguagem natural ou snippets de código em códigos. Os modelos GPT do OpenAI são proficientes em diversas linguagens, como C#, JavaScript, Perl e PHP, mas são ainda melhores em Python.

Eles foram treinados com linguagem natural e com bilhões de linhas de código de repositórios públicos. Esses modelos são capazes de gerar códigos com base em instruções de linguagem natural, como comentários de código, e podem sugerir maneiras de concluir funções de código.

Por exemplo, dado o prompt "Escrever um loop para contagem de 1 a 10 em Python", a seguinte resposta é fornecida:

for i in range(1,11):
    print(i)

Eles também podem ajudar desenvolvedores a codificar mais rapidamente, entender novas linguagens de codificação e focar na solução de problemas maiores em seus aplicativos. Os desenvolvedores podem dividir os objetivos finais em tarefas mais simples e, com a ajuda do GPT, criar essas tarefas usando padrões conhecidos.

Exemplos de geração de código

Parte dos dados de treinamento para GPT-3 incluíam linguagens de programação, portanto, não é surpresa que os modelos de GPT possam responder a perguntas de programação, quando feitas. A família de modelos Codex é especial porque é mais capaz em mais linguagens do que os modelos de GPT.

A geração de código consiste em muito mais do que apenas escrever códigos com base em prompts de linguagem natural. Dado o seguinte código, ele pode gerar testes de unidade:

# Python 3
def mult_numbers(a, b):
  return a * b

# Unit test
def

O GPT cria testes de unidade para nossa função:

# Python 3
def mult_numbers(a, b):
  return a * b

# Unit test
def test_mult_numbers():
  assert mult_numbers(3, 4) == 12
  assert mult_numbers(0, 10) == 0
  assert mult_numbers(4, 0) == 0

# Unit test
def test_mult_numbers_negative():
  assert mult_numbers(-1, 10) == -10
  assert mult_numbers(10, -1) == -10

Ele também pode resumir funções que já foram escritas, explicar tabelas ou consultas SQL e converter uma função de uma linguagem de programação em outra.

Ao interagir com modelos GPT, é possível especificar bibliotecas ou marcas específicas de linguagem para deixar claro para o Codex o que fazer. Por exemplo, é possível fornecer o prompt <!-- build a page titled "Let's Learn about AI" --> formatado como um comentário HTML e obter o seguinte como resultado:

<html>
<head>
<title>Let's Learn about AI</title>
<link rel="stylesheet" type="text/css" href="css/styles.css">
</head>
<body>
<div class="wrapper">
<div class="header">
<h1>Let's Learn about AI</h1>
</div>
<div class="nav">
<ul>
<li><a href="index.php">Home</a></li>
<li><a href="about.php">About</a></li>
<li><a href="resources.php">Resources</a></li>
<li><a href="contact.php">Contact</a></li>
</ul>
</div>
<div class="content">
<h2>Contact</h2>
<p>
<!-- build a form to contact the site owner -->
<form action="contact.php" method="post">
<label for="name">Name:</label>
<input type="text" name="name" id="name" required>
<label for="email">Email:</label>
<input type="email" name="email" id="email" required>
<label for="subject">Subject:</label>
<input type="text" name="subject" id="subject" required>
<label for="message">Message:</label>
<textarea name="message" id="message" required></textarea>
<input type="submit" value="Send">
</form>
</p>
</div>
<div class="footer">
<p>Let's Learn about AI</p>
</div>
</div>
</body>
</html>

GitHub Copilot

A OpenAI fez uma parceria com o GitHub para criar o GitHub Copilot, chamado de programador de pares de IA. O GitHub Copilot integra o poder do OpenAI Codex em um plug-in para ambientes de desenvolvedor como o Visual Studio Code.

Depois que o plug-in estiver instalado e habilitado, será possível começar a escrever seu código e o GitHub Copilot começará a sugerir automaticamente o restante da função com base nos comentários do código ou no nome da função. Por exemplo, há apenas um nome de função no arquivo e o texto cinza é sugerido automaticamente para completá-lo.

Screenshot of GitHub Copilot suggesting completion of function.

O GitHub Copilot oferece diversas sugestões para preenchimento de código, pelas quais é possível navegar usando atalhos de teclado. Quando recebe comentários de código informativos, ele pode até sugerir um nome de função com o código de função completo.

Animated screenshot of GitHub Copilot suggesting completion of function based on code comments.