前几天,Kubernetes 迎来了它的十周岁生日。作为架构师都深知,在过去的十年中,微服务和容器技术迅猛发展推动了整个行业应用架构的重大升级。从早期的企业级应用架构,到后来的互联网架构、微服务架构,再到如今逐渐成为主流的云上 Serverless 架构,各行各业的企业和开发者无不受益于云原生技术发展运用所带来的红利。
在软件研发的生命周期中,设计、开发、交付和运维都是不可或缺的环节。云原生技术的出现带来了显著的效率提升和成本降低。云原生技术的发展堪称一次生产力的飞跃,它在多方面带来了显著的提高。例如,容器化的编排调度、分时复用、弹性伸缩和混合部署大幅提升了企业的资源效率,使得许多企业的资源利用率从 10% 提升至 40% 以上,显著降低了成本。同时,容器化上云、K8s 化管理以及 Serverless 架构等技术的出现,从过去需要自行维护大量组件到如今的免运维、弹性全托管,大幅提升了运维效率。微服务、容器化、DevOps、GitOps、IaC 等技术,提升了企业软件的交付效率,让业务敏捷迭代。
这些技术进步大家都已切实体会到。然而,企业对于技术红利的追求是无止境的。回顾过去十多年,这些新技术的运用并未带来设计和研发侧的根本性变革。企业普遍面临程序员产能不足的问题,企业的软件研发迭代效率成为竞争发展的瓶颈之一。多年来,我们不断尝试提升这部分的效率和产能,但直到 AI 时代的到来,才真正弥补了这一短板。
大语言模型为研发领域带来了革命性的突破。在 AI 时代,基于爆炸性增长的数据、不断提升的计算力以及持续演进的模型技术,为企业和开发者提供了前所未有的机会。数据、计算和模型的协同发展,让知识变得触手可及。以数据为例,GitHub 现已成为全球最大的开源社区,拥有超过 5000 万个开放的代码库,这种丰富的数据储备,使我们能够在大模型时代借助 AI 技术真正实现智能编程。
当我们分析 ChatGPT 的使用量时发现,编程问题占据了 29%,在所有场景中排名第一。这是 Datos 在 2023 年 5 月至 6 月间对 ChatGPT 调用场景进行调查后的数据。虽然教育、内容生成和市场营销等各类问题也占据了一定比例,但编程问题无疑是最高频刚需的 AI 应用场景之一,说明编程领域中产能不足的问题可以使用 AI 大模型进行提效。
程序员的时间都花在几个方面呢?根据行业调研显示,程序员的工作有 2/3 的时间和代码相关,其中有三分之一的时间用来编写代码,另有三分之一的时间花在与代码相关的工作上,包括代码维护、测试和修复安全漏洞,最后三分之一的时间则用于会议、运营管理、沟通和需求分析等。尽管减少会议时间也可以一定程度上提高效率,但要真正提升研发效率,最核心的方法仍需要从代码提效角度入手,让程序员能够集中更多时间进行代码创作,单位时间产出更多代码,才能发挥更大的创造力和产能。
目前,程序员使用最广泛的集成开发环境(IDE)包括 VSCode、JetBrains IDEs 和 Visual Studio。因此,我们决定从 IDE 插件入手,利用大语言模型来帮助程序员更高效的编写代码,解决研发效率问题。这些插件能够在程序员编写代码时实时提供智能建议和代码补全,自动生成大块代码,显著提升代码编写的速度和质量,减少重复性工作,从而让程序员能够专注于更具创造性的任务。
1. LLM 带来人机协同模式演进
接下来我们来看下大语言模型引发的人机协同模式的演变。
第一阶段:LLM as Copilot
在这一阶段,大语言模型作为 Copilot,辅助程序员完成任务,但并不改变软件工程的专业分工。它提供了一个强大的工具来增强领域内的专业技术,帮助人类程序员提升工作效率。人在这个过程中起主导作用,负责提供提示词和进行确认。
第二阶段:LLM as Agent
在这个阶段,大语言模型作为 Agent 智能体能够自主完成一部分任务,成为一个单一职能专家,能够自主使用工具完成预定的任务。人在这里的作用是给定上下文完成知识对齐,从而让模型更好地理解和执行任务。
第三阶段:LLM as Multi-Agent
在第三阶段,大语言模型作为 Multi-Agent 系统来协同处理复杂任务。多智能体互相协作完成复杂任务,人类则负责创意、纠偏和确认的工作。
阿里云在 AI 编程领域的产品演进分为三个阶段:第一阶段是基于 IDE 实现辅助编程。第二阶段依然基于 IDE 实现智能体自主处理专业任务。第三阶段则是跳出 IDE,基于多智能体实现自主研发。现阶段阿里云重点做深前两个阶段,同时在布局和探索第三阶段 AI 程序员方向。在 2023 年 10 月底的云栖大会上,阿里云发布了通义灵码产品,这是一款基于通义大模型的智能编码助手。通义灵码能够提供代码智能生成和代码智能问答等功能,帮助程序员更高效地编写代码。通义灵码支持Java、Python、Go、C++ 等 200 多种编程语言,并兼容 VSCode、JetBrains IDEs、Visual Studio 等主流 IDE 和操作系统,致力于帮助开发者将编码效率提升 100%,帮助企业将研发效率提升 50%。
通义灵码基于阿里云的 MaaS 产品体系构建,模型推理使用 PAI 灵积平台;模型训练使用 PAI 灵骏平台;基础模型使用通义大模型;模型定制和微调使用阿里云百炼。正是依靠这一整套产品体系,通义灵码得以快速构建、快速上线并高速发展。此外,基于通义大模型的优秀能力,通义灵码在多项模型指标上表现领先。以 72B 模型为例,我们使用超过 3 万亿个 token 的数据进行预训练,在多个中英文评测中显著超过竞争对手,并且能够稳定支持 32K 的上下文。这些优势使通义灵码成为一款顶尖的智能编程插件,极大地提升了开发者和企业的研发效率。
上图展示了通义灵码的功能架构。核心组件包括数据处理、专用模型、服务端和本地服务等。语料数据是整个系统的核心支撑,我们在数据采集、数据清洗、标注、解析和效果评测比对上下足功夫,确保数据的高质量和多样性。我们采用了混合专家模型思路,以应对不同使用场景对内容和响应时间的不同需求。具体使用的模型包括:代码补全模型帮助程序员高效补全代码;研发问答模型回答与编程相关的各种问题等。每种模型针对特定任务优化,以提供最佳的用户体验。
此外,有些企业客户有独特的技术特点、编码风格和最佳实践。通义灵码支持企业专属模型,通过自监督微调、检索增强等能力,满足企业的特定需求。从数据到模型,我们提供了服务端和本地服务的双重支持。在服务端实现了企业级的检索增强,通过微调模型访问企业知识库,提供更贴合企业需求的内容;本地服务侧实现了 RAG 增强功能,对本地工程有更深入的理解和更精准的回答。
身为程序员大家都有共鸣,写代码时最怕被打断,思路和效率都会受到影响。为了避免这种情况,AI 编程助手需要无缝融入程序员的工作流程。我们在生成粒度、触发时机和上下文理解方面进行了特别优化。AI 编程助手必须准确理解程序员在做什么、写什么,以及需要什么帮助,以确保能够真正提供帮助并提高效率。
通义灵码目前涵盖以下核心使用场景:
- 代码实时续写:这是最高频、调用量最大的功能,需要提供流畅的编程体验。
- 单元测试生成:帮助自动生成单元测试,提高测试覆盖率,减少重复性工作。
- 代码注释生成:提升代码可读性和可维护性。
- 研发领域自由问答:回答各种与编程相关的问题。
- 异常报错智能排查:检测和排查代码中的异常,提供解决方案和示例代码。
代码续写是通义灵码目前调用量最大的场景,也是最具创造力的场景。它真正帮助程序员补全和编写代码,并对编程体验的流畅度有很高的要求。单元测试生成是另一个关键应用场景。例如,对于一个函数、一个方法或一段代码,通义灵码能够自动生成相应的单元测试。单元测试至关重要,许多企业仍然难以提高测试覆盖率,部分原因在于程序员往往不喜欢编写测试代码。通义灵码能大幅提高单元测试的覆盖率,减少冗余的工作量。在代码问题排查方面,通义灵码表现也很突出。遇到代码异常或潜在的 bug 时,通义灵码能够帮助找出报错的原因,并提供解决方案和示例代码,使排错过程更高效。
2. 通义灵码四大优势
通义灵码具备四个优势:毫秒级的生成速度,恰到好处的生成时机,恰如其分的生成长度,贴合代码库的业务场景。
我们通过几项关键技术优化显著提升了通义灵码的响应速度和服务质量。首先,实现毫秒级的生成速度,这是确保用户体验流畅的关键。我们在 IDE 端采用了流式补全,并在服务 API 调用过程中设置三级缓存,包括本地缓存、服务端缓存和模型 API 侧推理缓存,以便在不调用后端 API 的情况下快速给出解答。
其次,我们对通义灵码的请求类型进行了分析,发现 20% 的请求涉及研发内容问答,6% 涉及代码专项任务问答,而 73% 的请求是代码补全。对于高频次的代码补全请求,我们使用了专门训练的小参数模型 CodeQwen2,以平衡生成代码的效率和质量。对于代码专项任务,如代码注释、单元测试生成、代码优化、bug 查找和修复等,我们使用了中等参数模型 Qwen-Plus。对于研发问答,这需要更高更全面的知识面、编程能力和推理能力,我们使用了最大参数模型 Qwen-Max,并叠加了 RAG 技术来减少模型幻觉,从而提升问答质量。通过分级缓存和混合专家模型组合,大幅提高了通义灵码的响应速度和服务质量。
为了确保程序员在工作中不被打断,我们对用户的键盘输入、上下文解析和历史行为特征进行了深入学习,包括主观调研、埋点监控分析,以及针对不同平台的用户行为持续优化触发策略,使其更符合开发者的使用习惯。
基于代码的语义分析,模型能够理解不同场景需要生成的粒度,如行级、逻辑块、函数级或类级。通过自适应语义理解决策,让 Java 语言的代码生成准确率提高到 56% 以上,Python 语言的代码生成准确率提高到 44% 以上,仍有更大优化空间。
此外,我们设计了贴合代码库的业务场景,基于库内感知进行代码生成和问答。通过实时代码语义分析、引用链路追踪和动态类型推导,全面获取语义信息,避免只关注当前文件带来的幻觉问题,从而增强模型回答的准确性,库内跨文件感知评测集准确率因此从 22% 提升到 66.9%。
此外,我们通过本地库内检索增强,预处理本地工作空间中的源文件,建立本地向量化索引,并基于本地 RAG 进行操作。同时用户的代码、索引和向量信息都存储在本地,确保了代码的安全和隐私。同时,我们还实现了企业级 RAG,更贴近企业和行业的特点,特别是对于大中型企业,他们有基于自身特点的最佳实践和技术偏好。我们在企业管理需求方面也做了优化,包括用户管理、使用效果评估、数据洞察、审计日志、企业知识库和 RAG 增强等,使通义灵码成为更符合企业风格和最佳实践的编码助手。
为了让开发者能够快速学习工程架构并理解设计思路,通义灵码在整个工程中支持快速查询相关代码,并辅助生成业务代码。例如,增加一个删除文章的接口时,需要分成几个部分?通义灵码能够基于现有代码库结构生成这三类接口,由程序员决定是否使用,可以修改后使用或直接插入代码版本。因此,通义灵码的工作范畴已从 IDE 编辑器扩展到整个项目工作空间。同时,我们引入了智能体(Agent)概念,不再局限于单个文件的补全,而是能够理解并生成整个工程的代码。这个智能体不仅可以在 IDE 中使用,还可以迁移到流水线或外部工作空间中,提高对企业现有研发过程和研发工具的适应性和灵活性。
3. 企业为什么需要通义灵码
我们简单比较一下市面上的产品选择,探讨企业为何选择通义灵码,而不是 ChatGPT 或其他解决方案。首先,许多程序员目前依赖 ChatGPT,但在境内无法顺畅访问,也无法进行定制和调优,因其模型服务部署在海外,存在代码数据出境和二次训练的风险,同时基于 ChatGPT 编程会打断程序员的工作流程。同样,海外的编码 Copilot 产品,不支持用户自有技术框架和技术特点的调优,也面临代码数据出境的风险。
相比之下,开源自建虽然是一个选择,但挑战巨大,不适合绝大多数企业。那么,选择通义灵码有哪些独特优势呢?
1. 端到端技术体系:我们构建了完整的端到端技术体系,采纳成本低兼容原有工作模式不打断程序员,提供低延时高质量的代码助手。
2. 个性化定制:企业私域数据语料 RAG 和 SFT 能力,满足企业个性化定制需求,中文语义理解能力表现更优秀。
3. 强大算力支撑:通义灵码依托阿里云的超强算力,使用国内目前最大且最优秀的 CodeQwen2 模型,在模型能力上具有显著优势。
4. 安全隐私保护:我们严格执行全链路加密,代码不落盘、灵码服务端不存储,确保企业数据的隐私和安全。
我们进行了开发者调研,发现使用通义灵码显著提高了工作效率,开发者满意度很高。调查显示,72% 的开发者认为工作效率提高了,80% 认为工作不会频繁被打断,76% 赞同通义灵码减少了重复冗余工作,使他们能够更加专注于创造性的工作任务。
4. 通义灵码阶段性进展
通义灵码自上线发布七个月以来,取得了显著的成果。目前,插件下载量已达 350 万次,每天推荐代码次数超过 3000 万次,这相当于每天进行超过 3000 万次的模型推理服务。AI 生成代码的采纳率超过 31%,采纳的代码行数超过一亿行。我们拥有百万注册开发者和超过 1 万家企业客户,用户数在国内同类产品中位居第一。
自通义灵码发布以来,阿里云内部进行了广泛推广和使用。2024 年四月,通义灵码正式"入职"阿里云,并取得了显著成效:周活跃开发者占比达 78%,研发效率提升超过 10%,AI 生成代码占比超过 30%。阿里云成为国内首家推行全员 AI 编码的云厂商。
通义灵码今年五月"入职"中华财险。中华财险积极拥抱云+AI 战略,利用通义灵码赋能内部研发场景,提高效率。中华财险的技术人员使用占比超过 60%,问答准确率达 90%,AI 生成代码占比为 25%。这一系列数据体现了通义灵码在提升研发效率方面的显著效果。
通义灵码今年六月“入职”哈啰集团,不仅实现研发效率提升 12%、AI 代码采用率超过 20%,还将灵码接入了哈啰自研 Copilot “海螺机器人”,共同帮助用户实现智能代码补全、进行 CodeReview(代码评审)等。
5. 持续探索:研发领域多智能体协同
我们可以从三个阶段来看产品实现路径:
- 第一个阶段是代码辅助生成 Copilot:初始阶段我们在 IDE 内提供基础的代码辅助功能,目前通义灵码处于这一阶段,并完成了产品的研发和行业推广。
- 第二个阶段是任务自主处理的 Agent 智能体:用来进一步提升程序员的开发效率,目标是帮助开发者提升 100% 的编程效率,帮助企业提升研发效能达 50%,这一步产品能力也基本完成。
- 为了实现更高的生产力突破,我们正在探索第三阶段,即跳出 IDE,基于 Multi-Agent(多智能体)实现自主研发,即 AI 程序员。阿里云也发布了首个 AI 程序员 Demo,它是基于通义大模型构建的多智能体,每个智能体分别负责具体的软件开发任务,并互相协作,可以端到端实现一个产品功能的研发,大幅简化软件开发流程。例如,在编码智能体中,AI 程序员首创了代码仓库知识图结构,不仅能理解用户的需求,还能精准定位代码对应的修改位置并自动给出修改方案。
要真正实现生产力变革,还需要覆盖更广泛的范围和工种角色。具体而言,需要产品经理、架构师、交互设计师、前端开发以及项目经理等不同角色依托智能提效,协同完成从需求细化到 API 时序编排、任务排序等整个研发流程。因此,多智能体系统不仅要理解和规划,还需在各个智能体之间进行互动协作,生成专业领域内容。我们也将沿着多智能体路线前行,包括企业工作空间私域和开放域的检索增强,每个智能体的打磨,从多个维度逐步推动 AI 程序员的成熟落地。
我们认为,多智能体架构需要具备以下三方面的能力:
1. 结构化任务管理:多智能体的工作模式反映了人类团队如何分解大型任务,提供一种分配任务和协调智能体的直接方法。
2. 简化工作流程:将复杂任务分解为更小的子任务使整个项目更易于管理,提高灵活性和适应性,也更能根据企业的情况做定制,符合企业的特点和需要。
3. 高效执行任务:分配特定智能体专注于特定任务,使其在其专长领域进行深度分析和执行,从而提升系统整体的工作效率。通过这种方式,每个智能体都能够发挥其最大的潜力,提高完成任务的效率和质量。
我们对于多智能体产品的定位,是希望为企业培养更多的 AI 程序员,未来的工作模式希望人类程序员 965,AI 程序员 007,这是我们构建这个产品所期待实现的目标。从功能架构演进的角度来看,底层依托于通义灵码产品中积累的能力,将其迁移出 IDE 并走向多智能体架构,需要在各个层面强化产品体系。在端侧,我们不仅需要覆盖更多的 IDE,还要跳出 IDE,融入整个工作空间,延伸至 DevOps 流水线和工具平台,因为企业各工种的研发协作都在软件开发流水线上进行,我们必须将这些能力迁移到企业的研发流水线中。在本地服务方面,我们还需要实现多智能体管理、长会话管理和上下文管理。
在服务端,我们需要增强长期记忆功能,因为研发过程和任务周期较长,需要在一个持续的上下文中进行。与原子化 API 调用不同,这对模型的上下文长度有更高要求,因此整个体系需要全面升级。随着 AI 程序员的问世,一些问题也随之而来。例如,未来的编程界面是否会从编程语言转变为自然语言?人类程序员会被 AI 取代吗?每个人都能成为开发者吗?
在我们看来,身处互联网科技行业,提供高质量软件和服务的门槛非常高,竞争也非常激烈。虽然开发者可以使用多种工具,但要迎合千行百业业务和数百万消费者的需求,AI 开发的产品并不足够,需要大量人类的顶层设计、创新创意协同建设。因此我们相信,未来主流的研发模式将是由人类程序员主导,带领一批 AI 程序员完成各项研发任务。
过去 20 年,中国有超过 1000 万程序员,构筑并支撑了整个数字世界蓬勃发展。在 AI 和大模型时代,我们看到依托于通义灵码这样的产品,AI 编程有希望颠覆 IT 生产力,提升程序员产能 100 倍,从而引发生产力革命,创造更大的价值。没有人愿意错过这个时代,让我们一起创造未来、拥抱未来。
作者:丁宇(叔同)