在人工智能领域,一项新的突破正在重塑我们对编程的认知。Cosine公司开发的Genie,一款超越了Devin的AI软件工程师,以其卓越的性能和能力,正在引领一场技术革命。Genie不仅仅是一个编程助手,它能够像人类软件工程师一样思考和行动,自主完成编码任务,甚至与用户协作解决问题。团队只有5人,如此高效,广大程序员们不禁感叹以及慌乱,不拥抱AI还有活路吗?
Waitlist地址:
https://cosine.sh/register
Genie的诞生,标志着AI在软件工程领域的应用达到了新的高度。它在SWE-Bench测试中的得分高达30.08%,轻松超越了Devin的13.8%。这一成绩的背后,是Genie接受了数十亿token数据的训练,通过Cosine的专有流程开发,并使用了OpenAI的模型。Genie能够模拟人类工程师的认知过程,从观察人类工程师的工作方式到模仿这一过程,Genie展现了其独特的能力。
Cosine的联合创始人兼CEO Alistair Pullen表示,Genie的能力远不止一个基准测试分数所能概括。它被设计成像人类软件工程师一样思考和行动,这意味着Genie能够理解复杂的编程任务,并提供创新的解决方案。Genie的代码存储在用户的GitHub仓库中,确保了数据的安全性和隐私性。
Genie的研发过程充满了挑战和创新。Cosine团队花费了近一年的时间整理数据集,包括来自真实工程师的大量软件开发活动。这些数据的获取和有效利用是极其困难的,因为这些数据本质上是不存在的。团队从追踪软件工程师的开发轨迹开始,收集pull request、commits、来自OSS存储库的issue等数据,然后通过取证方式导出推理过程,重建出人类是如何得到最终结论的。
Genie的技术报告中列出了训练数据包含的15种语言,涵盖了Java、JS、C、C++、C#、Rust、Python等热门语言,以及常用的Scala、Kotlin、Swift、PHP等。其中,JavaScript、Python、TypeScript和TSX是数据集中占比最多的语言。
这一专有数据集是第一版模型训练的基础,剩下的工作由自我对弈和自我改进完成。
Genie的自主性循环由四个主要过程组成:计划、检索、代码编写和代码运行。这些过程本身并不新颖,但由于Genie被训练成像人类一样执行任务,因此有了更大程度的改进。Pullen断言,通过使用这个数据集实际训练模型,Genie不再只是随机生成代码,而是像人类一样处理问题。
在模型开发过程中,团队主要使用了两个基准进行评估——SWE-Bench和HumanEval。Genie在SWE-Bench的表现非常亮眼,取得了迄今为止的最高分数。此外,团队还单独测试了模型的信息检索能力,特别是检索所需代码文件的正确部分的能力。测试中,Genie成功检索到了142,338行中所需的91,475行代码,得分为64.27%。
Cosine是通过硅谷著名的Y Combinator创业加速器成立的。该公司是一个人类推理实验室,专注于研究和整理人类执行任务的方式,旨在教会人工智能模仿、擅长并扩展这些任务。2022年,Alistair Pullen、Sam Stenner和Yang Li联合创立了Cosine,将其定位为人类推理实验室。他们希望从软件工程领域开始,推动智能的发展。
Cosine拥有一支规模不大但技术精湛的团队,已经在人工智能领域取得了长足的进步,Genie只是一个开始。Pullen在公告博文中表示,他们真心相信,能够为任何工作和行业重现人类推理。软件工程只是一个最直观的起点,他们迫不及待地想向大家展示正在研究的其他一切。
Genie的推出对软件开发团队具有深远影响,尤其是那些希望提高生产率、减少日常工作时间的团队。凭借自主处理复杂编程挑战的能力,Genie有可能改变工程资源的分配方式,让团队专注于更具战略性的计划。Pullen写道,工程资源不再是制约因素的想法,对他来说是一个巨大的驱动力。
Cosine为Genie的未来发展制定了雄心勃勃的计划。他们正在加速推进,通过Genie革新技术团队。他们的主要目标是平衡实际产品与前沿研究。这包括完善数据集以增强Genie的能力,扩展其模型组合,将工作扩展到开源社区,以及使用特定代码库微调Genie。随着公司不断完善Genie,将不断向客户发布更新,优化与这个人工同事的互动并收集有价值的反馈。
Li在推特中畅想,Cosine旨在将人类的推理能力编码化,未来不再有过采样,也不再有copilot。这是一个令人兴奋的前景,预示着人工智能在软件开发领域的应用将更加广泛和深入。随着Genie等AI软件工程师的不断发展和完善,我们有理由相信,人工智能将为软件开发带来更多的可能性和创新。
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。