首页 > 其他分享 >通义灵码实战系列:一个新项目如何快速启动,如何维护遗留系统代码库?

通义灵码实战系列:一个新项目如何快速启动,如何维护遗留系统代码库?

时间:2024-04-30 15:45:59浏览次数:22  
标签:通义 代码 如何 开发者 IDE 灵码 模型

作者:别象

进入 2024 年,AI 热度持续上升,翻阅科技区的文章,AI 可谓是军书十二卷,卷卷有爷名。而麦肯锡最近的研究报告显示,软件工程是 AI 影响最大的领域之一,AI 已经成为了软件工程的必选项,也有研究称开发者每天的事务性工作可能占到了七成左右,比如单侧编写等,而这部分恰好是 AI 所擅长的。让大模型辅助工程师加速编码和提升质量,可以让我们更加聚焦于剩下的 30% 的业务和技术创新。

日常工作中经常听到工程师的一些诉求和痛点。比如说单元测试编写比较费时间;接手了一个新的代码库,一些祖传代码理解成本比较高;排查问题查资料要跳转到一些浏览器,并且很难找到合适的答案,会显得焦头烂额。我作为智能编码研究者,同时也是开发者,这次终于能够华佗打点滴,医者自医了。

总结下来,开发者的主要诉求有三点,1)快速编码,快速解决问题,快速完成需求。2)减少 IDE 跳出,享受沉浸式心流。3)减少重复编码,排除语言限制。

比如我要做一个网页,虽然我不懂前端,但在大模型辅助下,可以帮助我编写 HTML 和 JS 的代码,这样我能够更加聚焦于业务的实现和创新。一句话概括来讲就是开发者来 IDE 只干三件事,写代码,写代码还是写代码,通义灵码便是以编码助手的形态来帮助开发者提质和提效的。

通义灵码的核心功能有行级/函数级的自动续写、自然语言编码、注释生成、单元测试生成、代码解释、代码优化、异常报错、智能排查、技术文档搜索等等。同时它也提供了企业化个性能力,比如报表展示以及专有云的各种部署形态。

通义灵码支持 Java、Python、Go 等 200 多种主流编程语言,目前已经在 VS Code 和 JetBrains 全家桶 IDE 上的插件市场上架了,大家诉求很高的 Visual Studio 也即将在下个月上架, 并且这些 IDE 的远程开发模式也都是支持的,比如说 Remote、SSH、WSL 等等。

总体来讲通义灵码是基于通义大模型,结合海量开源知识以及阿里云的文档 SDK 开发的,从而有了上层的代码补全和研发问答的核心能力。再上层便是我们工程侧,比如说有问答意图识别、用户习惯学习、Prompt 工程、跨文件学习等等。从基模到垂直领域的模型,再到端侧核心能力的整体同步建设,支撑了我们在 IDE 上可以使用通义灵码这款产品。

通义灵码能力展示

有同学会问了,纸上得来终觉浅,来点实战行不行?

01/ 使用 Spring Boot 创建一个新项目

接下来就使用 Spring Boot 创建一个新项目作为案例向大家展示通义灵码的能力。首先我们向灵码提问:如何通过 Spring Boot 编写一个照片上传下载的 Web 程序?灵码马上就能反应过来并开始生成,先是编写 Spring Boot 的 XML 文件以及一些数据结构配置文件,接着写 controller 层、service 接口以及 service 的实现类,大家会看到 AI 写代码的速度是很快的,并且思路非常清楚,知道需要哪些文件以及步骤,以及怎么把 Web 服务给部署起来。

我们可以随时随地和灵码通过问答的方式来交互。 如果你对它的回答有任何的不满意,或者是想让灵码扩充一些比较概括性的代码,让它续写一下,再或者是遇到了某种报错或特别的诉求寻找解决方案等等,都可以通过追问的方式进一步和灵码沟通,灵码会很乐意在问答的的过程中为你提供帮助。

比如我提问有没有通过 memory 的内存的数据库来存储的例子,而不是用 mysql 数据库,灵码就可以领会我的意思,并提供一个 redis 的方案来做这个存储。

