目录
一、同义灵码功能介绍
1月8日,阿里云宣布其革命性产品——通义灵码 AI 程序员全面上线。这款 AI 程序员不仅是一款简单的编码助手,更是一个智能编程伙伴,能够大幅提升开发效率并降低技术门槛。
阿里云通义灵码AI程序员已全面上线,成为全球首个同时支持VS Code、JetBrains IDEs开发工具的AI程序员产品。
此次上线的AI程序员相比传统AI辅助编程工具,能力更全面,可以让开发者以更高效、更沉浸的方式完成编码任务,通过全程对话协作的方式,就能完成从0到1的业务需求开发、问题修复、单元测试批量生成等复杂编码任务。
代码是大模型应用最广泛的场景之一,随着大语言模型能力的不断增强,AI代码工具已从辅助编码升级到面向复杂任务的工程级协同编码。目前,通义灵码底层模型已升级至Qwen2.5-coder,代码生成准确率及生成速度均达到世界前列,结合智能体技术,复杂任务的解决效果显著提升。与此同时,通义灵码支持文件、图片、全工程代码检索等上下文和用户输入提示词自由组装,能更好地理解任务意图。
据介绍,通义灵码AI程序员率先在国内引入了多文件代码修改能力。例如,AI程序员会对工程内多个代码文件同时进行修改,开发者可以清楚地看到多个文件的生成过程及状态,并与原文件进行对比,开发者可以选择一键采纳或局部修改当前文件;当AI生成内容不符合预期或有需求变化时,可以通过快照功能回退并重新提问。
在单元测试任务中,用户可以选择当前代码变更、单个或多个代码文件等,批量生成单元测试。AI会自动进行编译、运行和报错修复,大幅提升测试的准确性和覆盖率。AI还可以自动感知编译或调试的报错信息,并根据要求给出修复解决方案和代码建议。
通义灵码AI程序员还可打破开发者编程语言的边界,Java开发者也能使用Python、JavaScript等多种语言,快速编写网页、小工具、小游戏。以从0到1开发一个具有用户登录、数据管理功能及美化的前端页面为例,过去纯人工开发需要前端及后端工程师配合,至少需要耗费半天时间,现在使用通义灵码AI程序员,一名程序员仅需10分钟就能完成整个开发过程,大幅提升业务开发效率。
通义灵码负责人丁宇表示,AI程序员的出现,正在改变软件工程师的工作方式,从AI辅助编程走向人与AI协同编程。不仅能缩短工程师的研发时间,让工程师专注于更具创新的研发任务,也大幅提升了企业的IT生产效率。同时,对于那些鲜少接触编程的泛开发者,AI程序员将使复杂的开发任务简单化,实现以前无法想象的创新落地。
自2023年问世以来,通义灵码已“入职”中华财险、哈啰集团、长安汽车、一汽集团等公司,插件下载量已超900万,累计生成15亿行代码,是国内最受欢迎的AI编程工具。
根据阿里最新财报,截至2024年第三季度,阿里云AI相关产品收入持续五个季度实现三位数同比增长。减少非优质项目业务后,2024年第三季度,阿里云的经调整EBITA为26.61亿元,同比增长89%,已经多个季度实现同比大幅增长。
目前,通义系列大模型在技术创新和行业应用上均位居大模型行业前列,中国一汽、联想、微博、携程、喜马拉雅、三得利(中国)等30多万企业客户已经接入通义大模型。
通义灵码AI 程序员的核心优势在于其广泛的开发工具兼容性,它打破了传统局限,成为全球首款同时支持 VS Code 和 JetBrains IDEs 的 AI 编程助手。借助自然语言处理技术,开发者能以日常对话的方式与 AI 顺畅交流,从而高效地协同工作,攻克复杂的编程难题。以开发一个集用户登录、数据管理功能于一体的前端页面为例,以往需前后端工程师携手合作,投入半天时间才能完成,而如今借助通义灵码 AI 程序员,单个程序员在短短 10 分钟内即可轻松实现从零到成品的跨越。
在此次全新上线的版本中,通义灵码 AI 程序员还首次实现了多文件代码批量修改功能,让开发者能够借助 AI 自动化地处理多文件级别的编码任务,如快速响应需求变更、精准修复代码缺陷、批量生成单元测试用例等。同时,它还拓展了多项开发能力,包括精准的上下文感知、深度的意图理解、持续的反思迭代以及灵活的工具使用等,这些功能的加持使得开发者在与 AI 程序员的协作中更加得心应手,能够灵活应对各种编码挑战。
通义灵码AI 程序员的问世,正重塑着软件工程师的日常工作模式。它大幅缩减了工程师的研发周期,使工程师能够将更多精力投入到创新性研发任务中,从而推动企业 IT 生产效率的显著提升。对于那些编程经验较少的泛开发者而言,通义灵码 AI 程序员的出现更是意义非凡,它将原本复杂繁琐的开发任务简化,助力他们轻松实现创新想法的落地,拓展了编程的边界和可能性。
随着大模型的持续进化,在语义理解、代码生成、开发工作流等方面的能力也获得了持续、全面的提升。你说,要是有个编程小助手,就像智能汽车能自动驾驶一样,咱们只需要动动嘴皮子,它就能嗖嗖地给咱们写出代码来,这画面是不是挺带劲的。没错,AI程序员,这个听起来就像科幻电影里的角色,现在正一步步走进现实。你知道吗?就在2024年3月12日,Cognition公司放了个大招,推出了全球头一个AI程序员——Devin,这可是AI和软件开发牵手共舞的新纪元啊。还有GitHub,他们也搞了个新花样,叫做GitHub Copilot Workspace,是基于GPT-4这个超级大脑打造的一款AI智能编程工具。不过呢,这些海外产品均基于闭源模型,包括GPT4o、Claude3.5等,在国内产品中无法使用。
再来看一下国内的AI程序员产品,主要以通义灵码AI程序员为代表。通义灵码 AI 程序员是阿里云和通义实验室联合开发的一款 AI 智能体,旨在辅助并部分替代人类程序员完成复杂的编程任务。
无论是哪家公司的AI程序员产品,他们的使用场景是类似的。开发者负责输入需求,然后AI程序员来理解需求和任务拆解,再交由开发者来确认计划,确认完成后AI程序员开始编码实现、自主测试和提交代码,最终开发者进行结果确认。在这个过程中我们比较关注AI程序员的三种使用场景,分别是缺陷修复、测试生成和需求实现。
第一个场景是,AI程序员具备强大的Bugfix Agents全自动缺陷修复能力。它具有项目感知能力,根据缺陷上下文,进行缺陷定位和信息收集,然后生成可用的经过验证的缺陷修复代码。开发者只需确认计划,AI程序员即可自动完成代码修复。整个过程是依靠多个Agents来协作完成的,成为每个开发者的Bugfix小助手。
第二场景是,UnitTest Agents全自动单测生成。单元测试是AI比较擅长的,并且可以大幅度提升代码质量,也是AI编码头部公司比较关注的领域。首先需要对UnitTest模型能力提升,这就需要对模型进行专项训练。第一个控制单元测试生成的数量,包括分支的覆盖;第二个规范性,比如Java单元测试范式的标准;第三个单元测试框架的支持,如JUnit4和JUnit5不能混淆,需要教会模型在不同框架下如何生成正确的测试用例;还有要保证生成的单元测试风格要统一等。通过这一系列的模型训练和优化,现在已经能做到单元测试一次性编译通过率达到40%左右。单元测试能不能实现达到近100%的通过率,这就需要用到Agent技术。通过Agent来建立一个复杂的工作流,包括生成单元测试、编译构建和运行、搜索工程信息、自主修复、报告生成、用例采纳等。
通义灵码AI程序员是基于通义大模型的AI编程智能体。我输入需求,AI程序员理解需求,进行任务拆解,我确定计划,AI程序员来编码实现,以及进行自主测试和提交代码,最后由我来确认。我可以提出待解决的问题,AI程序员就会阅读问题详情,然后完成代码库拉取并进行分析,AI程序员基于分析结果生成解决计划。这个时候,我可以查看AI程序员定位的代码文件及方法,同时我可以修改解决计划,给AI程序员增加额外的一个优化点。AI程序员根据计划拟定解决方案,我来查看AI程序员即将修复的代码片段,确认无误后就可以进行下一步了。AI程序员按照解决方案变更代码文件,这时我就可以查看变更后的代码Diff详情了。AI程序员生成合并请求标题及描述,我来完成提交合并请求,还可以查看合并请求。这就是通义灵码AI程序员的核心功能。
二、通义AI程序员JAVA实践
2.1 通过AI程序编写一个JAVA后台项目登陆页面
提示词1:简单提示词
帮我写一个基于springboot和vue搭建的后台管理项目,包含登陆页面和首页菜单管理
使用maven管理springboot项目
启动登陆接口报错
2025-01-10 00:06:51.920 ERROR 6307 --- [nio-8080-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Circular view path [login]: would dispatch back to the current handler URL [/login] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)] with root cause
javax.servlet.ServletException: Circular view path [login]: would dispatch back to the current handler URL [/login] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.)
at org.springframework.web.servlet.view.InternalResourceView.prepareForRendering(InternalResourceView.java:210) ~[spring-webmvc-5.3.23.jar:5.3.23]
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:148) ~[spring-webmvc-5.3.23.jar:5.3.23]
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:316) ~[spring-webmvc-5.3.23.jar:5.3.23]
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1405) ~[spring-webmvc-5.3.23.jar:5.3.23]
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1149) ~[spring-webmvc-5.3.23.jar:5.3.23]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1088) ~[spring-webmvc-5.3.23.jar:5.3.23]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:964) ~[spring-webmvc-5.3.23.jar:5.3.23]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.23.jar:5.3.23]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898) ~[spring-webmvc-5.3.23.jar:5.3.23]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:670) ~[tomcat-embed-core-9.0.68.jar:4.0.FR]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.23.jar:5.3.23]
/login访问失败,需要结合vue实现登陆页面
总结如下:
- 响应速度很快
- 生成结果不能直接使用,缺乏包管理工具以及启动类
- 需要多轮对话交互,交互成本高,需要编程经验
- 提示了也无法生成结果,前后端一起生成困难
提示词2:详细提示词
请基于Spring Boot框架创建一个后台管理项目的登录页面。具体要求如下:
项目结构:确保项目遵循标准的Spring Boot项目结构,包括
src/main/java
、src/main/resources
等目录。依赖管理:在
pom.xml
文件中添加必要的依赖,如Spring Web、Spring Boot DevTools、Thymeleaf模板引擎、Spring Security等,用于构建Web应用和提供安全功能。配置文件:在
src/main/resources
目录下创建application.properties
或application.yml
文件,配置数据库连接信息(如使用H2数据库)、服务器端口、Spring Security相关设置等。数据库设计:设计一个简单的用户表,包含用户ID、用户名、密码(加密存储)、角色等信息。使用JPA或MyBatis等ORM框架进行数据库操作。
登录页面:
- 使用Thymeleaf模板引擎创建一个简单的HTML登录页面,页面应包含用户名和密码输入框、登录按钮以及适当的错误提示信息。
- 页面样式可以简单明了,无需复杂的前端框架,但需确保用户体验良好。
控制器:创建一个控制器类,处理登录请求。使用Spring Security进行用户认证和授权。当用户提交登录表单时,验证用户名和密码,并根据用户角色重定向到相应的页面或返回错误信息。
安全性配置:配置Spring Security,包括用户详情服务(加载用户信息)、密码编码策略、HTTP安全策略等。确保登录页面、静态资源等无需认证即可访问,而其他管理页面需要认证和授权。
测试:编写单元测试或集成测试,验证登录功能的有效性。确保在不同情况下(如正确用户名和密码、错误用户名或密码、未输入信息等)都能正确处理并返回预期结果。
缺少启动类
启动成功
登陆成功进入后台管理首页
总结
1、提示词足够详细,生成的项目代码运行更准确,需要具备一些编程经验
2、自己根据错误排除代码问题并应用,但是不一致修复成功
3、多轮对话后未生成想要的文件
2.2 添加上下文:图片#codebase
提示词:理解当前项目代码,创建一个学生管理页面
总结
1、响应速度很快,不知道是否真的加载完所有代码
2、能够熟悉项目风格, 定位项目创建位置,但HTML代码过多可能会生成失败
3、能展示变更代码内容
2.3 添加上下文:图片#image
根据图片生成html网站
优化布局UI
总结
1、VSCode生成失败,无法自动创建文件
2、根据图片生成无法创建自动创建文件
3、只做了文字识别,没有实现网站的布局,无法优化UI
2.4 待优化
不支持角色提示词前置配置