试用智能编程助手

news2024/11/24 17:08:44

1 简介

网传有了大模型之后,很多人都要失业了,其中也包括一部分程序员,确实大模型可以减轻开发者的工作量,但是具体到减轻了多少工作量,哪种类型的工作,学习成本,使用成本如何?不捧不踩,今天我们尽量客观地体验一下。

本文将介绍目前使用最多的三个智能编程助手,它们均可提供:代码解释、注释、生成、实时补全等功能。下面基于 VSCode 环境来介绍具体的使用方法。

2 Copilot

2.1 介绍

Copilot 由Github和OpenAI合作推出,底层基于的Codex模型,通过GPT-3继续训练得到。
Copilot 可以先免费试用一个月。所以大家可以先试试,如果觉得必需,再购买或者在某宝以便宜的方式购买。

2.2 VSCode使用方法

  • 安装插件:github copilot, github copilot lab, github copilot chat
    主要功能分成两部分:一部分是生成后续程序 (github copilot),另一部分通过与 copilot 对话实现更丰富的功能支持 (github copilot chat)。

  • 正常安装后,左侧边栏和界面右下会出现小机器人图标
    右下角提示 copilot需要 github 帐号登录,按提示操作即可一个月免费使用(或者申请个比较便宜的学生号)。
    在这里插入图片描述

  • 生成后续程序
    例如:编写一行注释,回车后等几秒,自动生成的代码以灰色呈现;按Tab键接受推荐;Alt+左/右中括号可切换不同的推荐;Ctrl+Enter:打开一个Tab页,查看所有推荐。(其它环境快捷键可能不同,请查看具体帮助页)

  • 点击左侧图标可调出 Chat 栏
    目前版本主要分成四大功能:程序解释、代码翻译、写测试用例、其它功能(BRUSHES);其它功能又包括:加注释、fixbug,程序拆分、加强稳定性等,其中最后一项"自定义"可以用文本描述功能并执行,该功能非常实用,比如:新加一个函数,一个类,加头文件都可以通过文本描述实现。

2.2.1 问题及解决

  • 一开始安装后我的左侧边栏没显示Copilot图标,我更新了vscode最新版,又尝试切换了插件的预发布版本后可正常使用,如果还不正常,也可尝试关闭vscode,再进入。
  • 如果安装后,没直接出现github登录提示框,可尝试关闭vscode,再进入。

2.2.2 资源

  • 主页:https://github.com/features/copilot/
  • 使用手册:https://docs.github.com/en/copilot/

2.3 总结

2.3.1 优点

  • 稳定,功能全
  • 生态成熟,支持IDE:JetBrains IDEs,Vim/Neovim,Visual Studio,Visual Studio Code
  • 可以根据程序的上下文补全代码

2.3.2 缺点

  • 需要“科学”才能稳定使用,商业版可支持设置代理。
  • 普通用户每10刀一个月,对认证师生或高质量开源贡献者免费开放。非专业选手不一定非得用 Copilot,而对于专业选手每月10刀也能接受。
  • 需要配置比较多。

3 CodeGeeX

3.1 介绍

CodeGeeX是清华系列国产工具,底层基于 ChatGLM2模型,开源免费。

3.2 VSCode使用方法

  • 安装插件:codegeex
    安装之后,在右侧看到说明文档,内容比较全也比较长。
  • 主要功能分成两部分,同copilot,都封装在一个插件中。
  • 正常安装后,左侧边栏和界面右下会出现类似菱形的图标。
    按提示 login,微信登录即可用。
  • 生成后续程序
    基本用法同 Copilot 一致,AI生成的代码浅灰色,按Tab链后变正常。
  • 点击左侧图标可调出 Chat 栏
    Chat 栏支持提问和代码翻译等功能;智能问答含三个基本功能:/explain,/comment,/fixbug(在左下角输入框输入"/"可调出),在右边选代码,左边点功能即可。也可以在框中输入需要操作的文本描述。

3.3 总结

3.3.1 优点

  • 开源免费
  • 无需“科学”,直接使用
  • 无需复杂配置