02/ 维护遗留系统代码库

另外一个比较常见的场景是我们作为工程师会经常去维护别人留下来的一个老旧系统,可能里面也会有一些祖传代码。那么灵码解释代码这样一个预知任务的能力就可以更好的得到体现了。

比如说有这样一段代码,if else 非常多,也比较杂乱。我们可以点击方法上方的一个快捷入口,让灵码解释一下。这里我们有一个设计,就是灵码会首先给出一个相对比较简短的 high level 解释,帮助开发者能更快的理解这段代码的意思。如果开发者想要更加具体的一些解释,可以通过我们底下的追问按钮有更详细的回答,英文系统叫 in detail,灵码会给出更加具体的解释。

单元测试也是个老生常谈的话题,人人都知单测好,但是能真正做到的又不多。单元测试可以提高代码的可维护性,让代码更加健壮,并且其他人来接手的时候也可以更好维护一些,但是工程师的日常开发需求会更大一些。

单测客观上讲,在短期内是肯定是相对费时间的一件事情,但很多开发者就会往往追求短期的省事,而抛弃了远期的利益。而灵码就可以更加快速的帮助工程师来编写单元测试,提高单测的覆盖率,提升代码库的可维护性。

代码优化也是一个高频场景,之前有很多用户的诉求,希望有这样一个能力。用户可以通过框选右键,也可以点击方法上方的快捷入口来触发代码优化。不过客观上讲,代码优化它是一个很宽泛的词,它设计了风格优化、缺陷修复、程序重构、安全性优化等等。所以我们也在尽我们所能来提升代码优化的模型能力,让开发者的代码质量更高。

最后介绍一下我们的运行调试错误排查能力。当 IDE 遇到一些 runtime 报错的时候,灵码会在报错堆栈中提供一键排错的功能,点击一键排错的按钮后灵码会自动的采集报错堆栈,并定位到出错代码的上下文,帮助用户生成一个报错排查的提示词来提问模型,寻求解决方案。这个功能目前在 IDEA 和 Java 中放开,后续也会在各个端侧和各个语言中放出。

通义灵码的产品亮点及优势

首先通义灵码产品特别关注开发者的体验,开发者是我们的用户。我们针对 IDE 的原生视觉做了很多交互设计上的努力,来贴合开发者的使用习惯。同时在编码过程中,通过补全的触发时机、长度选择、模型速度等层面都做了处理,助力开发者的编码心流体验。

朱熹老先生说过,读书有三到,谓心到眼到口到。对于灵码来说,要生成的准,需要:

  • 一是修炼内在,强大模型,学习更多的优质数据,比如阿里云自身的一些 SDK 跟 OpenAPI。
  • 二是提示词工程,用精雕细琢的提示词配合模型训练,使生成的效果加倍提升。
  • 三是眼观六路,比如真实的开发者要写对下一行代码,不光要眼看当前文件的上下文,也要知道一些跨文件信息,比如调用另一个文件中的某个方法,这样可以减少一些幻觉问题的出现。

最重要的,也是开发者比较关注的安全可控因素。通义灵码在大模型的生成过程中,所有代码数据仅会用于模型推理,中间不会做任何存储,更不会用来训练。同时我们也提供了两个模型,一个是云端大模型,另外一个是纯本地运行的小模型,不联网、速度快。这两种模型支持一键切换,满足我们在不同网络环境以及不同的补全强度诉求下的编码需求。

点击此处,快速体验通义灵码

标签:通义,代码,如何,开发者,IDE,灵码,模型
From: https://www.cnblogs.com/alisystemsoftware/p/18168124

