通义灵码最佳使用实践:如何深度使用辅助功能

news2024/11/24 6:38:56

通义灵码是JetBrains或VSCode集成开发环境(IDE)中嵌入的一款智能开发助手工具,旨在通过人工智能技术简化软件开发过程,提升开发效率。本文将介绍在开发过程中如何深度体验多种辅助功能。其主要功能包括:通用大模型问答、生成单元测试、提供场景优化、编写说明文档,以及根据您的代码生成高质量AI驱动的代码等。这些功能为开发者提供了显著的便利与效率提升。

通义灵码下载安装:通义灵码_智能编码助手_AI编程-阿里云

快捷键的运用

默认快捷键

通义灵码的多个操作均配备了开箱即用的快捷键,以下列出了几项常用的快捷键。

功能

Windows快捷键

macOS快捷键

在任意位置触发补全

Alt + P

Option + P

更换生成的结果

Alt + ]

Option + ]

采纳全部生成的代码

Tab

Tab

逐行采纳生成的代码

Ctrl + ↓

Cmd + ↓

关闭/打开对话面板

Ctrl + Shift + L

Cmd + Shift + L

此外,在通义灵码的问答面板中,用户可以通过使用 Cmd+Enter(适用于 MacOS/Linux)或 Ctrl+Enter(适用于 Windows)来实现换行功能。请注意,直接按下 Enter 回车键将立即将当前提问内容发送给模型。

说明

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

自定义快捷键

JetBrains IDE

VSCode

  1. 首先打开菜单栏中的设置页面。

  2. 在面板左侧选择“快捷键”(Keymap),随后找到“插件”(Plugins)中的“TONGYI Lingma”子项,展开后即可查看和编辑相关快捷键。

    整屏示例@1x

配置的运用

配置面板

JetBrains IDE

VSCode

JetBrains IDE 的配置面板位于设置页面的顶级菜单“TONGYI Lingma”板块。可以通过单击状态栏中的通义灵码小图标,迅速选择“高级设置”项进行访问。

image

image

常用配置项

  1. 按文件类型禁用自动补全功能。

    • 如果某些类型的文件在使用自动补全时产生干扰,可将该文件的后缀类型添加至列表中。多种后缀之间应使用英文逗号分隔(例如:txt,md)。

      IDE

      配置

      JetBrains IDE

      image

      VSCode

      image

      说明

      禁用特定文件类型的自动补全功能主要是指禁用自动补全触发。然而,在文件内通过快捷键手动触发补全(默认快捷键为 Alt+P)时,仍然可以使用大模型的内容自动续写生成的功能。

  2. 下拉提示时保留补全结果。

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

      image

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

      image

      IDE

      配置

      JetBrains IDE

      image

      VSCode

      image

  3. 生成长度控制。

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

      IDE

      配置

      JetBrains IDE

      image

      VSCode

      image

      说明

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

代码注释的运用

通过注释引导补全生成

在缺乏额外注释引导的情况下,模型只能基于当前代码的上下文,以及项目中引用和找到的相似代码来推测接下来可能要编写的内容。当模型的推测不准确时,可以通过增加代码的方式来引导模型实现所需的代码。

  1. 例如,在以下这段代码中,模型首先推测了一个 CHAT_CONTEXT 字段,然而并不是我们所期望的内容。

    image

  2. 接下来,我们添加一行注释,以指示模型下一个字段为历史记录。随后,模型生成了符合预期的字段及其相应的数据填充代码。

    image

使用描述生成方法

  1. 通过“编辑区的代码注释引导补全”或“使用通义灵码问答面板”,均可实现基于注释生成整个方法的目标。由于通义灵码的智能问答场景所使用的模型参数量通常大于代码补全模型的参数量,因此,对于这类场景,通常建议在问答面板中直接提出所需生成的问题描述。

    image

  2. 如果对期望生成的语言或方法签名(包括方法名、参数类型、返回值类型)有特殊要求,请在提问时详细描述该方法签名。

    image

