通义灵码让AI帮你实现自动化编程

简介: 通义灵码是由阿里云与通义实验室联合开发的智能编码辅助工具,具备行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答及异常报错排查等功能。该工具支持200多种编程语言,兼容主流IDE,如Visual Studio Code、Visual Studio和JetBrains IDEs。通义灵码在Gartner发布的AI代码助手魔力象限中表现出色,成为唯一进入挑战者象限的中国科技公司。目前,通义灵码下载量已超过470万,每日辅助生成代码超3000万次,被开发者广泛采用。

通义灵码,是阿里云与通义实验室联合打造的智能编码辅助工具,提供行级/函数级实时续写、自然语言生成代码、单元测试生成、代码优化、注释生成、代码解释、研发智能问答、异常报错排查等能力,提供代码智能生成、研发智能问答能力。

国际市场研究机构 Gartner 发布业界首个 AI 代码助手魔力象限,基于通义大模型技术打造的通义灵码在产品功能和市场应用等方面表现优秀,阿里云也成为唯一进入挑战者象限的中国科技公司。

通义灵码上线不到一年就入围 Gartner 挑战者象限,产品能力得到广泛认可。通义灵码底层基础模型已升级至 Qwen2,熟练掌握 200 多种编程语言,同时兼容 Visual Studio Code、Visual Studio、JetBrains IDEs 等主流编程工具,可以辅助写代码、读代码、查 Bug、优化代码,并提供研发智能问答等能力。通义灵码还支持上传企业私域知识库,实现私域知识问答,让 AI 推荐的代码更贴合企业规范。

目前,通义灵码下载量已超 470 万,每日辅助开发者生成代码超 3000 万次,已有超亿行代码被开发者采纳。一汽集团、中华财险以及哈啰集团等企业都在使用通义灵码,研发提效 10% 以上,AI 代码生成占比近 30%。

快捷键的运用

1.1 默认快捷键

通义灵码的许多操作有开箱即用的快捷键,以下是比较常用的几项:

请在此添加图片描述

另外,在通义灵码的问答面板里,可以使用 Cmd+Enter(Macos/Linux)或 Ctrl+Enter(Windows)在输入问题时换行(直接按下 Enter 回车键会直接发送当前提问内容给模型)。

备注说明:更换生成结果快捷键会提高生成的多样性参数(temperature),有时能生成更长或更发散的内容。

1.2 自定义快捷键

JetBrains IDE 的快捷键设置方法。打开菜单栏的 Settings(设置)页面,左侧点击 Keymap(快捷键),然后找到 Plugins -> TONGYI Lingma 子项,展开即可查看和编辑快捷键。

请在此添加图片描述

VSCode 的快捷键设置方法。点击 IDE 左下角的设置图标,点击键盘快捷方式菜单,在页面中搜索 TONGYI Lingma 即可查看和编辑所有快捷键。

请在此添加图片描述

请在此添加图片描述

备注说明:为了便于识别,VSCode 的大部分通义灵码快捷键都是以 TONGYI Lingma 命名的,但触发内联建议、显示上一个/下一个内联建议快捷键复用了已经存在系统级功能项,因此命名风格上稍有差异。

配置的运用

2.1 进入配置面板

JetBrains IDE 的配置面板在设置页面的顶级菜单 TONGYI Lingma 板块,可以通过点击状态栏的通义灵码小图标,选择“高级设置”项快速打开。

请在此添加图片描述

请在此添加图片描述VSCode 的配置面板同样可以从状态栏右下VSCode 的配置面板同样可以从状态栏右下角的通义灵码图标点击“高级设置”进入。

角的通义灵码图标点击“高级设置”进入。

请在此添加图片描述

2.2 常用配置项

2.2.1 按文件类型禁用自动补全

若某些类型文件的自动补全结果较为打扰,可将该文件后缀类型添加到列表中,多种尾缀之间使用英文逗号分隔,例如:txt,md。

JetBrains IDE 配置区域:

请在此添加图片描述

备注说明: 禁用特定文件类型的补全功能主要是禁用自动补全触发,若在文件内使用快捷键手工触发补全(默认快捷键位 Alt+P),依然能够使用大模型的内容自动续写生成的功能。

2.2.2 下拉提示时保留补全结果

