
OpenAI Codex ã®äœ¿ãæ¹
OpenAI APIã®ãCodexãã®äœ¿ãæ¹ããŸãšããŸããã
åå
1. Codex
ãCodexãã¯ãèªç¶èšèªãšæ°ååè¡ã®ã³ãŒãã®äž¡æ¹ã§åŠç¿ããGPT-3ããŒã¹ã®ã¢ãã«ã§ããPythonã®èœåãæãé«ããJavaScriptãGoãPerlãPHPãRubyãSwiftãTypeScriptãSQLãShell ãå«ã10ãè¶ ããèšèªãçç¥ããŠããŸãã
ãCodexãã¯ã次ã®ãããªæ§ã ãªã¿ã¹ã¯ã«å©çšã§ããŸãã
ã»ã³ã¡ã³ããã³ãŒãã«å€æã
ã»ã³ã³ããã¹ãå ã§æ¬¡ã®è¡ãŸãã¯é¢æ°ãèšè¿°ã
ã»ã¢ããªã±ãŒã·ã§ã³ã®æçšãªã©ã€ãã©ãªã API åŒã³åºããªã©ã®ç¥èã®æäŸã
ã»ã³ã¡ã³ãã®è¿œå ã
ã»å¹çåã®ããã®ã³ãŒãã®æžãçŽãã
2. Codexã®äœ¿çšäŸ
ãPlaygroundãã§Modelã«ãcode-davinci-002ããæå®ããŠè©ŠããŠããŸãã