跨文件索引的运用

及时保存文件并更新索引

  1. 通义灵码的跨文件索引是抑制代码幻觉的重要机制。通过自动识别当前上下文中所涉及的类型和方法定义,模型能够感知项目中其他文件的类型所包含的成员以及方法所具有的参数。在首次打开新项目时,通义灵码将自动创建项目的文件索引。此后,每次保存文件时,将触发单个文件的增量索引更新。然而,由于集成开发环境(IDE)中的文件通常存在内存缓存,在刚刚编写完一个文件后切换到另一个文件时,可能因本地索引尚未更新而无法识别新增加或修改过的内容,仍然按照原有的类型结构进行推理。例如在某代码项目中,我们为 Pet 对象新增了一个 saleable 属性。

    7a202c9956cfdc8db24d142537153372

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

    image

  3. 若要消除这种信息差异,建议在编辑完前一个文件后,主动按下文件保存键快捷键Ctrl+S,然后再继续编辑其他文件。这样生成的内容将能够正确引用到修改过的对象结构。

    image

针对MyBatis场景的优化方案

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

image

整屏示例@1x (1)

及时清理上下文信息

适时清空上下文

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

整屏示例@1x

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

image

查看历史对话记录

在创建新的会话后,如需查找之前提问的内容,可利用历史记录功能返回至先前的话题,并继续进行追问。

image

基于代码提问

通用问答

若需要基于特定代码段的内容进行提问,除了可以直接将代码内容粘贴到问答区外,还可以先在代码编辑器中选择一段代码,然后在问答区针对该段代码进行提问,例如。

image

内置代码任务

  1. 通义灵码插件内置了四项代码任务:解释代码、生成单元测试、生成代码注释和生成优化建议。通义灵码大语言模型针对这些任务进行了专项训练。例如,在生成单元测试的情况下,使用内置任务的效果优于先框选代码后再输入生成单元测试的方式。

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

    1. 第一种方式,是使用IDE下拉菜单的方法。

      IDE

      配置

      JetBrains IDE

      image

      VSCode

      image

    2. 第二种方式,选择代码后右键单击鼠标,并从上下文菜单中选择“通义灵码”选项。

      整屏示例@1x

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

      整屏示例@1x

提示词的使用技巧

在提问中引用所选代码

在提问时,如果同时在代码编辑区选择了文本或代码段,所选择的内容将自动以 Markdown 引用格式附加到提问内容的末尾。因此,若在提示词中提及所选择的代码,应使用“如下代码”或“以下内容”,例如。

  • 正确的说法:请检查以下代码是否存在下标越界风险。

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

在使用命令时,请附加相关信息。

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

整屏示例@1x (1)

整屏示例@1x

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

在与大语言模型进行对话时,提供的上下文越丰富,生成的结果越能符合用户的预期。因此,用户可以在上一轮对话的基础上继续进行问答,从而增加后续提问的上下文信息,这样生成的结果能够更好地反映整个历史上下文。然而,上一轮的历史信息有时可能会造成干扰,此时用户需要适时清空上下文。

整屏示例@1x

在上一轮的基础上,进一步进行深入追问。

整屏示例@1x

为模型提供参考示例

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

  • 提示词1:将测试报告整理为JSON格式,每个测试结果为一个JSON结构。用例名称应放置于name字段,成功与否应记录于success字段,运行耗时需在duration字段中体现(单位为毫秒),测试覆盖率则应放置在coverage字段。detail字段的值为一个JSON,包含每次用例的输入和输出,分别存放于input和output字段中。

  • 提示词2:将测试报告整理为JSON格式,具体格式参照输入报告。

    …报告内容略…

    应输出的数据如下。请根据此示例生成测试报告。

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

为模型设定身份

