通义灵码让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:你是一位经验丰富的测试工程师,特点是对细节异常敏感,并且能够高效地识别潜在的问题和边界情况,请根据以下的接口文档生成详尽的测试用例,确保所有预期的功能行为都被验证。

相关文章
|
3天前
|
自然语言处理 IDE 测试技术
通义灵码——有了它让我的编程效率和质量直线上升!
作为一名大数据开发工程师,我每天与代码和数据打交道,享受解决复杂问题的乐趣。最近,我遇到了一位超级“码”力助手——通义灵码。它不仅是一个简单的代码补全工具,更像是一个拥有高度智慧的编程伙伴,能够理解我的编程意图,给出最合适的建议,大大提升了我的工作效率和编程体验。本文将分享如何在VsCode中安装和使用通义灵码,以及它在我的实际编程工作中发挥的重要作用。
|
11天前
|
存储 人工智能 安全
从梦想到现实:十年见证AI自动化漏洞修复的演变
2014年,我怀揣着利用科技创造更安全数字世界的梦想,提出了通过云平台自动化修复第三方网站漏洞的构想。十年后的2024年,随着AI技术的崛起,这一梦想已成为现实。如今,用户只需简单注册并安装插件,AI系统就能自动检测、修复漏洞,整个过程高效、智能。AI不仅提升了系统的可靠性和效率,还具备自我学习能力,使安全防护更加主动。未来,我将继续用AI探索更多可能,推动技术的发展,不断完善这个充满智慧与安全的数字世界。
35 3
从梦想到现实:十年见证AI自动化漏洞修复的演变
|
6天前
|
人工智能 开发者
通义灵码融入南京大学 AI 编程创新课,让大学生释放想象力
南京大学软件学院副教授钦老师将通义灵码引入了 X 层级课程《人工智能驱动编程》中,通过将通义灵码智能编码实践与传统编程语言教学融合的方式,让学生切身体会人工智能、大模型技术对编程学习方式带来的改变。
|
6天前
|
人工智能 自然语言处理 前端开发
用通义灵码,从 0 开始打造一个完整APP,无需编程经验就可以完成
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。本教程完全免费,而且为大家准备了 100 个降噪蓝牙耳机,送给前 100 个完成的粉丝。获奖的方式非常简单,只要你跟着教程完成第一课的内容就能获得。
|
8天前
|
人工智能 算法 新制造
走进北京科技大学,通义灵码与企业高校共筑 AI 创意课堂
近日,通义灵码有幸参与到一场由伊利集团主办的 AIGC 生态创新大赛路演舞台,与高校专家、企业代表、青年学子共同探讨 AIGC 创意应用,交流企业在数智领域转型、青年开发者科技创新的思路和落地实践。
|
9天前
|
自然语言处理 算法 开发工具
阿里云通义灵码:开启高效编程之门的神奇工具
阿里云通义灵码,基于先进的人工智能技术,为开发者提供高效、高质量的代码生成服务。它简化了软件开发流程,降低了编程门槛,使开发者能够更快捷地实现创意,无论是新手还是资深人士,皆能从中受益,享受编程的乐趣。通过阿里云平台轻松注册、安装插件,即可体验其强大的功能,开启智能化编程新时代。
|
16天前
|
人工智能 C语言 Python
AI师傅+通义灵码=零基础小白上手python真·不是梦
作为一名不懂编程的设计师,我一直渴望掌握AI辅助设计。在快刀青衣的推荐下,我尝试了AI师傅和通义灵码,成功写出了第一个Python程序,并理解了编程的基本概念。通过AI师傅的引导和通义灵码的帮助,我顺利完成了Coursera上的Python课程,获得了两张证书。这种学习方式让编程变得不再遥不可及,为我的未来学习打开了新大门。
|
16天前
|
数据采集 人工智能 安全
通过 AI 师傅(AI-Shifu.com)学通义灵码--小白篇
作为一名零编程经验的产品经理,我通过“AI-Shifu”和“通义灵码”体验了编程的乐趣。从安装Python库到完成文档加密与解密、网页爬虫等小实践,每个环节都充满了挑战和成就感。这些工具不仅降低了学习门槛,还激发了我的学习热情,让我对未来教育和产研合作充满期待。
|
16天前
|
人工智能
新活动 热门 AI 编程 PlayGround 编程大玩家等你来
新活动 热门 AI 编程 PlayGround 编程大玩家等你来
49 4
|
16天前
|
人工智能 自然语言处理 数据可视化
比 Copilot 快两倍以上,在我的开源项目 AI Godot 桌宠中用通义灵码解决问题
在我的开源项目 AI Godot 桌宠中用通义灵码解决问题。