GPT-4和GPT-3.5在處理和編寫代碼的能力上差別還是很大的。官網(wǎng)的一份測試報告。
前兩個是GPT-4,一個采用文本輸入,一個采用圖像輸入;第三個是GPT3.5,可以看出GPT-4的代碼能力相較于GPT-3.5有較大能力的提升。
集成GPT-4的Github Copilot X還在小范圍內(nèi)測中,而集成GPT-4的Cursor已公開發(fā)行。Cursor是一個集成GPT-4的IDE,可以用自然語言編寫代碼,讓編寫代碼和聊天一樣簡單。
集成GPT-4的Cursor,快捷鍵:windows電腦 ctrl+k,mac電腦 comand+k 喚起需求輸入框,來用自然語言編寫代碼;ctrl+l,comand+l 喚起聊天窗口,讓編寫代碼和聊天一樣簡單。
首先,按下 ctrl+k。寫下一段需求:寫一個Python/ target=_blank class=infotextkey>Python程序,要求實現(xiàn)圖片轉(zhuǎn)字符畫并寫入文件,要用到pillow 庫的使用,araparse庫
cursor在一個空白的文件中,生成了一段完整的python代碼。
# Welcome to Cursor
# 1. Try generating with command K on a new line. Ask for a pytorch script of a feedforward neural.NETwork
# 2. Then, select the outputted code and hit chat. Ask if there's a bug. Ask how to improve.
# 3. Try selecting some code and hitting edit. Ask the bot to add residual layers.
# 4. To try out cursor on your own projects, go to the file menu (top left) and open a folder.
from PIL import Image
import argparse
# 命令行輸入?yún)?shù)處理
parser = argparse.ArgumentParser()
parser.add_argument('file') # 輸入文件
parser.add_argument('-o', '--output') # 輸出文件
parser.add_argument('--width', type = int, default = 80) # 輸出字符畫寬
parser.add_argument('--height', type = int, default = 80) # 輸出字符畫高
# 獲取參數(shù)
args = parser.parse_args()
IMG = args.file
WIDTH = args.width
HEIGHT = args.height
OUTPUT = args.output
# 字符畫所使用的字符集,共70個字符,可自行擴(kuò)展
ascii_char = list("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+-=[]{};':",./<>?\|`~ ")
# 將256灰度映射到70個字符上
def get_char(r, g, b, alpha = 256):
if alpha == 0:
return ' '
length = len(ascii_char)
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
unit = (256.0 + 1)/length
return ascii_char[int(gray/unit)]
if __name__ == '__main__':
im = Image.open(IMG)
im = im.resize((WIDTH, HEIGHT), Image.NEAREST)
txt = ""
for i in range(HEIGHT):
for j in range(WIDTH):
txt += get_char(*im.getpixel((j, i)))
txt += 'n'
print(txt)
# 字符畫輸出到文件
if OUTPUT:
with open(OUTPUT, 'w') as f:
f.write(txt)
else:
with open("output.txt", 'w') as f:
f.write(txt)
看看自動生成的代碼能否直接運(yùn)行。
用于轉(zhuǎn)換的圖片選用下面這張:
(venv) PS C:UsershanweiPycharmProjectspythonProject> python .main.py -h
usage: main.py [-h] [-o OUTPUT] [--width WIDTH] [--height HEIGHT] file
positional arguments:
file
options:
-h, --help show this help message and exit
-o OUTPUT, --output OUTPUT
--width WIDTH
--height HEIGHT
(venv) PS C:UsershanweiPycharmProjectspythonProject> python .main.py .golang.png
運(yùn)行程序后,轉(zhuǎn)換的效果如下:
下面來讀讀代碼:
gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
這段代碼好奇怪,問問Cursor是啥意思。按下 ctrl+l,喚起聊天窗口,輸入:這段代碼是啥意思
Cursor給出了解釋,原來是通過r,g,b的值加權(quán)計算出灰度值,然后通過灰度值計算出字符。還給出了參考鏈接 ??https://en.wikipedia.org/wiki/Grayscale#Converting_color_to_grayscale??
按下 ctrl+l,喚起聊天窗口,讓AI解釋下整段代碼,輸入:用中文解釋下整段代碼
可見AI解釋的非常準(zhǔn)確和詳盡。
上面代碼的功能是將圖片轉(zhuǎn)換成黑白的帶有灰度的ASCII字符畫,下面來改造一下,讓它能夠生成彩色的字符畫。
按下 ctrl+k 喚醒需求文本框,輸入:請將這段代碼由生成黑白的字符改成生成彩色的字符
看到動畫:AI會逐行掃描每一行代碼,在需要改動的地方標(biāo)注出來,然后在下面給出改動的代碼。并保留原來的代碼,方便對比。
AI只改動了2行的代碼(實際上只改動了一行,第二處AI估計大腦短路了,完全等價的改動),實現(xiàn)了由生成黑白的字符改成生成彩色的字符。下面測試一下:
(venv) PS C:UsershanweiPycharmProjectspythonProject> python .main2.py .golang.png
生成的結(jié)果如下,發(fā)現(xiàn)文本文件打開后,多了很多顏色的信息
直接打開文本文件查看,是無法看出原來的圖像了,需要在終端查看顏色效果:
可見,原來圖片的藍(lán)色信息,且兩種不同深淺的藍(lán)色都顯示了出來。Perfect!