与单纯的提问相比,预先向模型提供身份信息能够有效提升生成结果的稳定性和准确性。以生成测试用例为例,首先打开接口文档文件,全面选取文件内容,然后在问答区域进行提问。对比下述两种提示词,后者能够生成质量更高且覆盖率更好的用例。

  • 提示词1:请根据以下接口文档生成相应的测试用例。

  • 提示词2:您是一位经验丰富的测试工程师,具备对细节的高度敏感性,并能够高效识别潜在问题及边界情况。请根据以下接口文档生成详尽的测试用例,以确保所有预期功能行为均得到验证。

 通义灵码下载安装:通义灵码_智能编码助手_AI编程-阿里云

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

win11任务栏怎么自定义调整?任务栏透明设置技巧分享(实用功能)

Win11任务栏是可以自定义设置的,那么怎么把任务栏变透明呢?最近很多小伙伴都在咨询Windows11任务栏怎么透明?那还不简单吗,本文整理了一些关于Windows任务栏自定义调整的教程,包括win11任务栏透明、隐藏任务栏、显示任…

阿里发布视频大模型,快来体验

传送门:https://tongyi.aliyun.com/wanxiang/videoCreation 使用说明:https://alidocs.dingtalk.com/i/nodes/jb9Y4gmKWrx9eo4dCql9LlbYJGXn6lpz?spm5176.29623064.0.0.41ed1eceDjrPw0&utm_sceneperson_space

大数据新视界 --大数据大厂之大数据实战指南:Apache Flume 数据采集的配置与优化秘籍

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

如何使用ssm实现基于SpringMVC网上选课系统的设计与实现

TOC ssm696基于SpringMVC网上选课系统的设计与实现jsp 研究背景和来源 目前的管理类系统已各种各样,涉及到生活中的每一个部分。购物类、网站类、信息统计类、办公类、官网类等非常丰富。我国各类系统的发展已非常成熟,这些系统依靠网络和计算机技术不…

多网站域名共享微信网页授权:PHP实现微信授权代理转发

在做网站需要微信扫码或微信内授权注册登陆,但是做过类似功能的都知道,需要授权登陆比较麻烦。 需要满足以下条件: 申请公众号网站域名备案开放平台注册新建应用审核 有没有简单,不需要申请免备案可用的方案,答案肯…

解决 ValueError: did not find HDF5 headers----安装netCDF4报错

报错如图 报错说是hdf5找不到,按照这个思路搞了半天都没搞好。后来换了一个安装命令 pip install netcdf41.5.7 成功!!