默认情况下,当 IDE 有基于语法的下拉补全提示时,通义灵码会自动停止展示大模型补全内容,避免视觉上的冲突。

请在此添加图片描述

若希望通义灵码总是生成大模型补全,可以勾选该配置项,效果如下图所示,此时按下 Tab 键将会采纳大模型的生成结果:

请在此添加图片描述

JetBrains IDE 配置区域:

请在此添加图片描述

VSCode 配置区域:

请在此添加图片描述

2.2.3 生成长度控制

通义灵码支持将自动触发和手工触发的代码续写能力分别设置生成长度参数。通常建议将手工触发(默认快捷键 Alt+P) 设置得比自动触发稍长。

JetBrains IDE 配置区域:

请在此添加图片描述

VSCode 配置区域:

请在此添加图片描述

备注说明: 这个配置项只是设置模型允许生成的最大长度,若模型某次补全生成的内容长度原本就较短,通过修改此配置并不能让模型生成的内容变长。

代码注释的运用

3.1 通过注释引导补全生成

在没有额外注释引导的情况下,模型只能根据当前代码的上下文,以及项目内引用和查找到的相似代码来猜测接下来可能要编写的内容。当模型的猜测不准确时,可以尝试通过增加代码的方式来引导模型接下来应当实现什么代码。

例如在这段代码里,模型首先猜测了一个 CHAT_CONTEXT 字段,但这并非我们期望的内容:

请在此添加图片描述

接下来,我们增加一行注释,告诉模型下一个字段是历史记录,再次换行模型生成了符合预期的字段和相应的数据填充代码:

请在此添加图片描述

3.2 使用描述生成方法

通过“编辑区的代码注释引导补全”或“使用通义灵码问答面板”都能实现基于注释生成整个方法的目的。由于通义灵码的智能问答场景,使用的模型参数会比代码补全模型的参数量更大,因此,对于这类场景,通常更推荐在问答面板里直接提出需要生成的问题描述。

请在此添加图片描述

如果针对期望生成的语言或方法签名(方法名、参数类型、返回值类型)有特殊要求,可以在提问的时候将方法签名预先描述好。 例如:

请在此添加图片描述

跨文件索引的运用

4.1 及时保存文件,更新索引

通义灵码的跨文件索引是抑制代码幻觉的重要机制。通过自动找到当前上下文用到的类型和方法定义,模型能感知到项目里其他文件里的类型具有哪些成员,方法具有哪些参数。

在首次打开新的项目时,通义灵码会自动创建项目的文件索引,此后每次文件保存时,都会触发单个文件增量的索引更新。然而由于 IDE 里的文件通常存在内存缓存,在刚刚编写完一个文件,切换到另一个文件时,可能因为本地索引尚未更新,导致无法感知新增加或修改过的内容,依然按照原本类型结构进行推理。

例如在某代码项目中,我们给 Pet 对象,新增加了一个 saleable 属性。

请在此添加图片描述

然后切换到另一个文件,尝试让大模型进行补全,但是模型推理出的逻辑使用的却是另一个不太相关的字段。

请在此添加图片描述

若要消除这种信息差异,可在编辑完前一个文件时,主动按下文件保存(快捷键Ctrl+S), 再继续编辑其他文件,生成的内容就能正确引用到修改过的对象结构了。

请在此添加图片描述

4.2 针对 MyBatis 场景的优化

除了 Java、Python、JavaScript 等主流语言项目的跨文件引用,通义灵码还支持在编写 MyBatis 的 xml 文件时自动感知 Mapper 对象上引用的表结构类型。例如在编写如下 insert 语句时,插件会利用当前项目中的 TexiOrder 类型信息,确保生成的每个字段都是正确的。

请在此添加图片描述

请在此添加图片描述

及时清理上下文

5.1 适时清空上下文

在同一次会话里,前文中的对话内容会在每次向大模型提问时,自动作为上文提供给模型。当实际要提问的是一个与前文无关的问题时,这些额外的信息可能会对模型的回答带来干扰。

请在此添加图片描述

此时可以点击问答面板顶部的新建会话按钮,在新的会话里进行提问,或使用 /clear context 命令,对上下文进行清空,减少上文对接下来问答的干扰。

请在此添加图片描述

