《AIGC+软件开发新范式》--01.当「软件研发」遇上 AI 大模型(2)

简介: 在AI 热度持续上升的当下,阿里云推出AI智能编码助手—通义灵码。通义灵码是一款基于阿里云通义代码大模型打造的智能编码助手,基于海量优秀开源代数据集和编程教科书训练,为开发者带来高效、流畅的编码体验。

本文来源于阿里云社区电子书《AIGC+软件开发新范式》


《AIGC+软件开发新范式》--01.当「软件研发」遇上 AI 大模型(1):https://developer.aliyun.com/article/1537736


高频刚需


我们需要判断什么是软件研发最高频的场景。我这边有一些真实的数据,第一个数据来自 JetBrains 在 2023 年做的一个开发者的生态报告,整理了开发者最耗时的活动,其中可以看到百分之七八十都是编写代码,理解代码及互联网搜索、调试、写注释、写测试。这几个场景实际上就是代码智能工具的功能,像通义灵码这样的产品最核心解决的问题,其实就是最高频的问题。


后面这两个数据是通义灵码线上几十万用户的数据分析。我们现在线上采纳的代码, 73% 来自于补全任务,27% 来自于问答任务的采纳。所以今天大量的 AI 替代人去写代码,还是在 IDE 的行间生成,这是从真实的情况下反映出来的一个结果。后面是使用问答功能的比例,有 76% 的比例是来自于研发问答,剩下的 10% 是代码优化和解释代码等等一系列的代码任务。所以绝大部分的开发者还是在使用我们的工具去问一些常用的研发知识,或者通过自然语言的方式让代码大模型生成一些算法,解决一些小的问题。


其次的 23% 才是我们真正的一些细节的代码任务,这是给大家一个数据洞察。因此我们就有了核心的目标。第一,我们要解决好代码生成的问题,尤其是在行间生成。第二,要解决研发问题的准确度以及专业性问题。


触手所及


我们最终要讲的是打造沉浸式编程体验,我们希望今天开发者绝大部分的问题都可以在 IDE 里面解决,而不是需要跳出。


过去我们的体验是什么?是遇到问题去互联网搜索,或者问问别人,问了一圈以后再自己判断,最终写上代码复制放到 IDE 里面调试编译,不通过了再去查,这样的话就会非常耗时。我们希望能在 IDE 里面直接问大模型,让大模型帮我生成代码,这样体验就很爽。我们通过这样的一个技术选择,解决了沉浸式编程体验的问题。


补全任务是一个性能敏感型任务,它的输出需要在 300 到 500 毫秒,最好不要超过一秒,所以我们有一个小参数模型,它主要是用来生成代码的,而且它的大部分训练语料也来自于代码。它虽然的模型参数很小,但是在代码生成的准确度上非常高。


第二个我们要去做好专项任务,我们还有 20%~30% 实际上的任务是来自于这些,包括注释生成、单元测试、代码优化、运营错误排查等七项任务。


我们目前使用了一个中等参数模型。这里主要考虑的,一是生成效率,二是调优。一个非常大参数的模型,我们调优的成本是很大的,但是在这种中等参数模型上,它本身的代码理解和代码生成效果已经不错了,所以我们选择了中等参数模型


然后在大模型上面,尤其是我们 70% 多的研发问题回答上,我们追求的是高精度,而且追求的是实时的一些知识。所以我们通过一个最大参数的模型,叠加了我们的 RAG 技术,让它外挂了一个近乎于实时的基于互联网的知识库,所以它回答的质量和效果就非常高,并且能大幅消除模型幻觉,提升回答质量。我们通过这样的三个模型支持了整个沉浸式编程的体验。



第二点是我们要实现多端,因为只有覆盖了更多的端,才可以覆盖更多的开发者。目前通义灵码支持 VS code 和 JetBrains,主要解决的是触发问题、展示问题,还有一些交互性问题。


最核心层次下面,我们本地 Agent 服务是一个独立的进程。这个进程跟上面的插件之间会进行通信。这个进程最主要解决的是代码核心的一些能力,包括代码智能补全的部分,会话管理的部分,智能体。


此外,语法分析服务也非常重要,我们要解决跨文件引用的问题等,都需要语法分析。如果我们要做本地的检索增强,我们还需要轻量级的本地向量检索引擎。所以整个后端的服务实际上是通过这样的方式就可以快速的实现扩端。