3.3.2 缺点

  • 功能相对偏少,可看作低配版的 Copilot
  • 在聊天中,输入自已描述的功能效果不太好,它不太能看懂需求
  • 我测试了两个时段,其中有一次提问时不太稳定,一直 wait timeout (也可能是巧合)

4 Cursor

4.1 介绍

Cursor 是调用Chatgpt接口实现的AI编程工具,目前GPT-3.5可免费使用,GPT-4只对专业订购者开放。Cursor本身是一个IDE,可从其官网下载安装包。

4.2 使用方法

  • 从其主页:https://www.cursor.so/ 直接下载对应平台的 IDE 安装。
  • IDE 和 VSCode很类似,可看作轻量化的 VSCode,使用习惯非常像,常用快捷键都一样。
  • 第一次使用时,可以试用左侧的 demo 测试,融入操作的向导非常贴心。
  • 点击右上角可以对它提问
  • 主要快捷键有两个:
    • Ctrl+K在代码中操作
    • Ctrl+M以提问方式交互
    • 其它的提示都显示在屏幕上,按提示操作很快就学会了,学习成本低。
  • 与代码续写相比,它可以根据需求,生成整个程序,整体更有章法。
    在这里插入图片描述

4.3 总结

4.3.1 优点

  • 使用 ChatGPT 作为算法引擎,免费可用
  • 无需“科学”,直接使用
  • IDE 和 GPT结合得非常好,几乎所有操作提示全在界面上
  • 不只是补全,还可以生成整体代码
  • 无需复杂配置,学习成本低

4.3.2 缺点

  • IDE比较简单,不能满足开发需求
  • 使用时需要在 VSCode 与 Cursor IDE之间切换,打断思路。

5 讨论

5.1 使用场景

  • 对于新手,我们不用再花很多时间强调代码规范了,让大家直接用 AI 就可以润色出不错的代码和注释。
  • 对于不熟悉的领域、代码、编程语言,可以快速地了解和梳理代码,解释代码和逻辑。
  • 自动编写常用的代码片断
  • 自动编写相对复杂的 正则 或 SQL 查询
  • 解决一些简单的bug
  • 帮助程序员快速入门一门语言或一种框架
  • 快速程序写 demo 和代码框架,程序员只需要做少量修改即可使用

5.2 使用体验

5.2.1 基于场景的设计

最简单的使用大模型的方法是 ChatGPT 聊天界面提问代码相关问题,这种情况下,程序员需要描述环境,比如功能,编程语言,函数的输入输出,风格…… 而返回也往往是包含描述和代码,一般需要人看完整段回答,然后选取部分代码,再与自己代码组合。而且在两个界面之间切来切去很打断思路。

而上述的几种工具都使用了基于场景的设计,把工具融入编码的工作流,自动识别上下文,直接修改代码,节省了很多脑力,和 Chat 差别非常大。

5.2.2 清晰的注释

目前辅助工具更擅长写小模块,模板,常用功能;而对于业务理解,整体设计相对较差。从原理看,模型是用代码训练出来的,训练用的源码也有不同水平,难免不对,尤其对其未见过的复杂业务逻辑。

因此,整个开发过程需要人与工具不断沟通,比如:一开始它给我写的代码非常简单,后来我修改了几次注释提示,想要的内容就全都有了,自己再整理一下,或者让它整理一下,就很完美了。

另外,程序员可以先梳理业务逻辑,将其拆分成子任务,然后再用辅助工具其现子任务的具体功能。

5.3 使用效果

《Google Research 2022年度盘点》发布:谷歌在内部为开发者提供 5 亿参数的语言模型 ML-Enhanced 用于 为 IDE 集成代码补齐功能,通过内部1W+员工的实验对比显示,该功能减少了6%的开发时间,3% 的新代码(以字符为单位)是通过接受机器学习生成的。由此可见,AI 的代码补全功能并不像我们想象中那么有效。至少目前离完全自动化还很远。