5.2 查看历史会话

创建新的会话后,如果需要寻找此前提问过的内容,可以使用历史记录功能回到之前的话题,并继续追问。

请在此添加图片描述

基于代码提问

6.1 通用问答

若需要基于特定代码段的内容进行提问,除了将代码内容直接贴入问答区,也可以先在代码编辑器里框选一段代码,然后在问答区针对这段代码进行提问,例如:

请在此添加图片描述

6.2 内置代码任务

通义灵码插件内置了解释代码、生成单元测试、生成代码注释、生成优化建议四个代码任务,通义灵码大语言模型对这些任务进行过专项训练。例如,在需要生成单元测试的时候,使用内置任务会比框选代码之后再输入生成单元测试效果更佳。

代码任务有三种使用方式,最常用的是在方法定义的开头,点击通义灵码小图标,在下拉选项中直接选择需要执行的任务。

JetbriansIDE 的下拉菜单在方法上方:

请在此添加图片描述

VSCode 的下拉菜单在 IDE 顶部:

请在此添加图片描述

第二种方式是选择代码后点击鼠标右键,选择通义灵码菜单。

请在此添加图片描述

第三种方式是选择代码后在问答面板输入斜线(/)激活内置任务菜单,然后选择相应任务。

请在此添加图片描述

提示词的技巧

7.1 在提问中引用选择的代码

在提问时,若同时在代码编辑区圈选了文本或代码段,则被选择的内容会自动以 Markdown 引用的格式被附加到提问内容的最后,因此若在提示词中提及选择的代码,应对使用“如下代码”或“以下内容”。例如:

  • 正确的说法:请检查以下代码是否存在下标越界风险。
  • 错误的说法:请检查选中的代码是否存在下标越界风险。(模型并不知道选中的代码是什么)

7.2 在使用命令的时候,追加信息

通过在命令后,追加更多的辅助信息,为问答提供更多的上下文,以获得更符合期望的回复。

请在此添加图片描述

请在此添加图片描述

7.3 通过多轮对话生成有效代码

在与大语言模型的对话过程中,给到上下文越多,生成出来的结果越符合用户的预期。因此,用户可以基于上一轮的对话的基础上,再进行问答,这样,后续的提问的上下文会更多,因此生成的结果更符合整个历史上下文。当然,也会出现上一轮的历史信息干扰的现象,这个时候,用户需要适时地去清空上下文。

请在此添加图片描述

在上一轮的基础上,再继续追问。

请在此添加图片描述

7.4 为模型提供参考示例

当需要模型按照指定的格式输出,或遵循特定的前置规则时。与其用文字描述,不如提供一个参考实例,往往能达到更好的效果。例如有一份程序的运行结果文件,可以让通义灵码整理成所特定的 JSON 结构文档。首先打开文件,全选问题内容,然后在问答区域进行提问。对比下述两种提示词,后者能更稳定的输出预期的数据格式。

  • 提示词 1:将测试报告整理成 JSON 格式,每个测试结果是一个 JSON 结构,用例名称放到 name 字段,是否成功放到 success 字段,运行耗时放到 duration 字段(单位毫秒),测试覆盖率放到 coverage 字段,detail 字段的值是一个 JSON,将每次的用例输入和输出放到其中的 input 和 output 字段。
  • 提示词 2:将测试报告整理成 JSON 格式,如输入报告:
…报告内容略…

应输出的数据为:

[
 {
   
    “name”: “超出有效页码范围时,应返回空列表并提示无更多数据”,
  “duration”: 3434,
  “coverage”: 80,
  “detail”: [
    {
   
      “input”: “…”,
    “output”: “…”
    }
]
  }
]

请以此为例,生成测试的报告。

7.5 为模型设定身份

相比单纯的提问,预先给模型提供身份信息也能够有效的提升模型生成结果的稳定性和准确性。

以生成测试用例为例,打开接口文档文件,全选文件内容,然后在问答区域进行提问。对比下述两种提示词,后者能给生成质量更高、覆盖率更好的用例。

  • 提示词 1:请根据以下接口文档生成测试用例。
  • 提示词 2:你是一位经验丰富的测试工程师,特点是对细节异常敏感,并且能够高效地识别潜在的问题和边界情况,请根据以下的接口文档生成详尽的测试用例,确保所有预期的功能行为都被验证。