我们还有一个特色,我们有一个零点几 B 的本地离线的小模型,来实现个别语言的单行补全,这是可以脱网去做的,包括 JetBrains 最近也上了一个跑在本地的小模型。通过这种方式,也会保证我们的一些数据安全隐私问题,比如本地的会话管理、本地的存储,全部都放到了本地电脑上。




知我所想


知我所想对于 IDE 插件这个工具而言,我认为有几点。第一是触发时机,在什么时候触发,对于开发者体验的影响也非常大。比如我在空格的时候要不要触发?IDE 已经生成提示的时候要不要触发?在删除这段代码的时候要不要触发?我们大概有超过 30~50 个场景去梳理,到底在这个场景上要不要进行代码触发,这部分通过规则就可以搞定,只要一点点细心去摸索,去调研开发者体验,就可以解决,这不是很高深的技术。


但是在代码生成长度方面,我们认为是比较难的。因为在不同的编辑区的不同的位置,它生成什么样长度代码,直接影响了我们的体验。如果开发者只是倾向于生成单行代码,带来的问题就是开发者不能理解整个生成的内容,比如生成一个函数,他不知道这个函数到底要干什么,生成一个 if 语句,他不知道 if 语句里边的业务逻辑是什么,就没有办法完整的判断功能单元,影响了他的体验。


我们用一些固定的规则去做,也会导致一个问题,即它会比较死板。所以我们的做法实际上是基于代码的语义信息,通过训练的方式,经由大量的样本,让模型理解了今天在什么场景下应该生成多长,我们实现了由模型自动判断类级别、函数级别、逻辑块级别及行级别的生成力度,我们把它叫做自适应的生成力度决策。我们通过做这项大量的预训练,让模型去感知,从而提升了生成的准确度,这块我们认为也是一个比较关键的技术项。


再往下最关键的就是如何去消除模型的幻觉,因为只有幻觉得到足够的消除,才能够提升我们的采纳率。所以我们一定要实现基于库内的跨文件上下文感知,在这里,我们做了很多的基于代码的语义分析,引用链追踪,相似代码以及动态语言类型推导等。


最关键的就是想方设法的去猜开发者在这个位置补全他可能需要什么样的背景知识,这些东西可能还会涉及到一些语言、框架、用户习惯等,我们通过各种各样的东西将它的上下文获取出来,并且进行优先级排序,把最关键的信息放到上下文里面去,然后给到大模型进行推导,让大模型去消除幻觉。通过这样的技术就可以实现跨文件上下文感知的测试集,我们的准确率从 22% 提升到了66.9%,我们还在不断的去精进提升补全的效果。


最后一个是我们本地的库内检索增强。刚刚其实也说了,上下文感知也只是猜测开发者在触发位置的上下文。更多的场景是今天开发者要问一个问题,让大模型基于本地的库内所有文件去帮我解决一个问题,比如帮我修复一个 bug,帮我增加一个需求,帮我填充一个文件,自动实现增删改查,甚至帮我的 Prompt 文件增加一个新的包的版本,类似这样的需求其实有很多,要实现的话实际上是要给大模型外挂一个检索引擎。因为我们不可能把整个工程的文件全部塞给大模型,因为上下文宽度的影响,我们必须使用到一个技术,叫做本地的库内检索增强。


这个功能就是来实现我们基于库内的自由问答的,在本地去建立一个库内的检索增强服务,我们判断这样的方式对于开发者的体验是最好的,安全性也是最高的。代码不需要上传到云端,就可以完成整个链路。从整个链路上来讲,开发者问一个问题以后,我们就会去代码库提取需求的关键信息进行任务拆解,拆解完了做本地的向量检索召回,然后再做检索的结果合并及重排,以及去企业内部的数据知识库检索,因为企业有统一的知识库管理,是企业级的。最终把全部的信息汇总起来发送给大模型,让大模型去生成和解决问题。




《AIGC+软件开发新范式》--01.当「软件研发」遇上 AI 大模型(3):https://developer.aliyun.com/article/1537710

