Press "Enter" to skip to content

大模型时代的程序员

以下视频展示了Apache SeaTunnel开发者每天的工作流程,辅助工具为Co-Pilot。如果您还没有接受像Co-Pilot、ChatGPT或私有大规模模型这样的开发辅助工具,您可能会发现在未来五年内,您的行业地位会迅速被超越。那些擅长利用AI编码的人可以将他们的开发速度提高十倍,相比之下,那些没有这种技能的人则无法做到。这并不是夸张——在阅读完这篇文章后,您可能会对AIGC如何提高开发效率有一个全新的视角。

用大模型颠覆传统的初级程序员培训:赋予技能与经验

过去,初级程序员会由导师分配任务,教授基本方法,然后在他们编写代码时进行指导和纠正。他们通过经验和指导逐渐提高自己的熟练程度。

然而,大模型的出现完全改变了这个过程。大模型具有广泛的知识,甚至具备一些基本的推理能力。它们经历了无数次的实践,在公司内部学习了各种代码和业务定义。它们面临的情况远远超过导师们当时面临的情况。它们根据开发者的需求和目标提供潜在的答案。

这就像有一个无所不知的“导师”随时为您提供代码的参考和学习。初级程序员经过学习和调整后,可以提交超过他们个人技能水平的代码,准备进行同行评审。

那么,为什么我们不利用大模型来提高我们的开发效率呢?

如何利用大模型进行辅助编程?

目前常用的工具包括ChatGPT、Co-Pilot和私有大规模模型。

根据编程场景的不同,可以采用不同的方法:

显然,人类最适合处理具有挑战性和创新性的架构或新的业务场景代码。对于重复使用或类似算法,使用Co-Pilot可以快速提高效率。在类似场景中生成代码时,可以使用ChatGPT进行微小修改。私有大模型适用于数据和代码安全至关重要,并且模型对于您的业务知识的熟悉程度很重要,需要进行微调的场景。

有人可能会认为,并不是每家公司都能负担得起私有大模型。然而,这是一个误解。您不一定需要训练一个全新的私有大模型。对于大多数公司来说,优化(微调)一个现有的开源大模型以理解您的业务背景就足够了。这个过程只需要1-2个图形卡(例如3090/4090)和几个小时的配置时间。

利用私有大模型可以直接实现以下功能:

轻松访问所需的软件功能。

高效浏览复杂的用户手册和规则。

辅助编程、Txt2SQL,提高数据程序员的效率。

利用私有大模型进行编程辅助比您想象的要近。如果您对AIGC驱动的自动化编程时代仍然持怀疑态度,可以考虑下面的示例,看看开源项目如何利用AIGC提高开发效率。

大模型驱动的自动化编程示例:Apache SeaTunnel

Apache SeaTunnel的愿景是“连接一切,以闪电般的速度同步”。这个雄心勃勃的目标旨在连接市场上的所有数据源,包括数据库、SaaS、中间件和BinLogs,实现最佳同步。对于任何单一公司来说,这是一个不可能完成的任务,即使是人类在成千上万种SaaS软件选项和不断变化的界面中也难以实现。那么,在人工智能时代,Apache SeaTunnel背后的核心团队是如何设计这样的软件的呢?总体结构如下图所示:

首先,核心计算引擎是专为同步而构建的。与Flink或Spark不同,它专注于高效利用内存、CPU和带宽,并确保数据一致性——这些方面缺乏现有的基准。因此,大部分代码并非借鉴,而是由核心工程师直接开发,全球专家持续提供输入和改进,以跟上尖端技术的步伐。

其次,核心数据库连接器(如Iceberg连接器)是复杂的实现,注重准确性和高数据传输效率。虽然这些仍然主要依赖于人类的专业知识,但它们可以借鉴现有的代码和基于云的实践,辅以Co-Pilot作为辅助工具。大模型通过补充传统算法和重用代码片段来提供帮助,正如介绍视频中所示。

