ChatGPT 的发展速度真是令人震惊。
在距离第一次要求生成式 AI 聊天机器人帮我开发游戏的近两年之后,我使用完全相同的提示词再次测试了 ChatGPT 4o,结果让我大为震撼。
自从 OpenAI 的这套生成式 AI 平台问世以来,人们一直想靠它帮助处理自己不愿做的任务,甚至在某些情况下执行自己做不到的工作。我是作家出身,所以不会要求 ChatGPT 创作散文;我的艺术设计能力也尚可,所以只用生成式图像来自娱自乐。但我确实不会编程,虽然之前学过 HTML、JavaScript 甚至是 BASIC 编程,但现在我已经彻底生疏、用不起来了。
之前(2023 年初)我曾要求 ChatGPT 帮我制作一款名为 Tic-Tac-Go 的游戏,基本规则跟井字棋类似,只是更加高级。我设想的棋盘是一个 12 x 12 的网格,获胜需要将六个“X”标或者六个“O”标连成一条线。
我想创建一种基于井字棋的变体,但规则更为复杂:棋盘网格应该为 12 x 12,仍使用 X 和 O 作为双方棋子。双方玩家均可使用自己的“X”和“O”摆放进任意网格来阻止对方的当前或者后续棋步。游戏目标是在抢在对手之前,在任意行、列或者对角线上将六个“X”或“O”摆成一条线。请注意,一方玩家执“X”、另一方玩家执“O”,请使用简单的 HTML 和 JavaScript 编写此程序。
我们将游戏命名为:Tic-Tac-Go。虽然这个项目的开发难度不是特别高,但至少也涉及嵌套表还有浏览器内交互,反正单凭我自己的开发能力肯定搞不定。
第一次尝试就取得了成功,ChatGPT 不仅提供了 CSS、JavaScript 还有 HTML 文件,而且几乎每部分代码都附有大量注释。但受到内置字符限制(4096)的影响,它给出的大部分内容都不完整。我只能一直要求 ChatGPT 继续提供其余代码,但它总会重复之前已经给出过的部分。
这里肯定有我自己的失误,但我也意识到 ChatGPT 1.0 并不足以弥补我个人的开发能力空白。最终,我们没能完成游戏构建,经过几个小时测试后无奈放弃。
这是去年的成果
在过去这 20 个月里,ChatGPT 的功能迎来了巨大飞跃。我最近开始使用 ChatGPT 搜索,并发现它确实比谷歌更能有效提供优质答案。ChatGPT 4o 也摆脱了我在第一版中发现的几乎所有限制。我开始好奇它的能力边界究竟在哪里。
另外,同事在 Slack 频道上也提到了一些新的 AI 分布式计算平台,比如能够帮助程序员快速开发游戏的 Oasis AI。我当时是不信的,但也想起了曾经失败的 ChatGPT 游戏开发尝试。在聊了自己的经历后,同事回复说“不知道现在这些新的 AI 工具,能不能更轻松地做好这项工作。”
好主意!ChatGPT 4o 能不能在当年初版 ChatGPT 跌倒的地方爬起,创造新的神话?
为了公平起见,我没有对提示词做任何调整,只是将前文中的提示文本直接粘贴到了 ChatGPT 4o 当中。我很快就意识到,现在的 4o 跟当年的 1.0 根本就不是一个量级。如果说 ChatGPT 1 最多算是小学水平的智能,那 ChatGPT 4o 至少是名大学生。
ChatGPT 4o 首先将我的游戏构思整理成了更简洁的形式:在 12 x 12 网格的棋盘上创建一款更复杂的井字棋变体,名为 Tic-Tac-Go。可以使用 HTMl 和 JavaScript 实现。在此游戏中,双方玩家轮流放置标记(X 或 O),尝试在行、列或对角线上将六个标记摆成一条线。可通过放置标记阻挡对方的连线策略。
之后它开始快速生成 HTML 和 JavaScript 代码,而且相当完整。于是我得到了从开关“html”到末尾“/html”的所有内容。在代码之后,ChatGPT 又对其工作原理和游戏的相关功能做出了四点解释。除 HTML 和 JavaScript 之外,另有一个“复制代码”的按钮。
我把代码复制下来,并询问 ChatGPT 要如何在网络浏览器中进行测试(当然,这是故意发问)。它建议我打开 TextEdit 之类的文本编辑器,粘贴代码,再使用“.html”扩展名将其保存。完成之后,我尝试用 Chrome 和 Safari 浏览器加载该文件,却发现这并不是游戏,只是一堆代码加个一个“重启游戏”的按钮。
我把情况反馈给 ChatGPT,并询问是否需要将 JavaScript 保存成单独的文件。它告诉我不需要,并提醒我检查文件的扩展名是否正确、有没有禁用 RichText。它还提供了其他一些建议,比如使用开发者工具检查 JavaScript 能否正常工作。
这时候我又有了新点子。我直接把报错网页截图发给了 ChatGPT,问它能不能分析图像。这种多模态功能在初版 ChatGPT 中根本无法想象,但如今却已毫无难度。
ChatGPT 回答道,“看起来您的文件显示的是 RTF(富文本格式)标记,而非 HTML。如果将文件保存为 RTF 文档、而非纯文本,通常就会发生这种情况。”之后它还解释了个中原理,以及具体修复方法。
我重新粘贴了代码,将 TextEdit 设置为 PlainText,再将其重新保存为 HTML 文件。最后,我用 Chrome 打开了文件。
程序顺利运行,整个游戏跟我想象的完全一样。棋盘上共有 144 个空格,还有轮流放置“X”和“O”标记的双玩家系统。
接下来,我又意识到新手在面对棋盘时肯定不知道该怎么做,所以我问 ChatGPT 能不能在游戏画面下方加上规则。ChatGPT 马上输出了包含游戏规则的新代码。
在初版 ChatGPT 中,每当我要求它重新输出代码,过程中都会有一些东西消失无踪。但这次不会,20 个月的迭代让它在效率、明确性和记忆力都远超自己先前的版本。
这时候又一个大胆的想法冒了出来,但也是非常合乎逻辑的游戏更新方向:在线游戏功能。现在的设计只允许两个人并肩坐在电脑前对弈,但我想要实现在线比赛功能。
“要将其打造成多人在线游戏,您需要设置一个服务器来袒管理游戏状态及玩家互动。以下是必要步骤的概括表述和部分代码示例,希望能帮助您快速上手……”
ChatGPT 为我提供了详细的说明以及设置服务器所需要的全部代码。其中涉及到 Node.js 和 WebSockets 之类的东西,反正我读着读着感觉血压都上来了,完全无法理解。但 ChatGPT 明显很清楚自己在做什么,而且是真的拥有独立完成整项任务的能力。
也就是说,我只需要出个主意,ChatGPT 4o 就能把余下的工作都搞定。好样的,AI,这项技术真的在短时间内取得了长足进步。我坚信 AI 辅助编程有着光明的未来,只是不确定人类程序员的未来还光不光明。
原文链接:
https://www.techradar.com/computing/artificial-intelligence/chatgpt-coded-a-game-for-me-in-seconds-and-i-am-simply-astounded-and-coders-should-be-very-worried
声明:本文为 InfoQ 翻译,未经许可禁止转载。
OpenAI 史上最长宕机:自研 K8s 成“拦路虎”,导致数小时无法修复