2-1. ãHelloããšèšã (Python)
"""
Ask the user for their name and say "Hello"
"""name = input("What is your name? ")
print("Hello " + name)2-2. ã©ã³ãã ãªååã®çæ (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
"""import random
first_names = ['John', 'Jane', 'Corey', 'Travis', 'Dave', 'Kurt', 'Neil', 'Sam', 'Steve', 'Tom', 'James', 'Robert', 'Michael', 'Charles', 'Joe', 'Mary', 'Maggie', 'Nicole', 'Patricia', 'Linda', 'Barbara', 'Elizabeth', 'Laura', 'Jennifer', 'Maria']
last_names = ['Smith', 'Doe', 'Jenkins', 'Robinson', 'Davis', 'Stuart', 'Jefferson', 'Jacobs', 'Wright', 'Patterson', 'Wilks', 'Arnold', 'Johnson', 'Williams', 'Jones', 'Brown', 'Davis', 'Miller', 'Wilson', 'Moore', 'Taylor', 'Anderson', 'Thomas', 'Jackson', 'White', 'Harris', 'Martin']
full_names = []
for i in range(100):
first = random.choice(first_names)
last = random.choice(last_names)
full_names.append(f"{first} {last}")
print(full_names2-3. 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 =query = """
SELECT * FROM customers
WHERE State = 'TX' AND FirstName = 'Jane'
"""
run_query(query)2-4. ã³ãŒãã®èª¬æÂ (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?// Function 1 creates an array of 50 random full names.2-5. ãã®ä»ã®äœ¿çšäŸ
ãã®ä»ã®äœ¿çšäŸã¯ã以äžã®ãExampleãã§åç §ã§ããŸãã
3. ãã¹ããã©ã¯ãã£ã¹
ãã¹ããã©ã¯ãã£ã¹ã¯ã次ã®ãšããã§ãã
3-1. ã³ã¡ã³ãã»ããŒã¿ã»ã³ãŒãããå§ãã
Codexã«æçšãªè£å®ã³ãŒããäœæãããã«ã¯ãããã°ã©ããã¿ã¹ã¯ãå®è¡ããããã«ã©ã®ãããªæ å ±ãå¿ èŠã§ãããèããããšã圹ç«ã¡ãŸããäŸãã°ãæç¢ºãªã³ã¡ã³ããã倿°åã颿°ãæ±ãã¯ã©ã¹åãªã©ããããã¯è£å®ã³ãŒããäœæããããã«å¿ èŠãªããŒã¿ã§ãã
# Create a function called 'nameImporter' to add a first and last name to the database3-2. èšèªã®æå®
Codex ã¯ãæ°åã®ç°ãªãããã°ã©ãã³ã°èšèªãçè§£ããŸããå€ãã¯ãã³ã¡ã³ãã颿°ãããã³ãã®ä»ã®ããã°ã©ãã³ã°æ§æã«ã€ããŠåæ§ã®èŠåãå ±æããŠããŸããã³ã¡ã³ãã§èšèªãšããŒãžã§ã³ãæå®ããããšã«ãããCodex ã¯å¿ èŠãªãã®ãããé©åã«è£å®ã§ããŸãã
# R language
# Calculate the mean distance between an array of points# Python 3
# Calculate the mean distance between an array of pointsCodex ã«äœãããããããæç€ºããŸããCodexã«Web ããŒãžãäœæããããå Žåã¯ãã³ã¡ã³ãã®åŸã«HTMLããã¥ã¡ã³ã (<!DOCTYPE html>) ãé 眮ããŸãã
<!-- Create a web page with the title 'Kat Katman attorney at paw' -->
<!DOCTYPE html>åãæ¹æ³ã§ãã³ã¡ã³ãã®åŸã« func ãŸã㯠def ã§å§ãŸãè¡ã远å ããããšã§ã颿°ãäœæã§ããŸãã
# Create a function to count to 100
def counter颿°ãæžãå§ãããšãCodexã¯æ¬¡ã«äœãããå¿ èŠãããããçè§£ããŸãã
3-3. ã©ã€ãã©ãªã®æå®
ã³ã¡ã³ããŸãã¯ã€ã³ããŒãã§äœ¿çšããã®ã©ã€ãã©ãªãæå®ãããšãCodexãå¿ èŠãªãã®ãçè§£ããã®ã«åœ¹ç«ã¡ãŸãã
<!-- Use A-Frame version 1.2.0 to create a 3D website -->
<!-- https://aframe.io/releases/1.2.0/aframe.min.js -->ããŒãžã§ã³ãæå®ããããšã§ãCodexãææ°ã®ã©ã€ãã©ãªã䜿çšããŠããããšã確èªã§ããŸãã
3-4. ã³ã¡ã³ãã®ã¹ã¿ã€ã«
äžéšã®èšèªã§ã¯ãã³ã¡ã³ãã®ã¹ã¿ã€ã«ã«ãã£ãŠåºåå質ãåäžããŸããããšãã°ãPython ã䜿çšããå Žåãããã¥ã¡ã³ãæåå (äžéåŒçšç¬Šã§å²ãŸããã³ã¡ã³ã) ã䜿çšãããšãã·ã£ãŒã (#) èšå·ã䜿çšãããããåºåå質ãåäžããŸãã
"""
Create an array of users and email addresses
"""3-5. 颿°å ã«ã³ã¡ã³ããèšè¿°
颿°å ã«ã³ã¡ã³ããèšè¿°ããæ¹ããCodexãæç¢ºã«çè§£ããã®ã«åœ¹ç«ã¡ãŸããæšå¥šãããã³ãŒãã£ã³ã°ã§ã¯ãéåžžã颿°ã®èšè¿°ã颿°å ã«é 眮ããããšãææ¡ããŠããŸãã
def getUserBalance(id):
"""
Look up the user in the database âUserData' and return their current account balance.
"""3-6. äŸã®æå®
Codexã§äœ¿çšããå¿ èŠãããç¹å®ã®ã¹ã¿ã€ã«ãŸãã¯åœ¢åŒãããå Žåã¯ãèŠæ±ã®æåã®éšåã§äŸãæå®ãããšãCodexãæç¢ºã«çè§£ããã®ã«åœ¹ç«ã¡ãŸãã
"""
Create a list of random animals and species
"""
animals = [ {"name": "Chomper", "species": "Hamster"}, {"name":3-7. temperaturesã¯äœããã
ã»ãšãã©ã®å Žåãtemperatures ã0ãŸãã¯0ã«è¿ãå€ (0.1 ã 0.2 ãªã©) ã«èšå®ããæ¹ããããè¯ãçµæãåŸãããŸããGPT-3ã§ã¯ temperatures ãé«ãã»ã©ã¯ãªãšã€ãã£ããªçµæãåŸãããŸãããCodexã«ãšã£ãŠã¯ã©ã³ãã ã§äžèŠåãªçµæã«ãªããŸãã
3-8. 颿°ãäœããã¹ãããæå®
ã³ã¡ã³ãã§é¢æ°ãäœããã¹ãããã§ããã ãæ£ç¢ºã«æå®ããããšã§ã颿°ã®è£å®ã³ãŒããçæã§ããŸãã
// Create a timer that creates an alert in 10 seconds3-9. ãµã³ãã«ããŒã¿ã®äœæ
Codexã«ããã¹ãçšã®ãµã³ãã«ããŒã¿ãäœæããŠãããããšãã§ããŸãã
/* Create an array of weather temperatures for San Francisco */Codexã«ãã®ã¿ã¹ã¯ã®å®è¡ãäŸé Œãããšã次ã®ãµã³ãã«ããŒã¿ãçæãããŸãã
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 }
];3-10. ã¿ã¹ã¯ã®ãªã¹ãã¢ãã
Codexã¯ãè€éãªèŠæ±ã§ãã£ãŠãã¿ã¹ã¯ããªã¹ãã¢ããããããšã§ãè£å®ã³ãŒããçæã§ããŸãã
/*
Create a list of animals
Create a list of cities
Use the lists to generate stories about what I saw at the zoo in each city
*/3-11. çµæãµã€ãºã®å¶é
maximum length ãæžãããstop sequence ãèšå®ããŠãçµæãµã€ãºãå¶éããããšã¯ãããæ£ç¢ºãªçµæãåŸãããŸãã¯åŸ ã¡æéãççž®ããããšã«ç¹ãããŸãã
3-12. ã¹ããªãŒãã³ã°ã§åŸ ã¡æéãççž®
ãªãŒãã³ã³ããªãŒããªã©ãäœã¬ã€ãã³ã·ãå¿ èŠãšããæ©èœã«ã¯ãã¹ããªãŒãã³ã°ã®äœ¿çšãæ€èšããŠãã ãããã¢ãã«ãå šãŠã®çµæçæãå®äºããåã«ãå¿çãè¿ãããŸãã
3-13. ã³ãŒãã«ã€ããŠèª¬æ
Codexã«ãã³ãŒããäœãè¡ã£ãŠãããã説æããŠãããããšãã§ããŸãããããå®çŸããæ¹æ³ã®1ã€ã¯ã颿°ã®åŸã«"This function" ãŸã㯠"This application is." ã§å§ãŸãã³ã¡ã³ããå ¥ããããšã§ããCodexã¯éåžžãããã説æã®éå§ãšè§£éããæ®ãã®ããã¹ãã宿ãããŸãã
/* Explain what the previous function is doing: It3-14. SQLã¯ãšãªã«ã€ããŠèª¬æ
Codexã«ã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
--3-15. åäœãã¹ãã®äœæ
ã³ã¡ã³ããUnit testãã远å ããŠé¢æ°ãéå§ããã ãã§ãåäœãã¹ããäœæã§ããŸãã
# Python 3
def sum_numbers(a, b):
return a + b
# Unit test
def3-16. ãšã©ãŒåå ã«ã€ããŠèª¬æ
Codexã«ãã³ãŒãã®ãšã©ãŒåå ã説æããŠãããããšãã§ããŸãã
/* Explain why the previous function doesn't work. */3-17. ããŒã¿ããŒã¹æ§é ãšååã®æ å ±ãæå®
ããŒã¿ããŒã¹æ§é ãšååã®æ å ±ãæå®ããããšã§ãCodexãæ£ç¢ºãªã¯ãšãªãäœæããã®ã«åœ¹ç«ã¡ãŸãã
# 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 Adele3-18. èšèªã®å€æ
ããèšèªããå¥ã®èšèªã«å€æãããå Žåã¯ã倿ãããã³ãŒãã®èšèªãã³ã¡ã³ãã«ãªã¹ããããã®åŸã«ã³ãŒããšç¿»èš³ãããèšèªã®ã³ã¡ã³ããèšè¿°ããŸãã
# Convert this from Python to R
# Python version
[ Python code ]
# End
# R version3-19. ã³ãŒããæžãçŽã
颿°ãæžãçŽãããå Žåã¯ãæžãæããã³ãŒããæäŸãããã®åŸã«äœ¿çšãã圢åŒã«ã€ããŠã®æç€ºãèšè¿°ããŸãã
// 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:4. ã³ãŒãã®æ¿å ¥
completionsãšã³ããã€ã³ãã¯ãprefix ã«å ã㊠suffix ãæå®ããããšã§ãã³ãŒãå ãžã®ã³ãŒãã®æ¿å ¥ããµããŒãããŸãã
4-1. ãã¹ããã©ã¯ãã£ã¹
ãã¹ããã©ã¯ãã£ã¹ã¯ã次ã®ãšããã§ãã
â max_tokens > 256 ã䜿çš
ãã®ã¢ãã«ã¯ãããé·ãè£å®ã³ãŒããæ¿å
¥ããã®ã«é©ããŠããŸããmax_tokens ãå°ãããããšãsuffixã«æ¥ç¶ããåã«ã¢ãã«ãåæãããå¯èœæ§ããããŸãã
â finish_reason == "stop" ãåªå
ã¢ãã«ãèªç¶ãªåæ¢ç¹ããŸãã¯ãŠãŒã¶ãŒãæå®ãã stop sequence ã«å°éãããšãfinish_reason == "stop" ãèšå®ãããŸããããã¯ãã¢ãã«ã suffix ã«ããŸãæ¥ç¶ã§ããããšã瀺ããŠãããå®æåºŠã®è¯ãã·ã°ãã«ã§ãã
â 3ïœ5åãªãµã³ããªã³ã°ãã
è£å®ã³ãŒã㯠prefix ã«æ¥ç¶ããŸãããsuffix ã®æ¥ç¶ã«èŠåŽããå ŽåããããŸãããã®å Žåã¯ã3ã5åã®ãªãµã³ããªã³ã° (ãŸã㯠k=3,5 ã§ best_of ã䜿çš) ããŠãfinish_reason == "stop" ã§ãµã³ãã«ãéžæããææ³ã广çã§ãããªãµã³ããªã³ã°æã¯ã倿§æ§ãé«ããããã« temperatures ãé«ãããå¿
èŠããããŸãã
ãæ³šã è¿ããããã¹ãŠã®ãµã³ãã«ã finish_reason == "length" ã®å Žåã¯ãmax_tokens ãå°ãããã§ããå¯èœæ§ãé«ãã§ãã
5. ã³ãŒãã®ç·šé
editsãšã³ããã€ã³ã ã¯ãã³ãŒãã宿ãããã ãã§ãªããã³ãŒããç·šéããããã«äœ¿çšã§ããŸããããã€ãã®ã³ãŒããšãã®å€æŽæ¹æ³ã®æç€ºãæå®ãããšãcode-davinci-edit-001ã¢ãã«ãããã«å¿ããŠç·šéã詊ã¿ãŸãã
5-1. äŸ
äŸã¯ã次ã®ãšããã§ãã
â 颿°ãæžã
ã»INPUT
(ãªã)ã»INSTRUCTIONS
Write a function in python that calculates fibonacciã»OUTPUT
def fibonacci(num):
a = 0
b = 1
if num ==1:
print(a)
else:
print(a)
print(b)
#the sequence starts with 0,1
for i in range(2,num):
c = a+b
a = b
b = c
print(c)
fibonacci(10)â ãªãã¡ã¯ã¿ãªã³ã°
ã»INPUT
if num ==1:
print(a)
else:
print(a)
print(b)
#the sequence starts with 0,1
for i in range(2,num):
c = a+b
a = b
b = c
print(c)
fibonacci(10)ã»INSTRUCTIONS
Refactor this function to be recursiveã»OUTPUT
def fibonacci(num):
if num <= 1:
return num
else:
return fib(num-1) + fib(num-2)
print(fibonacci(10))â 颿°ã®ãªããŒã
ã»INPUT
def fibonacci(num):
if num <= 1:
return num
else:
return fib(num-1) + fib(num-2)
print(fibonacci(10))ã»INSTRUCTIONS
Rename the function to fibã»OUTPUT
def fib(num):
if num <= 1:
return num
else:
return fib(num-1) + fib(num-2)
print(fib(10))5-2. ãã¹ããã©ã¯ãã£ã¹
ãã¹ããã©ã¯ãã£ã¹ã¯ã次ã®ãšããã§ãã
(1) 空ã®ããã³ããã®äœ¿çšãæ€èšããŠãã ããããã®å Žåãç·šéã¯è£å®ãšåæ§ã«ãªããŸãã
(2) æç€ºã¯ã§ããã ãå
·äœçã«æå®ããŠãã ããã
(3) ã¢ãã«ãè§£ãèŠã€ãããããšã©ãŒã«ãªãããšããããŸãããã®å Žåã¯ãæç€ºãèšãæããå¿
èŠããããŸãã