Förstå openAI-kodgenereringsfunktioner

Slutförd

GPT-modeller kan ta naturligt språk eller kodfragment och översätta dem till kod. OpenAI GPT-modellerna är skickliga på över ett dussin språk, till exempel C#, JavaScript, Perl, PHP och är mest kompatibla i Python.

GPT-modeller har tränats på både naturligt språk och miljarder kodrader från offentliga lagringsplatser. Modellerna kan generera kod från instruktioner för naturligt språk, till exempel kodkommentar, och kan föreslå sätt att slutföra kodfunktioner.

Med till exempel kommandot "Write a for loop counting from 1 to 10 in Python" (Skriv en för loop som räknar från 1 till 10 i Python) ges följande svar:

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

GPT-modeller kan hjälpa utvecklare att koda snabbare, förstå nya kodningsspråk och fokusera på att lösa större problem i sina program. Utvecklare kan dela upp sina mål i enklare uppgifter och använda GPT för att bygga ut dessa uppgifter med hjälp av kända mönster.

Exempel på kodgenerering

En del av träningsdata för GPT-3 inkluderade programmeringsspråk, så det är ingen överraskning att GPT-modeller kan svara på programmeringsfrågor om de ställs. Det som är unikt med Codex-modellfamiljen är att det är mer kapabelt på fler språk än GPT-modeller.

Kodgenereringen går utöver att bara skriva kod från frågor på naturligt språk. Med följande kod kan den generera enhetstester:

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

# Unit test
def

GPT bygger ut enhetstester för vår funktion:

# 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

GPT kan också sammanfatta funktioner som redan är skrivna, förklara SQL-frågor eller tabeller och konvertera en funktion från ett programmeringsspråk till ett annat.

När du interagerar med GPT-modeller kan du ange bibliotek eller språkspecifika taggar för att göra det tydligt för Codex vad vi vill ha. Vi kan till exempel ange den här uppmaningen formaterad som en HTML-kommentar: <!-- build a page titled "Let's Learn about AI" -->och hämta detta som ett resultat:

<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

OpenAI samarbetade med GitHub för att skapa GitHub Copilot, som de kallar en AI-parprogram programmerare. GitHub Copilot integrerar kraften i OpenAI Codex i ett plugin-program för utvecklarmiljöer som Visual Studio Code.

När plugin-programmet har installerats och aktiverats kan du börja skriva koden, och GitHub Copilot börjar automatiskt föreslå resten av funktionen baserat på kodkommentare eller funktionsnamnet. Vi har till exempel bara ett funktionsnamn i filen och den grå texten föreslås automatiskt för att slutföra den.

Screenshot of GitHub Copilot suggesting completion of function.

GitHub Copilot erbjuder flera förslag på kodkomplettering, som du kan ta dig igenom med kortkommandon. När du får informativa kodkommenteringar kan den till och med föreslå ett funktionsnamn tillsammans med den fullständiga funktionskoden.

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