引人入胜的 GPT

最近用 GPT-4 用得比较入迷,我几乎每天都会在 ChatGPT 的 App 上向 GPT-4 问各种各样的问题,不过问得最多的还是技术问题。尽管 GPT-4 没有使用网络,但是大多数时候它还是能给我比较准确的答案。就算答案有点问题,我也可以通过调整问法来得到我想要的结果。不得不说,GPT-4 比之前的 GPT-3.5 要聪明太多了。

回想大半年前,ChatGPT 刚出来的时候,办公室里的小伙伴们让它写了一些代码后便都被其震惊了,我也深深地感受到这将与之前接触过的很多 AI 技术有着某种程度 “完全” 不一样的东西。以至于 GPT-4 出来之后,黄教主称其为 iPhone Moment,我潜意识觉得理所当然。深度用了很长一段时间 ChatGPT 之后,我完全觉得 LLM 肯定是未来颠覆软件工程的革命性技术。本文就来毫不负责任地漫谈一下(刚好今天健身听了一个很有意思的 Podcast 有感而发)。

LLM 如何改变软件工程

其实早在 ChatGPT 未发布之前,GitHub 就使用 GPT-3 开发了 Copilot 编程工具,顿时就让广大开发者的编程效率提升了很大一个档次。为什么 GPT 模型会有这么强的代码能力 ?回想起 GPT-4 的发布会,主持人光是用相机拍了一张手绘 UI 草图,GPT-4 就能从图像中识别出对象并根据草图自动生成相应的网站代码。这个演示我当时感觉觉得极其酷炫(可能 10 年后看这件事会觉得平平无奇):

  • GPT-4 具备了多模态的能力,至少能识别图像和文字;
  • GPT-4 的代码能力非常强大(这本质也是一种推理能力);
  • GPT-4 可以用生成代码的形式来实现某种功能的泛化,比如 GPT-4 可以通过生成操作机械臂的指令或者代码来操作机械臂;通过生成前端代码来进行图像绘制等等;

总而言之,GPT-4 可以非常强大地做到理解和生成代码

在几乎所有的软件工程理论中,人类都是核心代码的主要生产者。尽管我们会用各种编译器技术来自动生成代码,但很多时候并不是最核心的代码(或者说需要由某种人工产出的代码编译而来)。项目中起决定性作用的代码依然需要人类来编写。既然人类是最关键的生产要素,那么软件工程里很大程度就是以人为核心,管理和处理复杂度的艺术。人又是很难被扩展的,一味的增加人数并不总能够加快软件开发进度,正如《人月神话》所说的,“九个女人不能在一个月内生一个婴儿”。

如果角色发生了改变呢 ?假如人不再是核心代码的主要生产者,而 LLM 能够独立自主理解人类意图并编写代码,软件工程又将迎来怎么样的革命呢 ?

首先,LLM 理解人类意图并编写代码这件事肯定不再是科幻小说,而是真实发生着的。尽管目前 ChatGPT 离写一个完整的工业级代码还有很大距离,但是其能力的迭代速度相当惊人,假以时日超越人类大多数工程师的代码能力估计不是问题。试想一下,一个普通人类穷极一生都只能看完全世界极一小部分代码,而 LLM 在预训练过程中就已经被喂了相当惊人的代码。代码是逻辑结构非常好的文本数据,让 LLM 生产代码其实使它的强项。说实话,工程师们写的大多数代码,其实大多是时候已经是其他人已经写过的代码,逻辑都是高度重复的。

假如 LLM 已经进化到可以写大多数工业级代码,我觉得下面几件事一定会发生:

  1. 软件项目迭代周期会越来越短,功能会越来越复杂,AI 生产的代码估计将会占大多数。人类必须强依赖 AI 才能管理其复杂度。回想起几百年前,人类造区区几层楼都会花上几年时间,而如今造个摩天大楼几个月足矣,而且需要的人更少。如此一来,我觉得未来软件可能会朝着超大一统的路线发展;
  2. 低技能的程序员一定会被淘汰,这几乎是毫无疑问的。尽管过人的代码能力对于一个程序员来说是非常重要的,但未来更重要的不是个人的代码能力,而是一个人多领域知识的灵活组合能力和与 AI 打交道的能力。你需要将你的需求准确地用各种 AI 工具进行实现。我觉得到这时候,领域知识不再是很深的门槛,普通人借助 AI 能力可以轻而易举地写出领域专家的代码。
  3. 传统的软件开发流水线将会发生变革,人类可能需要一种面向 AI 的敏捷开发。比如,人类可以用某种精确的自然语言来设计整个项目的框架逻辑,然后将这个框架设计交给 AI 来自动生成代码。AI 不仅可以自动生成代码,还可以自动 Review 和测试代码,可以 7*24 小时日夜迭代功能。
  4. 编程语言可能没那么重要,因为 AI 完全可以将整个项目从一种编程语言翻译成另一种编程语言,这无非就是逻辑的重组。

人类进入工业革命的一个标志就是可以利用机器来生产机器,从而大幅提升人类生产效率。而人类进入 AI 时代的一个大的标志就是可以利用代码生成代码,从而大幅提升软件工程效率。到那时候,很多商业形态可能都将发生质的改变,因为不再需要那么多人就能实现以往几百人甚至几千人才能实现的软件项目。

AI Agent

联想起之前看到的一个项目 MetaGPT,尽管还只是一个比较原始的演示功能,但是基本展示了 AI Multiple Agent 的概念。想当初上大学的时候,选修了一门 《人工智能》(那时候的人工智能与今天以深度学习为主的人工智能不太一样,更多的还是偏数理逻辑),那时候教材反复提到一个 “Agent” 的概念。我当时很难理解这个词的含义,今天听到的一个总结挺到位的:Agent 就是具有自主决策能力并做出动作的 AI 智能体

上面提到 LLM 将给现在的软件工程带来天翻地覆的改变,我相信 AI Agent 一定会其中扮演非常关键的角色。如果把 LLM 比喻成大脑,那么当我们给 LLM 安装起手臂并赋予其自主行动的意愿和能力,那么它将进化成一个 AI Agent。多个 AI Agent 进行通信沟通,模拟人类来解决一个难题,这是目前一个非常有意思的课题。比如之前比较火热的斯坦福小镇,Character AI 等等(可能这些还并没有达到 Agent 的层面,更多是智能 NPC)。

AI 的民主化

当然,这一切都是建立在 AI 能实现民主化:让普惠的 AI 能够像手机电脑一样让普通人都能轻而易举地获得。虽然现在大模型堪比造芯片,只有屈指可数的功能有足够的算力和数据来培育一个大模型,但是随着未来的技术演进,我觉得 AI 迟早有一天就被民主化(或者说是普罗大众化)。

到那一天,一个普通人能轻而易举且相对廉价地用 AI 做到在今天看来完全不可思议的事情(比如让 AI 写一个数据库、写一个操作系统等)。

希望那一天快点到来吧,我们现在能做的就是要不断地拥抱新思维、新工具和新技术,从而来更好地实现自己的目的。