AI generated English translation of this post is available on Medium.

今年我工作上一件重要的事情就是转到了 AI 相关的项目上,目前才刚刚开始,有很多方向可以尝试,也有很多东西需要学习。从业十多年,基本上一直是在做业务系统开发,这次有机会做些不一样的事情,我觉得很有意思也很有挑战。

我的这个 Blog 已经荒废多年,好多次想要写一些东西,都因为各种原因搁置了。最近我又在想,我是不是可以试试借助 AI 来写 Blog 呢?这样既能尝试一些新的技术,也能让这个 Blog 继续有一些内容。也许将来我只需要有一些想法,AI 就能帮我把这些想法写成文章,这样就不会再有写不出来的困扰了吧。至于话题嘛,也还是从 AI 开始好了。

这两年 AI 的发展很快,很多方向上都有了重大突破,即使像我这样原本并非这一领域的人,也常常能在各种渠道看到 AI 的新闻。前几年 GitHub Copilot 的出现,更是在日常编码中让我时时有惊喜。我也常常在想,AI 在未来究竟会给我们带来怎样的改变?最近各种新模型的出现,更是常常让我有各种脑洞,今天先记录一些。

现在多模态模型已经可以理解图片和视频,将来可能有针对 UI 训练的 AI 模型,它完全可能达到甚至超过普通人类对 UI 的理解能力。人类是通过阅读操作手册、帮助文档来学习如何使用一个应用程序,AI 也可以做到。

我觉得很快 AI 就可以打破人机交互的界限,这会在软件开发领域发生很大的变化。现在我们开发应用程序,提供给用户的是一个 UI,无论是 GUI 还是 CLI,最终都是为了能够让人类用户可以与程序交互,从而可以使用程序的功能。UI 是使用程序的一扇门:它既是一条通路,也有自己的限制。用户只能按照 UI 的规则来使用程序,就像沙发太大可能就搬不进大门一样。如果应用程序只提供 UI 而没有提供 API,那么就不能通过其他程序来使用这个应用程序的功能。当然,实际上我们会用很多方式来绕过这个限制,比如爬虫、RPA 等等。只是当前这些方式都并非通用方案,爬虫、RPA 大都需要根据场景定制开发,而且容易因为 UI 的变化而失效。总的来说,现在我们开发应用程序时,还是可以假想用户是人类,人类有自己的能力限制,所以很多极端的情况我们不用考虑太多。

多模态模型继续发展,未来的情况就完全不同,AI 将可以直接理解程序的 UI,并且可以通过 UI 来操作程序。有了这种能力的加持,程序与程序间的交互可以不再依赖 API,UI 即 API。这样虽然仍旧需要按照 UI 的规则来操作,但是就完全突破了人类的能力限制。并且,这和通过爬虫、脚本把 UI 封装成 API 完全不同,这是可以做到通用而不需要按场景定制的。

这么想来,一个很大影响就是打破了应用程序的封闭性,打破了边界。可以从两个角度来看待这种影响。

乐观地来说,很多旧的东西不用升级就可以融入现代的世界,原本因为需要人机交互而断开的东西,突然间就都可以连在一起了!举个例子,现在报销或者保险报案,需要人工处理,没什么难度,但是繁琐费事。其实目前电子发票已经普及了,理论上我们可以开发一个程序自动收集发票然后提交报销,但实际上各个系统间还是有很多 gap 导致开发这样一个自动化的工具并不容易:电子发票可能是通过微信公众号发过来的,点击下载又会要求用浏览器打开一个页面,最后才能拿到 pdf 文件;而提交报销单时,需要用到另一个系统,比如在一个网页表单中填写内容,附上发票文件再提交。这两个系统都不提供 API,因为它们原本就是为人工操作设计的,因此开发自动化工具连接两个系统就比较困难。即使通过逆向工程、自动化脚本等方式实现,也很难扩展——发送发票的公众号成千上万,每家操作方式都可能略有不同,根本不可能做得过来。不过,等 AI 模型再发展一些,能够理解 UI,这就让这么一个自动化工具的实现变得可能。甚至并不需要写多少代码,prompt 也可能很简单,就是“帮我从微信里看看有没有今天吃饭的发票,然后提个报销单”这么简单。

从另一方面来看,开发应用程序所需要考虑的东西就变得更多且更复杂。我们不能再认为自己开发的应用使用者是人类,它也可以是机器,它可能会以超出人类极限地方式来使用我们的应用。简单的例子,现在写代码偷懒时我们可能会说“这个按钮,人怎么可能点这么快……就可以了”,这种话就不再有意义了,人是不会点这么快,可是你开发的东西又不是只给人用,别再偷懒不写校验、限流、防抖……了。现在很多系统都用验证码来防机器人,但其实很多验证码已经防不住 AI 了,从最早的认字,发展到认图、拼图、选字……不可能无限度复杂下去,真的搞成智力题,人也没法全都答上来,说不定 AI 还答得更好。一些反爬虫技术也会变得毫无意义,比如通过数据混淆,在前端通过图片拼接来显示商品价格以防止爬虫获取价格,就完全没有用了。价格总是要显示给人看,人能看到,AI 也能看到。还有些例子比如很多应用为了用户黏性而做的一些设计,抽奖、签到、打卡等等,都会变得没有意义。我完全可以让 AI “帮我把手机上能签到的 App 全给签一遍”。所以,不仅仅是技术上有很大挑战,产品设计上也肯定会有颠覆性的变化,我们将不能再利用人类的缺陷来设计产品。

AI 技术还在快速的演进,未来的世界会变得更加有趣,也更加复杂。无论我们是否期待,我相信巨大的变化很快就会到来,我们每一个人都要做好准备。