什么,7 句話就讓 AI 給我生成了一個(gè)小游戲?還是“極簡版”塞爾達(dá)這樣的經(jīng)典冒險(xiǎn)游戲,不僅能撿金幣、躲怪,地圖也不重復(fù)的那種。
這是一位名叫 Andrew Mayne 的小哥的真實(shí)經(jīng)歷,整個(gè)過程中,他甚至一行代碼都沒寫!把 AI 生成的游戲和游戲代碼 po 到網(wǎng)上后,短短數(shù)小時(shí)就收獲了上千熱度:
趕來圍觀的網(wǎng)友試玩了他搞出來的游戲,直呼“Mind blowing”。
所以,Andrew Mayne 到底是怎么做到的?原來,他用來做游戲的 AI,是 OpenAI 最新版本的 Codex。
這個(gè)版本的 Codex,除了能直接生成、修改和編輯代碼以外,連處理的文本長度也翻倍,從 2048 個(gè) token 提升到了 4000 個(gè),簡直像是“解開一層封印”。
起初,Andrew Mayne 只是好奇這版 Codex 的創(chuàng)造力極限在哪里,想做個(gè)實(shí)驗(yàn),看看它能否根據(jù)文本直接生成小游戲。沒想到,這一試簡直讓他停不下來。
7 句話生成冒險(xiǎn)游戲
第一次嘗試便是被他命名為“極簡塞爾達(dá)”的游戲。別看畫面抽象,整個(gè)游戲包括隨機(jī)生成地圖、玩家用鍵盤控制角色移動、有敵人會攻擊玩家、收集金幣加分等游戲核心要素。走到地圖邊緣還能生成一張新地圖,這樣就能一直玩下去…… 總之是一個(gè) 2D 冒險(xiǎn)游戲原型的樣子。
所有這些規(guī)則只用英語寫了七句話,AI 則用 Javascript 寫出了 190 行代碼。
由于小哥本人不是專業(yè)游戲設(shè)計(jì)師,描述用詞不是很精確,但 AI 總是能產(chǎn)生自己的理解。比如描述怪物的部分,描述里只有“一個(gè)紅色的怪物,玩家移動時(shí)它也移動,試圖接近玩家,如果玩家被碰到就減一分”。AI 則根據(jù)上下文生生成了 50 多行完整的怪物生成、移動、判定分?jǐn)?shù)的邏輯。
只需把色塊替換成簡單貼圖,和真正的塞爾達(dá)原型是不是就很像了?
△被曝光的初代塞爾達(dá)原型程序
第二個(gè)小游戲,他打算考驗(yàn) AI 對邏輯的理解,生成一個(gè)簡化版猜詞游戲 Wordle。
這次只用了 5 段話描述規(guī)則。謎底詞從一個(gè)列表里隨機(jī)選擇,每次選擇一個(gè)放到控制臺。
描述字母輸入框的樣式,包括寬高、文字居中對齊、每個(gè)輸入框有獨(dú)立 ID;輸入時(shí)自動大寫;再加一個(gè)確認(rèn)按鈕。
分四種情況討論如何判定輸入結(jié)果。
后面他又進(jìn)行了更多嘗試,調(diào)用第三方庫生成 3D 迷宮、能與玩家對戰(zhàn)的井字棋,以及給照片加濾鏡的小程序等,全都沒手寫一行代碼。
其中比較有意思的是生成《黑客帝國》字符雨視覺特效,幾乎是只告訴 AI“創(chuàng)建一個(gè)畫布,加一個(gè)黑客帝國雨特效”,沒有任何額外解釋,AI 就做出來了:
最后他總結(jié)出幾條經(jīng)驗(yàn),介紹如何寫文字描述能讓 AI 更容易理解需求:
先描述邏輯部分。然后創(chuàng)建 UI 元素時(shí)候調(diào)用前面生成的邏輯函數(shù)。
給描述編號。這樣更容易看明白 AI 正在處理哪條描述。
多讓 AI 創(chuàng)建函數(shù)。如果直接讓 AI 生成 100 項(xiàng)的數(shù)組,AI 可能真的每一項(xiàng)每一項(xiàng)寫出來,如果告訴 AI 創(chuàng)建一個(gè)生成數(shù)組的函數(shù),AI 就會用循環(huán)語句來完成了。
如果一次不理想,多試幾次。把 temperature 參數(shù)設(shè)為 0.5,有一定隨機(jī)性可能會產(chǎn)生更好結(jié)果。
看起來有點(diǎn)產(chǎn)品經(jīng)理總結(jié)如何與程序員溝通對接的味了。
背后的 Codex“再進(jìn)化”
所以話說回來,這個(gè)最新版的 Codex 到底有多好用?除了 Andrew Mayne 最感興趣的 token 上限翻倍以外,新增加的插入和編輯兩大功能也挺有意思。
先來看看 Codex 的編輯功能,像優(yōu)化代碼性能就能用一句話搞定:
或是換個(gè)編程語言實(shí)現(xiàn)代碼:
還有“單行代碼編程”(One Liner),一句命令就能實(shí)現(xiàn):
有了這一功能,調(diào)整代碼的難度就會降低不少。使用 Codex 的時(shí)候,甚至可以像甲方一樣,無需手動調(diào)整代碼,只需要對著這位“AI 程序員”發(fā)號施令,就能讓它生成你想要的東西。
再來看看 Codex 的插入功能。不僅能主動生成注釋,提醒這段代碼的作用:
還能根據(jù)上下文理解這段函數(shù),主動幫你插入它的定義:
無論是開發(fā)框架、還是寫小軟件,都不需要再擔(dān)心“一條路走到黑”,可以根據(jù)需求再從中間進(jìn)行調(diào)整。
當(dāng)然,這些功能放到 GPT-3 上也類似。無論是換人稱、改格式這種小技巧:
還是隨著上下文修改并插入語句,都不在話下。
除了這兩個(gè)功能以外,還有一些細(xì)節(jié)上的更新,例如 UI 變得更加簡潔等等。
事實(shí)上,這一系列新功能,都是為了讓 Codex 和 GPT-3 變得更容易上手。據(jù) OpenAI 的科學(xué)家表示,他們希望通過這次更新,讓更多“非職業(yè)選手”也玩上 GPT-3 和 Codex。
這也確實(shí)吸引了不少感興趣的網(wǎng)友動手嘗試。像搞出“7 句話讓 AI 給我做游戲”的 Andrew Mayne,原本只是一位驚悚小說家。
△還戴著頂 SpaceX 的帽子,要素過多
除了他以外,包括《連線》編輯 Clive Thompson 等人也在嘗試用 Codex 給自己寫代碼。Clive 表示,Codex 掌握的知識量比他們這些“業(yè)余選手”豐富不少,能選出最合適的函數(shù)和庫來完成需求。例如在接到與 PDF 有關(guān)的需求時(shí),調(diào)用 PyPDF 庫。
還有網(wǎng)友表示,自己拿 Codex 做了個(gè)《太空侵略者》(space invaders)小游戲,同樣成功了。
看到這些成果,有網(wǎng)友感嘆,當(dāng) AI 真的學(xué)會寫代碼后,留給人類做的可能就剩下兩件事情:寫更好的 AI,或是想想能用 AI 生成什么。
不過,更加謹(jǐn)慎的網(wǎng)友則認(rèn)為,AI 生成代碼容易讓人對它產(chǎn)生依賴性,從而忽視代碼本身的問題。例如這位作者用 Codex 寫的圖像處理代碼,就存在一些不正確的地方:
還有網(wǎng)友預(yù)測,用 AI 寫代碼的話,最后還是要讓工程師來調(diào)整它,本質(zhì)上還是殊途同歸。
你會用 AI 來寫工具、或是做游戲嗎?
參考鏈接:
[1]https://andrewmayneblog.wordpress.com/2022/03/17/building-games-and-apps-entirely-through-natural-language-using-openais-davinci-code-model/
[2]https://twitter.com/AndrewMayne/status/1504612428432125970
[3]https://beta.openai.com/docs/engines/codex-series-private-beta
[4]https://news.ycombinator.com/item?id=30717773
[5]https://www.wired.com/story/openai-copilot-autocomplete-for-code/
[6]https://www.facebook.com/andrewmayne?_rdr
廣告聲明:文內(nèi)含有的對外跳轉(zhuǎn)鏈接(包括不限于超鏈接、二維碼、口令等形式),用于傳遞更多信息,節(jié)省甄選時(shí)間,結(jié)果僅供參考,IT之家所有文章均包含本聲明。