近日,Cosine 推出 AI 程序员 Genie,在权威测试平台 SWE-Bench 上的评分高达 30.08%。与此同时,AI 代码编辑器 Cursor 的公司 Anysphere 完成 6000 万美元融资,估值达 4 亿美元。
随着 LLM 技术的进一步发展,AI 编码从辅助编码工具到旨在实现「人类工程师一样解决现实生活中的软件问题」 的 AI 软件工程师逐渐演变,AI coding 赛道正趋于转向「全自动化」。
解读要点
Devin 之后,今年还冒出了哪些 AI Coding 应用?
AI Coding 赛道爆火的背后原因有哪些?
AI Coding 赛道情况如何?市面上的热门 AI Coding 应用/工具都有哪些?
从 Copilot 到 Agent,实现编程自动化还需要多久?
继首个 AI 软件工程师 Devin 之后,今年冒出了哪些 AI coding 应用/工具?
1、今年 3 月,Cognition AI 的 Devin、微软的 AutoDev 等 AI 软件工程师陆续推出。近期,Cosine 也发布了同类产品 Genie,在权威测试平台 SWE-Bench 上的评分达到 30.08%,是目前表现最强的 AI 程序员。此外,各家巨头、大厂在也发布了通义灵码、MarsCode、Comate 2.0、ProjectIDX 等 AI 编码助手/工具。AI coding 成为近期 AI 重要玩家们的「必争之地」。
2、而随着 LLM 技术的进一步发展,AI 编码也从辅助编码工具到旨在实现「人类工程师一样解决现实生活中的软件问题」 的 AI 软件工程师逐渐演变,AI coding 赛道正趋于转向「全自动化」。
3、近期引发关注的 AI 软件工程师 Genie 主要包括功能开发、BUG 修复、代码重构、代码小改动和杂项、代码测试以及编写代码文档和更新等功能,支持的编程语言包括 Java、 Python、Java、C#、C++等几十种主流语言。而 Genie 最重要的特点是能够模仿人类工程师的认知过程、逻辑和工作流。Cosine (推出 Genie 的公司)的联合创始人 Alistair Pullen 表示,实现该点的关键是其训练数据和方法。
① Genie 使用了专有的数据集进行训练。Genie 团队在过去一年中收集了一个包含真实人类程序员开发活动的数据集。该数据集包含了人类程序员的推理过程,包括信息的完整传承、知识的逐步发现,以及基于实际案例的决策制定步骤等,使得 Genie 能够像人类一样在面对各种复杂甚至是从未见过的问题时,展现出与人类工程师相似的处理能力。
② 在训练方面,Genie 采用了独特的「自我改进机制」。在完成初始训练后,通过 Genie 生成了合成数据,开发者将此数据注入到后续模型的训练中,以丰富错误和复杂情况,从而提高 Genie 在面对新问题时的适应性和准确性,以及增强其在处理复杂、高度情境化编码问题时的能力。
③ 此外,Genie 的推理过程包括规划、检索、代码编写和代码运行四个主要步骤。不同于其它 AI 工程师在基础模型之上添加网页浏览器、代码解释器等额外工具的限制,Genie 能够像人类处理多样化、高度情境以及前所未见的问题。[22]
AI coding 赛道爆火的背后原因是什么?
什么促使 AI coding 成为巨头、大厂等 AI 重要玩家们的「必争之地」?一方面是来自市场的旺盛需求,另一方面,LLM 技术的日益成熟也起到了关键作用。
1、据 Datos 在 2023 年 5 月至 6 月间对 ChatGPT 调用场景调查数据,编程问题占据了 29%,在所有使用场景中排名第一。编程成为最高频、刚需的 AI 应用场景之一,而刚需带来了市场机会与收入。
① 以最知名的 AI 编程工具 GitHub Copilot 为例。在 2024 财年第二季度的财报电话会上,微软 CEO 萨提亚·纳德拉透露,GitHub Copilot 带来产生的收入超过了微软在 2018 年收购代码托管平台 GitHub 时后者的所有收入,目前 GitHub 的年收入 20 亿美元。当季来源于 GitHub 的收入同比增长超过 40%,2022 年 6 月推出收费版的 AI 代码辅助工具 GitHub Copilot,目前已经有 130 万付费用户,环比增长 30%。同时,GitHub Copilot 企业商用版客户已超过 5 万。[23] [24]
图:Datos 对 ChatGPT 调用场景调查数据结果[23]
2、另一方面,随着大型语言模型(LLMs)开发的激增,大量的模型可以通过持续预训练或微调被用于代码生成任务。在综述论文《A Survey on Large Language Models for Code Generation》中,提到了以下几个在自动化软件开发方面的关键技术。[25]
① 全参数微调 (Full Parameter Fine-tuning, FFT) 和参数高效微调 (Parameter-Efficient Fine-tuning, PEFT)
全参数微调通过更新预训练模型中的所有参数,增强了模型对特定任务的适应性,尤其在代码生成任务中,这种方法能够显著提升模型的性能和输出质量;参数高效微调是一种资源节约型的微调方法,仅更新模型的一小部分参数或引入新的参数,有效降低计算资源的需求,同时保持模型对新任务的快速适应能力。
② 强化学习 (Reinforcement Learning, RL)
通过集成自动反馈机制,使得代码生成模型能够根据执行结果自我改进,尤其在编译器或解释器提供的反馈下,模型能够学习生成语法和功能上更正确的代码。
③ 策略性使用提示 (Prompting Engineering)
包括 Chain-of-Thought、Self-Consistency 等,通过精心设计的提示来引导和优化模型的输出,这种方法无需额外训练即可提升模型在复杂任务中的表现,包括代码生成的准确性和可靠性。
④ 库级别和长上下文 (Repository Level & Long Context)
库级别和长上下文技术可以处理代码库中的复杂依赖和上下文信息,使得代码生成模型能够理解和生成符合整个项目结构和风格的代码,提升了代码的一致性和可维护性。
⑤ 检索增强 (Retrieval Augmented)
检索增强通过整合外部数据库的知识来克服 LLMs 的局限性,增强了代码生成模型的信息检索能力,使得模型在面对需要广泛知识背景的查询时,能够提供更加准确和相关的代码解决方案。
AI coding 赛道目前情况如何?
1、目前,市面上主流的 AI coding 应用/工具可以大致分为 AI 代码生成、Al 代码优化重构、调试和代码清理、Al 代码分析、AI 代码迁移、Al 代码审查、自动化测试生成几类。
① AI 代码生成:AI 通过学习大量的代码库来自动生成代码,从而提高开发者的编程效率。例如,Github Copilot、cursor、Codeium 等。
② Al 代码优化重构、调试和代码清理:AI 优化和重构现有代码,通过分析代码的性能和结构,AI 可以提供优化建议。例如,SonarQube、PMD 等。
③ Al 代码分析:AI 代码分析工具可以分析代码的结构、性能和安全性,帮助开发者识别和修复潜在问题。
④ AI 代码迁移:帮助开发者将代码从一种编程语言迁移到另一种编程语言,同时保持代码的功能和逻辑。例如,Bloop、Second 等。
⑤ Al 代码审查:AI 可以通过学习大量的代码审查规则和模式,自动化执行代码审查任务,帮助开发者提高代码质量和安全性。例如,Mutable.ai、Trunk 等。
⑥ 自动化测试生成:AI 可以通过分析代码自动生成测试用例,从而提高测试覆盖率和效率。例如,Octomind、Diffblue 等。[26] [27]
2、根据 Stack Overflow 发布的 2024 年度开发者调查报告,65437 名受访的开发者表示,使用最多的 AI 搜索和开发工具为 ChatGPT,占比 82.1%。[29]
① 使用最多的工具前 5 名分别为 ChatGPT(82.1%)、GitHub Copilot(41.2%)、Google Gemini(23.9%)、Bing Al(15.8%)、Visual Studio Intellicode(13.6%)。
图:Stack Overflow 2024 年度开发者调查报告结果[29]
② 除了 ChatGPT、Google Gemini、Bing Al 等对话式聊天应用外,使用最多的 AI 开发工具有 GitHub Copilot、Visual Studio Intellicode、Codeium、WolframAlpha、Tabnine、Phind、You.com 和 Cody。
表:Stack Overflow 2024 调查:使用最多的 AI 开发工具情况介绍
从 Copilot 到 Agent:实现编程自动化还需要多久?
1、随着大型语言模型(LLM)技术的发展,学界和业界探索通往人工通用智能(AGI)潜在路径。同样,在自动化代码生成领域,业内开启了从作为辅助编码工具的 Copilot 转向基于 LLM 驱动的代码 Agent 的探索。
① 以近期推出的 AI 软件工程师 Genie 为例,Genie 的目标是实现像人类工程师一样解决现实生活中的软件问题。Genie 由 OpenAI 提供长上下文模型支持,在数十亿 token 的数据上进行了训练,包含了规划、检索、代码编写和代码运行的推理过程,旨在解决复杂化、多样化的编码问题。
② 同样,Multi-Agent框架 AgentCoder、编程框架 MetaGPT、AutoCodeRover、SWE-agent 等类似工作也陆续出现,旨在更加自动化地解决软件工程中的复杂任务。
2、但基于 LLM 的代码 Agent 想要完全实现类人的 AI 软件工程师还有很长一段路要走。例如,随着编码任务的复杂化,增加提示设计、上下文长度、代理数量和工具集等关键方面均需要进一步改进和优化......
订阅机器之心Pro会员通讯👇,查看完整解读