面对庞大的SaaS界面海洋——仅在MarTech领域就有5000多个界面——手动集成是不可行的。SeaTunnel核心团队制定了一项策略:抽象出十几个人类以前编写的接口,与ChatGPT合作,将它们转化为能够生成优雅代码的两个界面。ChatGPT可以理解SaaS界面文档,并直接生成相关的代码片段。在SeaTunnel中,这个功能被称为“AI兼容性”,促进了人工智能和人类之间的协作。这是程序员和人工智能之间的一种“调和”,确保每个人在其擅长的领域做出贡献。

此功能已在Apache SeaTunnel 2.3.1中发布。然而,作为一个不断发展的开源项目,它仍有改进的空间。鉴于代码的开放性,更多的爱好者有可能对这个功能进行微调和自动化。例如,我听说有一位开发者计划创建一个GPT编码器,监视GitHub上的SaaS问题,使用ChatGPT生成代码,并自动提交拉取请求——将人机协作推向极致。

大型模型驱动的自动化编程的挑战

虽然ChatGPT、Co-Pilot和类似的工具增强了编程能力,但它们并非无敌。在使用大型模型生成代码时,有几个挑战需要考虑:

  • 准确性问题。
  • 无法进行代码审查。
  • 有限的自动化测试能力。
  • 没有责任追究。

大型模型仍然会犯错误,这在一段时间内可能仍然是常态——即使ChatGPT4可能以90%的准确率生成代码。因此,简化代码生成过程至关重要,因为生成错误的代码是一个潜在的陷阱。在大型模型的快速代码生成之后,人工代码审查可能难以跟上,因为机器无法验证最终代码是否正确实现了业务逻辑。试图使用大型模型进行代码审查会揭示出许多看似重要但最终微不足道的改进,使逻辑正确性的评估变得模糊不清。

此外,自动化测试和测试用例生成对于大型模型仍然是具有挑战性的。虽然TestPilot在学术界广为讨论(请参阅康奈尔大学有关该主题的文章),但其在工程级应用上仍然遥不可及。

最后,问题是责任问题——这是一个哲学而非技术上的挑战。即使ChatGPT的准确率达到90%,更不用说假设性的99.9999%,你会相信它自动计算整个公司的工资并与银行进行直接的薪资转账吗?如果出现问题,谁来负责?并非所有的业务挑战都能通过技术来解决,大型模型也是如此。

未来展望

我们目前处于大型模型驱动的自动化编程的早期阶段。许多开发者仍在尝试Co-Pilot和ChatGPT的功能,大多数程序员尚未利用私有大型模型根据公司的上下文提高编码效率。但在未来的3-5年内,编程中的自动化辅助无疑将成为我们这一代开发者的基本工具:

  • 基础大型模型将缩小与ChatGPT之间的差距,提高可用性。
  • 开源大型模型将提高准确性和性能,为更多采用私有大型模型的公司带来改进的回报率。
  • 大型模型驱动自动化的门槛将降低,出现更多用于民主化大型模型训练的工具——超越Apache DolphinScheduler。
  • 技术经理对大型模型驱动的自动化编程的认识将增加,导致技术管理流程的调整。
  • 在当前的经济周期中,利用大型模型提高效率变得迫切。

因此,在接下来的几年里,如果你的开发过程仍局限于CRUD操作,无法利用大型模型将你的专业知识和业务理解提升10倍或100倍,你可能不需要等到35岁才被擅长大型模型编程的程序员取代。一旦他们的规模扩大了10倍,你可能会发现自己是那九个被抛下的人之一。

虽然这听起来有些危言耸听,但大型模型驱动的自动化编程趋势是一股不可阻挡的力量。我只是大型模型驱动自动化编程领域的一个新手探险者,我相信许多技术经理和架构师将加入大型模型驱动自动化的浪潮,不断迭代和优化人与大型模型在开发领域的关系。最终,这种协同将使程序员、人工智能和技术开发流程在为企业服务方面更加高效。

Leave a Reply

Your email address will not be published. Required fields are marked *