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

作者:别象

进入 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。
  • 二是提示词工程,用精雕细琢的提示词配合模型训练,使生成的效果加倍提升。
  • 三是眼观六路,比如真实的开发者要写对下一行代码,不光要眼看当前文件的上下文,也要知道一些跨文件信息,比如调用另一个文件中的某个方法,这样可以减少一些幻觉问题的出现。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/587626.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FLUKE万用表17B+的电压档最大内阻

项目中遇到一个测量兆欧级别电阻两端电压的问题,发现按照上图中的电路搭建出来的电路测得的电压为8.25V左右,按理说应为9V才对,后来想到万用表测量电压档不同的档位会有不同内阻,测量的电阻应远小于万用表电压档内阻才有效。本次测…

顶尖页面性能优化跃升之道:uniapp首屏加载性能极致优化策略权威指南(白屏现象终结攻略)

页面加载性能优化至关重要,直接影响用户体验满意度及网站流量转化。优化加载性能可以减少用户等待时间,提升交互响应,有效减少出现白屏的情况,增加用户留存,同时有利于搜索引擎排名,对网站流量、品牌形象及…

【常规】解决win11的Edge浏览器掉线问题

文章目录 【问题】【解决】step1 右键点击wifi--【网络和Internet设置】step2 点击打开后,打开【高级网络设置】后边的箭头step3 进入下一级以后,点击【WLAN】右侧的箭头step4 【更多适配选项】--【编辑】step5 取消Internet协议版本6(TCP/IP…

php反序列化字符串逃逸

字符串逃逸 字符串逃逸是通过改变序列化字符串的长度造成的php反序列化漏洞 一般是因为替换函数使得字符串长度发生变化,不论变长还是变短,原理都大致相同 在学习之前,要先了解序列化字符串的结构,在了解结构的基础上才能更好理解…

Qt Creator导入第三方so库和jar包——Qt For Android

前言 之前了解了在Android Studio下导入so库和jar包,现在实现如何在Qt上导入so库和jar包。 实现 下面是我安卓开发(需调用安卓接口的代码)的目录(图1),此目录结构和原生态环境(Android Studi…

PS证件照

证件照尺寸 小一寸:2.2cm*3.3cm 一寸:2.5cm*3.5cm 像素413*295 (分辨率为300像素/英寸) 比例5:7 二寸:3.5cm*4.9cm 二寸照相比例是4:3,像素是626*413 蓝底:R&a…

python学习之词云图片生成

代码实现 import jieba import wordcloudf open("D:/Pythonstudy/data/平凡的世界.txt", "r", encoding"utf-8") t f.read() print(t) f.close() ls jieba.lcut(t) txt " ".join(ls)w wordcloud.WordCloud(font_path"D:/cc…

【Unity动画系统】详解Root Motion动画在Unity中的应用(二)

Root Motion遇到Blend Tree 如果Root Motion动画片段的速度是1.8,那么阈值就要设置为1.8,那么在代码中的参数就可以直接反映出Root Motion的最终移动速度。 Compute Thresholds:根据Root Motion中某些数值自动计算这里的阈值。 Velocity X/…

使用 Python 和 OpenCV 进行实时目标检测的详解

使用到的模型文件我已经上传了,但是不知道能否通过审核,无法通过审核的话,就只能 靠大家自己发挥实力了,^_^ 目录 简介 代码介绍 代码拆解讲解 1.首先,让我们导入需要用到的库: 2.然后,设…

《QT实用小工具·四十三》历史编辑器(支持历史搜索 关键字匹配)

1、概述 源码放在文章末尾 该项目实现了在输入框中输入部分信息能全部展现之前的历史输入信息&#xff0c;支持历史搜索和关键词匹配&#xff0c;项目demo演示如下所示&#xff1a; 项目部分代码如下所示&#xff1a; #include "historymodel.h" #include <QM…

Java发送请求-http+https的

第一步&#xff1a;建议ssl连接对象&#xff0c;信任所有证书 第二步&#xff1a;代码同时支持httphttps 引入源码类 是一个注册器 引入这个类&#xff0c;和它的方法create 注册器&#xff0c;所以对http和https都进行注册&#xff0c;参数为id和item&#xff0c;其中http的…

【已解决】pandas读excel中长数字变成科学计数法的问题

pandas 读excel中的长数字时&#xff0c;即使excel中已经设置为文本&#xff0c;读进df后也会自动变成科学计数法。 在日常的数据分析和处理工作中&#xff0c;Excel和pandas是数据分析师们不可或缺的得力助手。然而&#xff0c;在使用pandas读取Excel文件时&#xff0c;我们有…

CSAPP | Floating Point

CSAPP | Floating Point b i b_i bi​ b i − 1 b_{i-1} bi−1​ … b 2 b_2 b2​ b 1 b_1 b1​ b 0 b_0 b0​ b − 1 b_{-1} b−1​ b − 2 b_{-2} b−2​ b − 3 b_{-3} b−3​ … b − j b_{-j} b−j​ S ∑ k − j i b k 2 k S\sum_{k-j}^{i}b_k\times2^k S∑k…

如何批量复制多个文件到多个目录中(批量复制文件,多对多文件高效操作的方法)

首先&#xff0c;需要用到的这个工具&#xff1a; 度娘网盘 提取码&#xff1a;qwu2 蓝奏云 提取码&#xff1a;2r1z 现在开始说具体操作 1、首先&#xff0c;我准备了3个文件夹和两个可爱的图片&#xff1a; 当然&#xff0c;在实际使用的时候肯定不止这些&#xff0c;我这…

升级 Vite 5 出现警告 The CJS build of Vite‘s Node API is deprecated

错误描述 vue3-element-admin 项目将Vite4 升级至 Vite5 后,项目运行出现如下警告: The CJS build of Vites Node API is deprecated. See https://vitejs.dev/guide/troubleshooting.html#vite-cjs-node-api-deprecated for more details.图片 问题原因 Vite 官方弃用 C…

怎么用微信小程序实现远程控制台球室

怎么用微信小程序实现远程控制台球室呢&#xff1f; 本文描述了使用微信小程序调用HTTP接口&#xff0c;实现控制台球室&#xff0c;控制球台上方的照明灯&#xff0c;单台设备可控制多张球台的照明灯。 可选用产品&#xff1a;可根据实际场景需求&#xff0c;选择对应的规格 …

【源码解析】深入Pandas的心脏DataFrame 含十大功能、源码实现与编程知识点

作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 欢迎加入社区&#xff1a;码上找工作 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 python数据分析…

Arcpy开发记录

一.GDB数据库相关 1.单独的shape更新时&#xff0c;不会有限制&#xff0c;数据会自动截取 2.在GDB下&#xff0c;使用UpdateCursor更新字段时&#xff0c;填入的数据长度必须与字段长度要求一致&#xff0c;否则报错&#xff1a; 二.arcpy.da.UpdateCursor相关 updateRow后关…

【无线通信开发应用】nRF905数据手册深度解读

希望通过两个stm32、两个nRF905无线通信模块、串口来实现两机通信。具体功能为&#xff1a; 板子A、B分别包含一个stm32单片机和一个nRF905无线模块&#xff0c;欲实现板子A、B之间的通信。 其中&#xff0c;PC端串口助手可向板子A的stm32发送字符‘A’控制板子B上的LED亮灯&am…

Linux migrate_type初步探索

1、基础知识 我们都知道Linux内存组织管理结构架构&#xff0c;顶层是struct pglist_data&#xff0c;然后再到struct zone&#xff0c;最后是struct page。大概的管理结构是这样的&#xff1a; 根据物理内存的地址范围可划分不同的zone&#xff0c;每个zone里的内存由buddy…