相关文章
|
6月前
|
人工智能 运维 Cloud Native
解密通义灵码:软件研发工具的“大脑”
解密通义灵码:软件研发工具的“大脑”
|
人工智能 搜索推荐 云栖大会
解密!通义智文-你的AI阅读助手!
通义智文是基于通义大模型的AI阅读助手,网页阅读、论文阅读、图书阅读和自由阅读,用AI帮你读得多、读得快、读得懂。 通过文档场景化阅读、结构化导读、给我灵感、多文档处理等亮点功能和文档智能大小模型协同的核心技术。让AI帮你更准确,更深入,更专业的读懂文档,沉淀专属知识资产。 产品已于2023年10月31日在云栖大会正式对外发布,现免费公测全面开放。
1875 1
解密!通义智文-你的AI阅读助手!
|
12月前
|
人工智能 IDE Java
全面开测:AI智能编码辅助工具通义灵码
全面开测:AI智能编码辅助工具通义灵码
63380 7
全面开测:AI智能编码辅助工具通义灵码
|
10天前
|
人工智能 自然语言处理 安全
创新不设限,灵码赋新能:通义灵码新功能深度评测
自从2023年通义灵码发布以来,这款基于阿里云通义大模型的AI编码助手迅速成为开发者心中的“明星产品”。它不仅为个人开发者提供强大支持,还帮助企业团队提升研发效率,推动软件开发行业的创新发展。本文将深入探讨通义灵码最新版本的三大新功能:@workspace、@terminal 和 #team docs,分享这些功能如何在实际工作中提高效率的具体案例。
835
|
16天前
|
人工智能 Java 开发者
基于通义灵码轻松进行编程 在 AI 师傅(AI-Shifu.com)学的通义灵码
作为一名Java开发者,通过使用通义灵码个人版学习Python,学习效率提升了80%。根据AI师傅平台的指导,高效利用AI辅助学习的主要步骤包括:1. 描述需求,了解所需技术;2. 细化需求描述,便于AI高效编程;3. 发送参考指令给AI;4. 执行代码测试;5. 查看代码注释;6. 优化代码。
835
42 1
|
16天前
|
人工智能 自然语言处理 搜索推荐
通义灵码:AI辅助开发工具的新范式
在大模型时代,阿里云的通义灵码作为AI辅助开发工具,通过提高开发效率、简化协作和降低成本,重塑了软件开发的核心要素。通义灵码基于大模型和自然语言处理技术,实时辅助代码编写、调试和优化,提供个性化支持,显著提升了开发体验。未来,AI将在软件开发中发挥更大作用,通义灵码将继续引领这一变革。
57 0
通义灵码:AI辅助开发工具的新范式
|
19天前
|
人工智能 IDE API
在我的开源项目(AI Godot 桌宠)中使用通义灵码
作为一名AI代码助手的忠实用户,我近期尝试了阿里开源的Qwen模型。通过在个人项目——一个由Godot引擎开发的AI桌宠软件中测试Qwen,我发现其在处理小众语言(如GDScript)时表现出色,能够快速准确地解决问题,甚至优化了我的代码。此外,Qwen在GitHub Actions自动化打包等复杂任务上的表现同样令人满意。其高效的代码补全速度更是超越了付费的GitHub Copilot。这次体验让我对开源AI工具刮目相看,强烈推荐大家试用。
|
2月前
|
人工智能 IDE 程序员
通义灵码 AI 程序员正式上线!
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。
346 4
|
2月前
|
缓存 前端开发 IDE
通义灵码企业代码补全增强使用实践
通义灵码提供了企业代码补全增强的能⼒,在开发者使⽤通义灵码 IDE 插件的⾏间代码补全时,可以结合企业上传的代码库作为上下⽂进⾏⾏间代码补全,使代码补全更加贴合企业代码规范、业务特点。本⽂将分享如何构建⾼质量的企业代码库,以及开发者在前端和后端开发场景的使⽤实践。
|
3月前
|
IDE 测试技术 开发工具
用好通义灵码,让这款 AI 编码助手帮你做更多工作
通义灵码提供了一系列快捷键和配置选项以增强开发体验。