基于vue框架的大连盐业有限公司生产管理系统的设计与实现3hk5y(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:计划员,工艺员,生产建模,生产计划,生产信息,生产监视,工艺质量,盐政信息 开题报告内容 一、引言 随着信息技术的飞速发展和市场竞争的日益激烈,传统盐业企业如大连盐业有限公司正面临着转型升级的迫切需求。传统管理模式下…

python-比较月亮大小/数组下标/人见人爱a+b

一:比较月亮大小 题目描述 小理是一名出色的狼人。众所周知,狼人只有在满月之夜才会变成狼。 同时,月亮的大小随着时间变化,它的大小变化 3030 天为一循环。 它的变化情况(从第一天开始)为 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,13,12,1…

Python提供内置正则表达式库

正则表达式是一种强大的文本处理工具,可以匹配文本片段的模式 最简单的正则表达式就是普通的字符串,可以匹配自身 要注意的是,正则表达式并不是一个程序,它使用一种特定的语法模式来描述在搜索文本时要匹配的一个或多个字符串。正…

UE5 C++: 插件编写05 | 批量删除无用资产

删除无用的asset 已经在地图中使用的asset会有asset reference EditorAssetLibrary(按F12)open header file,会有如下一个功能,可以找asset reference,返回bool值 UFUNCTION(BlueprintCallable, Category "Edi…

wpf在图上画矩形,矩形可拖动、大小可调节,使用装饰器Adorner调整矩形大小,限制拖动和调节范围

效果 功能 使用wpf实现 在图片上画一个矩形框该矩形框可以调节大小该矩形框可以拖动调整位置 注:这里的鼠标事件是,双击在图上画一个固定大小的矩形框,右键按住拖动矩形框。有需要的可以自行调整对应的鼠标事件 参考资料:https…

心理测试小程序开发心理健康MBTI人格测试,小程序源码部署支持多种流量主

简介 在当今这个高速运转的社会里,个人内心性格与心理健康日益成为人们关注的焦点。随着科技的日新月异,心理评估的方式正经历着深刻的变革,从传统的面对面咨询室中解放出来,无缝融入了我们日常使用的移动设备之中。这一趋势极大…

【网络安全】网络基础第一阶段——第四节:网络协议基础---- VRRP与网络架构设计

目录 一、VRRP 1.1 VRRP使用场景及简介 1.2 VRRP基本原理 1.2.1 VRRP基本结构 1.2.2 设备类型 1.2.3 VRRP工作原理 1.3 VRRP的基本配置 1.3.1 基于三层交换机的VRRP组配置 1.3.2 SMTPVRRP经典组网 1.4 端口聚合 1.4.1 端口聚合技术 1.4.2 聚合模式 1.4.3 Eth-trun…

Python项目Flask框架整合Redis

一、在配置文件中创建Redis连接信息 二、 实现Redis配置类 import redis from config.config import REDIS_HOST, REDIS_PORT, REDIS_PASSWD, REDIS_DB, EXPIRE_TIMEclass RedisDb():def __init__(self, REDIS_HOST, REDIS_PORT, REDIS_DB, EXPIRE_TIME, REDIS_PASSWD):# 建立…

【笔记】KaiOS 系统框架和应用结构(APP界面逻辑)

KaiOS系统框架 最早自下而上分成Gonk-Gecko-Gaia层,代码有同名的目录,现在已经不用这种称呼。 按照官网3.0的版本迭代介绍,2.5->3.0已经将系统更新成如下部分: 仅分为上层web应用和底层平台核心,通过WebAPIs连接上下层,这也是kaios系统升级变更较大的部分。 KaiOS P…

Spring Boot 点餐系统:您的餐饮技术伙伴

摘 要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于网上点餐系统当然也不能排除在外,随着网络技术的不断成熟,带动了网上点餐系统,它彻底改变了过去传统的…

Spring不能处理的循环依赖

文章目录 场景一:prototype 类型的循环依赖场景二: constructor 注入的循环依赖场景三:普通的 AOP 代理 Bean 的循环依赖–默认是可以的场景四:Async 增强的 Bean 的循环依赖总结 参考:https://blog.csdn.net/wang4896…

Redis系列补充:聊聊布隆过滤器(go语言实践篇)

1 介绍 布隆过滤器(Bloom Filter)是 Redis 4.0 版本之后提供的新功能,我们一般将它当做插件加载到 Redis Service服务器中,给 Redis 提供强大的滤重功能。 它是一种概率性数据结构,可用于判断一个元素是否存在于一个集…

Elasticsearch导出导入数据

1.概念回顾 2.基础操作 展示详细信息 GET:http://127.0.0.1:9200/_cat/indices?v Java代码将文件导入到ES package com.Graph.medicalgraph;import org.apache.http.HttpHost; import org.elasticsearch.action.bulk.BulkRequest; import org.elasticsearch.act…

Java中的位图和布隆过滤器(如果想知道Java中有关位图和布隆过滤器的知识点,那么只看这一篇就足够了!)

前言:在学习之前的数据结构的时候,我们使用的数据量都不是很大,但是在生活中,我们常常面临着要处理大量数据结果并得出最终结果,那么有没有什么数据结构可以帮助我们实现这样的功能呢? ✨✨✨这里是秋刀鱼不…