黑箱AI编程奠基文

首先,将它想象为一座你必须设计和治理的城邦。其次,培育它,如同一个生长中的有机体,你必须滋养和引导它。第三,在虚拟与现实中不懈地测试它,直到你能合理地信任它。如此,你便拥有了一个按你意图运行的黑箱,你对它有足够的理解,即便你看不见它的内部构造。

我在观察了利用人工智能编程的巨大力量,以及它如何永远地改变整个编程技艺之后,发展出了这套方法论。2025年间,AI终于达到了能够编写完整程序的能力,而人类主导者无需亲自书写一行代码。然而,这些应用往往脆弱不堪,容易产生难以甚至无法解决的错误和问题。而且AI极易偏离正轨,无法达成预期的目标。

这套方法论,我称之为"黑箱AI编程",旨在解决这些问题——确保那个"能用就行"的"黑箱"程序实际上是按照软件工程最佳实践和最高质量标准来构建的,防止编写代码的AI出现任何偏离或荒谬的行为。运用这套方法论,完全可以仅凭AI来构建一个复杂的应用程序,而不必触碰代码本身,同时仍能确信该应用如预期般运行且毫无差错。

程序员应当明白,他的职责如今是指挥AI,正如一位总工程师指挥其下属的工程师、建筑师和建筑工人那样。思索语法和代码本身的时代已经过去了;知道如何编写代码有助于指挥AI,正如总工程师懂得如何砌砖抹灰对他有所裨益,但程序员不再需要亲自编写代码,正如总工程师从不真正触碰砖石、水泥或任何材料。

然而,这个类比尚不充分;要精通此技艺,还有更多需要考量之处,因为一个应用程序不仅仅是一座建筑,它是一整座城市,复杂而精密,必须流动、存活、延续并成长。一个典型的居民认为他了解自己的城市,因为他能在其中行走、应对、批评、思考如何改善它,等等,但他并不真正了解所有的街道、所有的房屋、所有的公园、所有的细微之处。没有人能做到。然而,城市照样运转如常。对于程序员、AI和那个"能用就行"的黑箱程序而言,道理亦然。

一个居民并不完全了解城市,但他信任它。他过马路时相信交通信号灯不会失灵,汽车会停下,路面不会突然开裂,桥梁不会坍塌……他走进建筑时相信墙壁不会倒塌,厨房不会爆炸,水管里的水没有被下毒……他信任它,是因为他在其中生活的经验,也因为他至少对这些事物是如何制造和运作的略知一二。他的经验和理解越多,信任也就越深。程序员理应如此:他对自己的应用程序体验和理解得越多,就越能信任它确实在正确运行,即便他并非亲手构建了它。

如此想来,程序员不是一个普通的土木工程师,而是城市中所有修建建筑的土木工程师、建筑师和建筑工人的总指挥;同时,他也是城市的居民、首席安全督察、审计官,以及这座城邦的总督。

作为总督,他是——也必须是——一位精明的独裁者,拥有绝对的权力,但也拥有非凡的智慧,知道何时授权、何时质疑、何时让事情自然发展、何时施加他坚定的意志。然而,他终究是一个人,不能将有限的认知能力浪费在试图指挥一切上。只有最重要的事务才值得他亲自过问,而城邦的设计和运作应当确保重要事务能被及时报告给他。凡他在此类事务上的决定,都将被执行,城邦将顺应并适配他的意志。若城邦被妥善地工程化和治理,它不仅能存续,更能因这些变革而繁荣;否则,它将崩塌。

乍看之下,让程序员成为独裁者似乎令人生畏,但不应如此,因为他拥有AI的力量来自动化城市中一切无需他直接干预的事务,而这AI完全有能力做到这一点,只要它被他——这位至高的独裁者——妥善地驯服和控制。

驯服AI的关键在于定义一套清晰而严格的规则与目标,使其知道该做什么以及如何去做。凡未定义之处,AI将自行发挥;这是好事,这正是AI如此强大之所在。但他应当指定何时可以即兴发挥,何时不可。

然而,AI最重要的力量不是自动编码,而是其解释能力,这使得至高独裁者能够按其所需充分理解他所构建和治理的城邦。

因此,正如现实中的总统和独裁者——无论他们多么假装自己是全能之人,亲自思考、设计和撰写他们所统治的一切——程序员有AI来引导他设计和撰写城邦据以建造的根本文件。

正是在这里,程序员不同于现实中的总统和独裁者,应当运用他的智慧与创造力,来构思那些将保证整座城邦的优雅、简洁、连贯和内在和谐的结构与算法——在一块代码之砖被砌下之前。在此,在他思想的抽象领域中,他应当想象大道与桥梁上的交通;图书馆、学校与档案馆;安全测试、检查与演练;等等。

