昨天看到消息说,百度旗下的智能代码助手“文心快码”正式发布了 AI 架构能力。这是我期待已久的特性,如果你用过 AI 代码助手的话,会知道当下的各个产品在生成代码时,普遍存在的一个问题是由于 AI 不理解全局,不懂业务,所以生成的代码很多都不能直接用,需要工程师二次修改。 现在,文心快码从 AI 程序员升级为 AI 架构师,意味着它已经具备了架构能力,特别是对业务的全局理解能力。在这个基础上,代码生成、代码解释、疑难问题定位的能力都可以再上一个台阶。目前市面上,目之所及,具备这个能力的产品,只有文心快码一家。今天我忍不住想来和你聊聊我的想法。第四季度业绩会上,微软 CEO 纳德拉说 Copilot 已经占了 GitHub 今年收入增长的 40% 以上。这个渗透率非常之高,纳德拉没明说,但话里话外,我感觉 GitHub Copilot 应该是微软 Copilot 系列中付费率最高的产品。这两年,我使用过很多的大模型产品,到目前为止,我认为代码生成是大模型最具价值,也最擅长的场景,甚至没有之一。我们很难用清晰、量化的标准来定义什么样的文章是好文章,什么样的照片是好照片,什么样的音乐是好音乐,因为它们都带有主观的成分。不同的人喜好不一样,各花入各眼,标准自然也就很难统一。只要你的代码遵守代码规范,能够通过测试,那就是好代码,至少是 60 分的好代码。对于这种规则和边界都清晰明确的场景,大模型再适合不过。去年年初,很多人讨论 AI 编程是否会让程序员失业,当时大家幻想的是只要把需求告诉给 AI,那它就能生成出来对应的代码。现在看来,这种想法过于理想化,AI 很难做到这一点。拿文心快码举例子,它的英文名叫 Baidu Comate,Comate 是 Coding Mate 的缩写。简而言之,它是一个陪伴工程师左右的助手,目标是帮工程师更好更快地写代码。成为好的助手,提供代码补全、问题思路建议、测试用例生成等方面的帮助,而不是所谓的替代工程师。助手这个词,有些抽象,毕竟,现实工作中,没见哪位工程师拥有助手。文心快码提出来的 AI 架构师的概念,倒是更贴切一些。还记得早些年,我们公司一位技术非常厉害的架构师曾经总结过一句话,他说:“架构师不是团队中最聪明的人,他是让其他人变得更聪明的人。架构师应该成为团队能力的放大器。”你想想,一个好的编程助手,不就应该像一个好的架构师那样吗?既拥有良好的技术视野,同时又懂业务逻辑,还能写出一手代码。也正因为具备这样的能力,所以架构师才能成为团队能力的放大器。如果你留意的话,会发现目前市面上的智能代码助手中,只有文心快码推出了 AI 架构师的能力。我不想捧一踩一,实事求是地说,大家各有千秋,相比其他同类产品,文心快码最突出的优势是对业务的理解能力。而这其实也是架构师和程序员的重要分水岭。就目前的开源、闭源的大模型能力而言,我相信无论是哪家公司的产品,都已经利用了开源数据集,进而具备了扎实的技术领域知识,实现代码补全、代码建议并不难。难的是能不能基于业务逻辑给出更准确的建议。同样一个报错信息,你去百度里搜别人的经验,只能得到一个泛泛的解决方案。而问自己团队有经验的架构师,人家就可以针对性地给出建议。拿写单元测试举例子。每一个代码助手都能够快速生成单元测试,但生成质量怎么样?测试覆盖率够不够?这才是关键。写好单元测试,至少需要具备两个能力,第一,技术能力;第二,业务能力。技术能力毋庸置疑,大模型已经掌握了足够多的领域知识,对于单元测试这类复杂度不高的代码,它相当轻车熟路。但懂业务却没那么容易办到。而如果不懂业务的,就没办法从质量保证的角度整体思考单元测试.....所以最终的质量和覆盖率自然也就好不了。我知道的一个细节是,过去两年时间,文心快码在“懂业务”这件事上做了非常多的工作。你可能会觉得懂业务还不简单,开发一个 RAG 的能力就行,说归说,具体从实践的层面看,难的是如何做能力融合。继续以刚才讨论的单元测试为例子,文心快码在这个场景中,有两个 Agent 互为“对抗”,一个 Agent 试图理解代码,并生成足够多的测试用例。而另外一个 Agent 则负责从业务和结果的视角,不停地拷问这些代码能否执行,测试覆盖率是否足够高。这就是能力融合。基于文心一言和 RAG,文心快码构建了很多个 Agent,它们互相配合,最终来支撑 AI 架构师的能力。AI 程序员可以生成代码,而 AI 架构师则意味着它可以在理解业务逻辑、理解架构、理解调用链的基础上,更准确地生成代码,解决编码过程中的疑难问题。我再具体一点,一个好的架构师脑海中肯定有一张图,他充分了解某段代码在整个的架构中处于什么位置,调用链路以及上下文分别是什么。也正因为拥有全局视角,所以架构师可以更快速地定位问题、解决问题。但一个普通的工程师,却不一定具备这样的全局观。文心快码的 AI 架构师能力,在编码上比不过一个资深架构师,但在经验丰富度上,肯定远超他。毕竟,大模型所具备的知识体系,以及能够消化的信息,早已经远远超过人类。这也是文心快码最酷的地方。第一,在代码解释功能中,文心快码能够理解你圈选的代码在整个业务中的意义。它甚至还可以贴心地生成流程图,或者时序图,来帮你理解调用逻辑。第二,在智能 Debug 中,文心快码能够充分理解代码的上下文。调试错误时,它不会给你模棱两可的建议,而是直接定位到具体某一行代码,并附上修改建议。第三,可以针对目录、多文件、单文件一键生成单元测试,并且生成的 Case 贴近真实场景,100% 有效。最后,我再放一个小视频,你感受下文心快码生成单元测试的速度和质量。目前,百度内部已经有 30% 的代码由文心快码生成。我知道很多工程师都有一个架构师梦,或许你可以把文心快码当成一个性格好,还随时在线的架构师师傅,你和他交流、切磋,让他手把手带着你,通往架构师之路。