计算机系统应用教程网站

网站首页 > 技术文章 正文

AI 软件工程师 Genie ai和软件工程师的区别

btikc 2024-10-21 04:20:17 技术文章 4 ℃ 0 评论

大家觉得我们离AI机器取代程序员的时代有多远?最近一家名为Cosine的创业公司推出了一个令人瞩目的AI模型,名叫Genie。这个模型被称为目前世界上最强的软件工程模型,在Bench评估中得分高达30.08%。

要知道Genie在SWEBench上的得分比之前的最佳成绩由亚马逊的Q和Code Factory保持的19%整整提高了57%,在Genie Lite上更是达到了50.67%的惊人成绩,超过之前的43.00%。

在深入探讨Genie之前,我们先来了解一下SWEBench。这是一个用于评估AI模型软件工程能力的基准测试,它涵盖了软件工程的多个方面,包括问题分解、相关代码查找、代码检查以及实现可用解决方案。所以Bench的出现为我们提供了一个相对客观的标准来衡量AI在软件工程领域的表现。

那么Genie是如何做到如此出色的表现?关键在于它的训练方法。Genie使用了专有的私有数据进行训练,这些数据相当特别,它们编码了人类的推理过程、完美的信息谱系、渐进式知识发现以及源自真实软件工程师工作的逐步决策过程。简单来说Genie被训练得更像一个真正的人类工程师。

在Genie之前,许多AI模型尝试在大语言模型的基础上采用prompt交互的方式来实现AI软件工程师,比如Cognition Devin、Agent等。但这些方法存在一些明显的缺点,它们往往难以处理复杂的上下文,对于全新的问题也缺乏灵活性。而且它们的推理过程常常不够透明,难以解释。

Al agent Genie则采取了完全不同的方法,通过实际训练而不是简单地提示基础模型。Navigating Unc这种方法使得Genie在面对未知情况时,能够表现出更高的适应性和创造力。

在研究过程中,Cosine团队发现了一个关键点,Al agent能够在整个项目中找到正确的代码位置,非常重要。这听起来可能很简单,但实际上是一个巨大的挑战。想象一下,在一个包含数百万行代码的大型项目中,如何准确定位需要修改的几行代码,这需要对整个项目结构有深刻的理解。

Genie的架构最初也面临着挑战,它最初受到短上下文窗口模型的限制,团队尝试了各种压缩和分块方法,但最终得出结论,唯一的方法是使用更大上下文的模型。然而,当时并没有这样的模型可供训练。幸运的是,不久之后,他们获得了训练长上下文OpenAI模型的机会,这成为了突破口。

Genie的训练数据包括多种编程语言,以及不同类型的软件开发任务。这些数据的混合比例经过精心设计,以反映当前最受欢迎的编程语言和常见的开发任务。比如:javascript和python各占21%,TypeScript和TSX各占14%,其他语言如Java、C井、C加加等各占3%。

在任务类型方面,特性开发占25%,bug修复占20%,重构和小改动各占15%,测试编写占15%,文档编写和更新占10%。

Genie的推理过程包括四个主要步骤:规划、检索、代码编写和代码运行。这个过程模拟了人类软件工程师解决问题的方式。首先,Genie会对问题进行规划,然后在代码库中检索相关信息,接着编写或修改代码,最后运行代码以验证结果。

在训练过程中,Cosine团队使用了一种创新的自我改进技术,他们利用早期版本的Genie生成合成数据,然后将这些数据注入到下一版本的训练集中。这种方法使得Genie能够从自己的错误中学习,不断提高性能。

展望未来,Cosine有着雄心勃勃的计划,他们计划扩展模型组合,开发针对不同复杂度任务的模型。他们还打算为特定代码库fine、这将使Genie能够完美理解大型遗留的代码库,即使是用不太流行或专有的语言编写的。

值得注意的是,由于保护专有方法的需要,Cosine决定不公开模型的内部工作过程。但为了保证透明度,他们已经在GitHub上公开了最终输出供人验证。目前Genie正处于等待名单阶段,感兴趣的用户可以申请访问权限。这种谨慎的推出策略显示了Cosine对于AI伦理和安全的重视。

Genie的出现是否意味着程序员即将被取代?我认为答案是否定的。相反,Genie更像是一个强大的辅助工具,能够大大提高程序员的工作效率。它可能会改变软件开发的方式,但不会完全取代人类程序员的创造力和洞察力。

本期第一次大量采用AI来制作视频会有不少问题,欢迎评论区给出宝贵的意见,我们下期再见。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表