当然,这也与开发应用的类型有关。我个人感觉,对于前后端,数据分析,数据等常用工具而言,提升20%-30%的工作效率应该没问题,甚至有时候觉得,有些普通的功能,选择一下,等着按Tab就行了。对于不熟悉的领域,机器生成的常常比人写的好。

5.4 如何选择工具

下图是计算机科学家 Matthias Plappert 在他的推文中对主流大模型代码效果的评测:

(平台这两天不能上传图片了...)

这样看来 openai-gpt4 还是首选,但比较贵,性价比最高的应属 openai-text-davinci-003;Openai 的 GPT 系列仍独占鳌头。

对于如何选择辅助工具,也列出了一些建议,仅供大家参考:

  • 如果有比较高的定制需求,或者大批量修改,可以自己做一些提示和后处理,调用 chatgpt-3.5/4 的api,直接优化代码。
  • 如果以编程为生,需要深度使用,自己又能“科学”的,推荐使用 Copilot。
  • 对于单位使用或者科研人员,建议先用 CodeGeeX 试试水,或者考虑购买 Copilot 商业版。
  • 如果使用 VSCode,建议使用可嵌入的工具,不用切来切去,不打断思路;如果没有非常依赖的 IDE 建议先试用 Cursor。

6 参考文献

【CodeGeeX2】很强的国产免费AI代码补全工具,基本使用教程
VsCode 安装Copilot
2023年AI编程工具总结
大模型代码生成排行榜出炉,70亿LLaMA拉跨,被2.5亿Codex吊打
当前业界最优秀的8个编程大模型简介
ML-Enhanced Code Completion Improves Developer Productivity

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

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

相关文章

【前端】CSS垂直居中的7种方法

文章目录 line-height绝对定位margin:autoflex绝对定位margin:负值定位transformvertical-align:middledisplay:table-cell思维导图 前文:【前端】CSS水平居中的6种方法_karshey的博客-CSDN博客 有很多相似的部分。 line-height 适用于单行的行内元素设置line-he…

灵眸:2023年上半年中国主要消费领域宏观数据概览报告(附下载)

关于报告的所有内容,公众【营销人星球】获取下载查看 核心观点 2023年上半年中国社会消费品零售总额22.8万化元。2023年上半年中国电商实体商品消费总额达6.1万亿元,同比增长10.8%。2023年上半年中国餐饮、汽车消费均超2万化元,餐饮、金银珠…

【网络层+数据链路层】深入理解IP协议和MAC帧协议的基本原理

文章目录 前言一、IP协议二、MAC帧协议 1.以太网2.以太网帧(MAC帧)格式报头3.基于协议讲解局域网转发的原理总结 前言 为什么经常将TCP/IP放在一起呢?这是因为IP层的核心工作就是通过IP地址来定位主机的,具有将一个数据报从A主机…

搭建B端产品帮助中心这两点很重要,从客户“帮助中心”出发思考!

一款优质的产品若想要用户体验良好,除了需要客服解答外,一个全面完善的产品帮助中心也是必不可少的,尤其是对于B端产品来说,其重要性自然不言而喻。 产品帮助中心 因为帮助中心是一个产品的重要用户自助服务模块,包括…