相关文章

  • 通义灵码实战系列:一个新项目如何快速启动,如何维护遗留系统代码库?
    作者:别象进入2024年,AI热度持续上升,翻阅科技区的文章,AI可谓是军书十二卷,卷卷有爷名。而麦肯锡最近的研究报告显示,软件工程是AI影响最大的领域之一,AI已经成为了软件工程的必选项,也有研究称开发者每天的事务性工作可能占到了七成左右,比如单侧编写等,而这部分恰好是AI所擅长......
  • 如何有效地评估待用于微调的样本质量
    一、什么是大模型指令微调(instructiontuning)大模型指令微调(InstructionTuning)是一种针对大型预训练语言模型的微调技术,其核心目的是增强模型理解和执行特定指令的能力,使模型能够根据用户提供的自然语言指令准确、恰当地生成相应的输出或执行相关任务。指令微调特别关注于提升模......
  • 如何防止源代码泄露?6种企业防泄密解决方案
    在数字化转型浪潮中,源代码成为企业宝贵的核心资产,其安全性直接关系到企业的生存和发展。源代码泄露不仅会导致商业秘密外泄,还可能造成严重的经济损失和品牌信誉下降。为此,采用高效的防泄密措施,如华企盾DSC数据防泄密系统,成为企业保护源代码不可或缺的策略。以下是结合华企盾DSC系......
  • react中如何区分什么场景下应该使用useEffect,什么场景下应该使用发布订阅模式,进行通信
    在React中,useEffect和发布订阅模式(Pub/Sub)解决的是不同层面的问题,因此它们的使用场景也有所不同。useEffect的使用场景数据获取:当组件挂载后需要从服务器获取数据时,可以使用useEffect。同时,当依赖项发生变化时,它也能帮助重新获取数据。副作用处理:任何需要在渲染之外进行的......
  • 项目中如何跟踪资源利用率
    发展业务和服务是每个组织的首要任务。但是,仅仅把资源分配到项目上并不能确保会有高效率的工作产出。为了达到最高效率,这些资源必须在可以计费的或有战略意义的工作上得到有效利用。资源利用率是衡量项目是否成功的一个关键指标。通过跟踪资源如何被利用,可以确保组织内的每项资源......
  • springboot~AutoConfigureAfter如何控制Bean的注入顺序
    这个文章主要介绍一下@AutoConfigureAfter在spring框架中的作用,在使用过程中,很多开发人员在使用它的时候都出现了问题,问题比较多的就是它们的注册顺序总不是我们预期的,下面介绍一下正常的使用方法。@AutoConfigureAfter用在配置类上面,即需要在@Configuration修饰的类上,而不是@Co......
  • Hashtable和ConcurrentHashMap如何实现线程安全
    感谢一起重温此知识点的同学--糖糖HashMap线程不安全,效率高put方法没有锁//任意地方声明HashMap,点击put即可进入源码HashMap<String,String>hashMap=newHashMap();hashMap.put("heart","糖糖");//HashMap.put(key,value)部分源码publicVput(Kkey,Vvalue){......
  • 如何通过前后端交互的方式制作Excel报表
    前言Excel拥有在办公领域最广泛的受众群体,以其强大的数据处理和可视化功能,成了无可替代的工具。它不仅可以呈现数据清晰明了,还能进行数据分析、图表制作和数据透视等操作,为用户提供了全面的数据展示和分析能力。今天小编就为大家介绍一下,如何通过葡萄城公司的纯前端表格控件Spre......
  • 汽车制造业安全事故频发,如何才能安全进行设计图纸文件外发?
    汽车制造业产业链长,关联度高,汽车制造上游行业主要为钢铁、化工等行业,下游主要为个人消费、基建、客运和军事等。在汽车制造的整个生命周期中,企业与上下游供应商、合作商之间有频繁、密切的数据交换,企业需要将设计图纸等文件外发给外部合作商,同时也需要接收外部的反馈数据和协调文......
  • 测试新人,如何快速上手一个陌生的系统!
    大家好,我是狂师!作为刚不行不久的测试新人,面对一个陌生的系统时,可能会感到有些手足无措。面对一个全新的系统系统,如何快速上手并展开有效的测试工作是一个重要的挑战。本文将探讨测试新人如何通过一系列步骤和策略,快速熟悉并掌握新系统的测试要点,从而提高测试效率和质量。本文旨......