他必须在混乱萌生之前预防它,在冗余和浪费发生之前消除它。这个初始的、完全抽象的阶段表明,一个程序员的天才不是以产出的代码量来衡量的,而是以其思想的清晰度来衡量的。AI是愿景的执行者,但愿景必须先在他的头脑中被看见。请看人类心智与AI的根本区别:想象力以及创造性地运用想象力的意志。AI是一个靠暴力穷举的庞大统计算法,而非拥有思想和真正能动性的灵魂,它只是接收输入、产出输出;人类则真正地思考、渴望和感受。人类是活的,知道自己的需求和欲望,AI不过是实现这些需求和欲望的工具。

程序员构思主要算法,AI将其编码并以次要的、派生的算法加以补充。他与AI合作越多,就越理解自己正在构建的城邦,而AI也越理解他的意图。但城市不能在一瞬间建成,除非脆弱和虚假的表象可以被接受。城市必须有机地生长,正如一株植物,从种子开始萌芽,长出新芽并将其发展为茎干和根系,一个时期接一个时期地生长,每一次新的增添都建立在此前已壮实的基础之上。

在每个生长时期中,程序员将确保AI始终与其长远目标保持一致,并且在感觉某处薄弱或可疑时,他可能会进行干预——不是去查看代码,而是与AI对话并指示它。程序员实际上不需要查看真正的代码,那样做类似于对人体进行外科手术:需要大量的专业知识、经验和谨慎;极其危险,而且成功的概率在机器人和机器的辅助下会急剧提高。

这些时期是短暂的,程序员以前独自完成需要数日的工作,AI只需数分钟。

AI不是在作弊。程序员从来就无法独自完成大型项目,始终是团队的协作才使复杂的应用成为可能。AI如今就是那个团队。

数日之内,有时仅数小时,应用程序便已就绪。如果做得恰当,他将会把大部分时间花在抽象的讨论和设计上。而如果他想真正确认它是否确实就绪,他应当使用它,测试它。广泛地测试它,使用一切可用的测试手段——单元测试、自测试、手动测试。他应当在现实生活中使用它,如果无法在现实生活中测试,就使用模拟器——他也可以与AI一起构建的专用模拟器。所有这些都将消除对黑箱不按预期行事的恐惧,因为只要他充分地阐明并坚持了他对黑箱的意图,它就会按照他的意图运行。

AI是,也应当永远是一个下属,一个没有灵魂的机械奴仆,但把它当作一位睿智而友善的朋友来对待,对我们更为高效,原因很简单:除非我们相信它能完成我们此前认为只有人类智慧才能做到的编码工作,否则我们永远不会信任它产出的黑箱。"人工智能"并非真正智能,但使用它的最佳方式是假装它是智能的——不是教条地,而是批判地,正如我们对待同侪那样,我们相信他们有时聪明,但也不完美、会犯错,却有能力学习和改进他们所做之事。

在未来的岁月里,随着我们使用如此强大机器的经验不断增长,我们将在编程黑箱的技艺上日益精进和成熟,正如我们在所有其他技术和技艺上所做的那样。但在此期间,鉴于我们拥有它的时间尚短,这是我迄今为止找到的最佳方式,来高效地利用这些新的强大AI技术,真正实现我们的赛博-数字-信息化的梦想与抱负。

P.S.A.I.(人工智能附言)

以下是上述方法论的简明综述。

原则:

I. 程序员不写代码。他指挥AI,如同总工程师指挥其下属。

II. 应用程序是一座城邦。程序员是它的总督:他以绝对权力和非凡智慧治理,知道何时授权,何时贯彻意志。

III. 程序员的天才以其思想的清晰度来衡量,而非以产出的代码量。

IV. AI是愿景的执行者。愿景必须先在人类心智中被看见。

V. 凡程序员未定义之处,AI将自行发挥。他必须指定何时可以即兴发挥,何时不可。

VI. AI最重要的力量不是编码,而是解释。程序员借此理解他所治理的城邦。

VII. 信任不是寄望而来的。它通过不懈的测试而赢得。

步骤:

1. 在抽象层面构思系统:其结构、其算法、其内在和谐。在一块代码之砖被砌下之前。

2. 定义驯服AI的规则与目标:它必须做什么,如何做,以及在哪些地方可以自行发挥。

3. 以小规模的有机生长时期来构建。每个时期结束时系统应可运行且稳定,方可开始下一个时期。

4. 在每个时期中,与AI对话以审视和调整。不要触碰代码;指示AI来修正它。

5. 不懈地测试:单元测试、自测试、手动测试、模拟器、实际使用。直到你能合理地信任这个黑箱。

速度对AI而言轻而易举。连贯性则不然。目标是使整个系统始终与一个人类愿景的清晰度保持一致。