华为OD机试真题 Java 实现【跳格子游戏】【2023 B卷 200分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题(A卷B卷&#…

进销存管理系统(小杨国贸)springboot采购仓库财务java jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目,Java EE JSP项目,在工作环境中基本使用不到,但是很多学校把这个当作编程入门的项目来做,故分享出本项目供初学者参考。 一、项目描述 进销存管理系统(小杨国贸)spri…

SpringBoot 整合Swagger2

一、Swagger简介 Swagger是一套开源工具和规范,用于设计、构建和文档化RESTful Web服务。它允许开发人员定义API的各个方面,并生成易于理解的API文档和交互式API探索界面。同时,Swagger还提供代码生成工具,可自动生成与API交互的客…

公文撰写规范:提升文档质量和专业性

1.拼写和语法检查:仔细检查文档中的拼写错误和语法错误。确保单词的正确拼写,并使用正确的语法结构和标点符号。 2.信息准确性:核对文档中的事实和数据,确保其准确性。确认所有日期、数字和引用的信息是否准确无误。 3.文档结构和…

控制国外各类电液伺服阀放大器

控制通用型不带反馈信号输入的伺服阀放大器,对射流管式电液伺服阀、喷嘴挡板式电液伺服阀及国外各类电液伺服阀进行控制。 通过系统参数有10V和4~20mA输入指令信号选择; 供电电源: 24VDC(标准) 输出电流:最大可达10…

Kuebernetes资源控制管理

第四阶段 时 间:2023年8月11日 参加人:全班人员 内 容: Kuebernetes资源控制管理 目录 Kubectl命令工具 一、kubectl 命令行的语法 二、kubectl命令列表 三、使用 Kubectl 工具容器资源 (一)创建Pod &…

并发——ThreadLocal关键字详解

文章目录 前言ThreadLocal代码演示ThreadLocal的数据结构GC 之后key是否为null?ThreadLocal.set()方法源码详解ThreadLocalMap Hash算法ThreadLocalMap Hash冲突ThreadLocalMap.set()详解ThreadLocalMap.set()原理图解ThreadLocalMap.set()源码详解 ThreadLocalMap过…

游戏选香港主机会很卡吗?

​  经常会有用户问道:做游戏服务器,使用香港主机会很卡吗?要知道,游戏运营最看重的就是用户体验,而游戏流畅不流畅要看所使用香港服务器本身的稳定性。因此,卡不卡,这样的形式提问是比较笼统的&#xf…

【EI检索】第九届建筑、土木与水利工程国际学术会议(ICACHE 2023)

第九届建筑、土木与水利工程国际学术会议(ICACHE 2023) 2023 9th International Conference on Architectural, Civil and Hydraulic Engineering 第九届建筑、土木与水利工程国际学术会议(ICACHE 2023)将于2023年10月13-15日在中…

现代无人机技术

目录 1.发展 2.应用领域 3.对战争的影响 4.给人类带来的福利 5.给人类带来的坏处 1.发展 无人机的发展可以分为以下几个关键步骤: 1. 早期试验和研究:20世纪初,飞行器的概念开始出现,并进行了一些早期的试飞和实验。这些尝试包…

第一部分:核心容器

前言:学习路线 Spring就是一个轻量级的控制反转(IOC)和面向切面编程(AOP)的框架! 第一章:纯手写 一、核心概念 什么是IoC、IoC容器、bean、DI ? IoC:对象创建控制权由程…

springboot项目为什么加载不出来页面

路径啥的都没问题。hh,非常简单,因为springboot项目默认访问静态static文件,把那种静态图片放在static文件下就解决了。

订单支付超时未支付关闭订单的解决方案

订单支付超时未支付关闭订单的解决方案 假设有客户下了订单但是迟迟未曾支付,会产生什么样的问题呢,大家联想一下京东淘宝拼多多,想一下大家购物的场景中,人家是怎么做的,然后再看看我们这么这篇文章!&…

微信怎么恢复好友?这8个方法值得一试!

【微信之前忘记给别人备注名字,昨天清理好友时不小心误删了该怎么办啊!好尴尬!】 随着社交网络的快速发展,微信已成为我们生活中必不可少的交流工具。日积月累下来,微信里的联系人也就变得越来越多。但是,…

Map映射学习

一、Map的遍历 创建Map集合 Map<String, Integer> map new HashMap<>();添加元素 map.put("java", 99);map.put("c", 88);map.put("c", 93);map.put("python", 96);map.put("Go", 88); 遍历方法&#xff1a; …

自主学习库简化智能代理创建

观看当今毁灭人类的智能代理玩复杂的视频游戏可能很有趣 - 但创建一个是另一回事。构建有效的智能代理需要设置大量超参数来塑造环境、建立奖励等。来自马萨诸塞大学阿默斯特分校的一组研究人员试图通过他们新的自主学习图书馆项目来简化这一过程。 自治学习库是 PyTorch 的深…