相关文章
|
2天前
|
机器学习/深度学习 人工智能 自然语言处理
当前AI大模型在软件开发中的创新应用与挑战
2024年,AI大模型在软件开发领域的应用正重塑传统流程,从自动化编码、智能协作到代码审查和测试,显著提升了开发效率和代码质量。然而,技术挑战、伦理安全及模型可解释性等问题仍需解决。未来,AI将继续推动软件开发向更高效、智能化方向发展。
|
3天前
|
人工智能 自然语言处理 机器人
文档智能与RAG技术如何提升AI大模型的业务理解能力
随着人工智能的发展,AI大模型在自然语言处理中的应用日益广泛。文档智能和检索增强生成(RAG)技术的兴起,为模型更好地理解和适应特定业务场景提供了新方案。文档智能通过自动化提取和分析非结构化文档中的信息,提高工作效率和准确性。RAG结合检索机制和生成模型,利用外部知识库提高生成内容的相关性和准确性。两者的结合进一步增强了AI大模型的业务理解能力,助力企业数字化转型。
27 3
|
5天前
|
人工智能 弹性计算 Serverless
触手可及,函数计算玩转 AI 大模型 | 简单几步,轻松实现AI绘图
本文介绍了零售业中“人—货—场”三要素的变化,指出传统营销方式已难以吸引消费者。现代消费者更注重个性化体验,因此需要提供超出预期的内容。文章还介绍了阿里云基于函数计算的AI大模型,特别是Stable Diffusion WebUI,帮助非专业人士轻松制作高质量的促销海报。通过详细的部署步骤和实践经验,展示了该方案在实际生产环境中的应用价值。
34 6
触手可及,函数计算玩转 AI 大模型 | 简单几步,轻松实现AI绘图
|
2天前
|
人工智能 新制造 芯片
2024年中国AI大模型产业发展报告解读
2024年,中国AI大模型产业迎来蓬勃发展,成为科技和经济增长的新引擎。本文解读《2024年中国AI大模型产业发展报告》,探讨产业发展背景、现状、挑战与未来趋势。技术进步显著,应用广泛,但算力瓶颈、资源消耗和训练数据不足仍是主要挑战。未来,云侧与端侧模型分化、通用与专用模型并存、大模型开源和芯片技术升级将是主要发展方向。
|
3天前
|
存储 人工智能 固态存储
如何应对生成式AI和大模型应用带来的存储挑战
如何应对生成式AI和大模型应用带来的存储挑战
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的新篇章:利用AI提升软件质量
【10月更文挑战第35天】在软件开发的海洋中,自动化测试犹如一艘救生艇,它帮助团队确保产品质量,同时减少人为错误。本文将探索如何通过集成人工智能(AI)技术,使自动化测试更加智能化,从而提升软件测试的效率和准确性。我们将从AI在测试用例生成、测试执行和结果分析中的应用出发,深入讨论AI如何重塑软件测试领域,并配以实际代码示例来说明这些概念。
31 3
|
6天前
|
人工智能 自然语言处理 算法
企业内训|AI/大模型/智能体的测评/评估技术-某电信运营商互联网研发中心
本课程是TsingtaoAI专为某电信运营商的互联网研发中心的AI算法工程师设计,已于近日在广州对客户团队完成交付。课程聚焦AI算法工程师在AI、大模型和智能体的测评/评估技术中的关键能力建设,深入探讨如何基于当前先进的AI、大模型与智能体技术,构建符合实际场景需求的科学测评体系。课程内容涵盖大模型及智能体的基础理论、测评集构建、评分标准、自动化与人工测评方法,以及特定垂直场景下的测评实战等方面。
33 4
|
6天前
|
机器学习/深度学习 人工智能 自然语言处理
AI在医疗领域的应用及其挑战
【10月更文挑战第34天】本文将探讨人工智能(AI)在医疗领域的应用及其面临的挑战。我们将从AI技术的基本概念入手,然后详细介绍其在医疗领域的各种应用,如疾病诊断、药物研发、患者护理等。最后,我们将讨论AI在医疗领域面临的主要挑战,包括数据隐私、算法偏见、法规合规等问题。
18 1
|
4天前
|
机器学习/深度学习 人工智能 算法
AI在医疗领域的应用与挑战
本文探讨了人工智能(AI)在医疗领域的应用,包括其在疾病诊断、治疗方案制定、患者管理等方面的优势和潜力。同时,也分析了AI在医疗领域面临的挑战,如数据隐私、伦理问题以及技术局限性等。通过对这些内容的深入分析,旨在为读者提供一个全面了解AI在医疗领域现状和未来发展的视角。
24 10
|
4天前
|
机器学习/深度学习 人工智能 监控
探索AI在医疗领域的应用与挑战
本文深入探讨了人工智能(AI)在医疗领域中的应用现状和面临的挑战。通过分析AI技术如何助力疾病诊断、治疗方案优化、患者管理等方面的创新实践,揭示了AI技术为医疗行业带来的变革潜力。同时,文章也指出了数据隐私、算法透明度、跨学科合作等关键问题,并对未来的发展趋势进行了展望。