一位程序员:AI写代码虽然强,我的价值是让它懂组织的价值观
人机协作的价值在于对齐而非能力
人们常把当前AI对软件工程的接管与AI在国际象棋领域的崛起相提并论。国际象棋AI从远弱于专业棋手,发展到比最强人类棋手还要强得多。在这两个阶段之间,有一段由“半人马”主导的中间时期:人机协作的组合比单独的人或单独的AI都更强。很多人认为我们当前正处于软件工程领域的“半人马”世界。按照他们的说法,编程AI的能力还不足以取代工程师,但AI辅助的工程师在编程上比单纯的AI和单纯的人类都更强。
这种说法部分正确,但却是错误的思考方式。AI辅助的工程师确实更强,但与下棋的“半人马”不同,他们实际上并不是在编程能力上更强。当我让智能体写代码时,它们比我犯的错误更少[1],而且速度要快几个数量级。它们写的代码总能编译通过,很少出现竞态条件或其他并发错误,在移动浏览器上也能正常工作,诸如此类。
这并不意味着我可以放任AI独自工作。纯粹靠“氛围编程”在工作场合会产生糟糕的结果。但那并不是因为代码质量差,而是因为品味差:代码不可维护,为了满足虚构的需求而牺牲重要需求,与某个功能或服务的长期战略相矛盾,等等。
换句话说,我的主要价值不在于帮助AI写出更好的代码,而在于让AI与我所处组织的价值观对齐。人机协作的价值在于对齐,而非能力。
前沿模型与工作中的程序员并不对齐。它们执着于一系列大概是为了满足RL评分器的行为:在函数上方写大段注释、生成大量毫无用处的单元测试、在他们设计的网站上到处添加小段文字,等等。与智能体协作的关键在于注意并纠正这些行为。这就是为什么我的提示建议是明确谈论你的高层价值观:这是为了从一开始就避免明显的错位。
这对软件工程师来说是个好消息。如何训练出能力更强的模型已经众所周知:更大的模型、更多更好的数据、更好的强化学习环境,等等。然而,如何让模型更好地对齐却还没有得到充分理解。有很多能力很强的模型表现出与人类价值观严重错位的行为。事实上,这正是AI末日论者立场的主要支柱之一:对齐比能力难得多,因此我们最终可能会得到危险地超级强大但对齐不良的AI模型。
对齐也比能力更依赖于具体情境。能工作的代码就是能工作的代码,无论上下文如何(这在一定程度上就是为什么它相对容易训练)。但让模型与一家公司的技术价值观对齐,则因公司而异,任何换过公司的软件工程师都知道这一点。这几乎就像重新学一遍工作。因此,训练一个对齐的编程模型不仅需要恰好对准正确的价值观集合,还需要创建一个能实时适应各种可能价值观的模型。
“氛围编程”最大化主义者如DHH认为,AI模型(或很快将会)比人类程序员强大得多,以至于我们应当停止阅读代码。最终将根本不存在程序员这种东西。如果只关乎能力,他们或许是对的。但——对软件工程师来说幸运的是——好的代码还必须与它所嵌入的系统及组织的技术价值观对齐。AI模型很擅长写代码,但并不擅长做这件事,而且不清楚它们短期内能否做好。我们所有人[2]可能还能保住自己的工作一段时间。
[1] 例如,我已经记不清上次看到智能体犯差一错误是什么时候了。我确实偶尔会抓到纯编程错误,通常发生在我有大量技术领域知识的领域。如果你在分布之外的场景工作,我怀疑更容易胜过这些模型。↩
[2] 初级工程师的日子仍然会很难过。↩