从 CodeGemma 到 CodeQwen1.5:开源编程大模型百家争鸣

news2024/11/15 15:54:42

笔者最近刚刚试用完 CodeGemma ,准备分享我的心得时,通义千问的 CodeQwen1.5 就也悄然发布。本文主要介绍 CodeQwen1.5 这款开源编程大模型,并展示如何在 VSCode 中使用它帮你提升编程体验。

1. 开源编程大模型的必要性

大型语言模型(LLMs)在各行各业扰动风云的今天,在编程领域也是首当其冲,掀起了一场变革,为开发者带来了显著的效率和准确性提升。然而,像 Github Copilot 这样的基于专有 LLMs 的流行编码助手,却因其成本、隐私、安全和潜在的版权侵权问题而备受诟病。因为除了参与的开源项目外,我们也总会有很多私有和需要保密的商业项目需要处理,这就使得将代码库完全暴露给第三方服务变得颇为敏感。

这些担忧催生了开源社区的积极响应,促进了对更加透明、更易于访问的替代方案的开发,并已经取得了显著成果。具体来说,如 Codegemma、StarCoder2、CodeLlama 和DeepSeek-Coder 等开源模型的出现标志着这一领域的重大进步。也让普通的开发人员可以更加自由地选择适合自己的工具,而不必受限于专有模型的局限。

2. 开源编程大模型的优势

  • 透明度: 开源模型的代码和开发过程公开透明,允许任何人审查和改进模型,确保其安全性和可靠性。这与专有模型的封闭性质形成鲜明对比,后者可能会隐藏潜在的缺陷或安全漏洞。
  • 可访问性: 开源模型通常是免费提供的,降低了门槛,使来自世界各地的人,无论经济状况或背景如何,都能使用和贡献。这对于促进全球范围内的技术进步和创新至关重要。
  • 协作: 开源模型鼓励协作和共同开发,汇聚来自不同背景和专业知识的贡献者,共同完善模型。这种集体智慧可以推动更快速、更有效的创新,并最终带来更强大的模型。
  • 道德规范: 开源社区致力于开发负责任和符合道德规范的 AI 技术。开源模型可以更容易地进行审查和修改,以确保它们符合道德准则,并避免偏见或歧视。
  • 灵活性: 开源模型可以根据特定需求进行定制和调整,使其适用于各种应用场景。通过加入自己或自己组织的专有代码库进行训练微调,可以使其更适应自己的编码风格。

开源编程大模型为编程工具的未来开辟了令人兴奋的可能性。通过透明、协作和创新的精神,我们可以共同构建更强大、更有用且更具道德责任感的编程工具,造福所有人,而不仅仅是开发人员,也包括不会编程的人。相信未来,越来越多的普通人会通过编程大模型让他们的创意和想法变为现实。

3. CodeQwen1.5 的特点

请添加图片描述

CodeQwen1.5 是通义千问的开源编程大模型,它具有以下几个特点:

  • 强大的代码生成能力: 能够生成自然、准确且符合语法规范的代码。
  • 优秀的长序列建模能力: 可以处理长达 64K 的上下文输入,在处理复杂代码时表现出色。
  • 出色的代码修改能力: 可以根据需求对现有代码进行修改或优化。
  • 强大的 SQL 能力: 可以生成 SQL 语句,并对数据库进行查询和操作。
  • 支持多种编程语言: 支持 92 种编程语言,覆盖了主流的编程语言。
  • 高效的参数规模: 拥有 7B 参数,在保证性能的同时,模型大小也相对适中。

Qwen 语言模型是一个经过中文良好训练的大型语言模型,这为 CodeQwen1.5 提供了良好的基础。GQA 架构是一种先进的模型架构,可以提高模型的性能和效率。同时,CodeQwen1.5 是在 ~3T tokens 的代码相关数据上进行预训练的,这使得它能够更好地理解和处理代码。支持 92 种编程语言,具有很强的通用性。

基于以上的特点和优势,CodeQwen1.5 在编程辅助工具中具有广泛的应用前景,可以帮助开发人员提高编程效率,减少编码错误,加速项目开发进程。

  • 自动代码生成: 可以根据需求自动生成代码,帮助开发人员节省时间和精力。
  • 代码优化: 可以对现有代码进行优化,提高代码的可读性和可维护性。
  • 代码测试: 可以自动生成测试用例,帮助开发人员发现代码中的缺陷。
  • 代码文档生成: 可以自动生成代码文档,帮助开发人员了解代码的结构和功能。

4. 模型获取和部署

CodeQwen1.5 是一个开源模型,可以通过 GitHub 获取源代码,并获取相关资料和介绍:https://github.com/QwenLM/CodeQwen1.5?wt.mc_id=DT-MVP-5005195。

对于模型文件,可以非常方便的通过抱抱脸(Hugging Face)和魔搭(ModelScope) 获取。同时,CodeQwen1.5 也提供了 Guff 和 AWQ 格式的量化版本,可以方便的使用不同的方式部署使用。

对于普通用户,低成本,简单易操作的方式我推荐使用 Ollama 提供的 Windows 客户端,自带 Cuda 环境,可以直接使用 GPU 进行推理,提供了非常好的使用体验,只需要下载安装即可:https://ollama.com/。

请添加图片描述

在运行 Ollama 程序后,需要我们打开控制台自行拉取模型文件运行,即可开始使用 CodeQwen1.5 进行编程辅助。

模型有两类,一类是 code 用于代码补全,一类是 chat 用于对话生成。在使用时,我们可以根据自己的需求选择不同的模型进行使用。

ollama pull codeqwen:chat
ollama pull codeqwen:code

请添加图片描述

我们可以使用上面的命令拉取这两种模型文件,当然你也可以前往 Ollama 的 CodeQwen 模型库,寻找不同量化精度的版本,这样可以根据自己的需求选择合适的模型文件,当然模型的文件大小和推理速度也会有所不同。

模型拉取完成后,我们可以使用下面的命令来运行模型,当然也可以直接使用下面的命令,会自动完成模型拉取和运行。关于 Olamma 的更多的使用方法,大家可以自行搜索学习,相关文章非常多,这里不做过多的介绍。

ollama run codeqwen:chat

运行后我们就可以在控制台中与大模型进行交流了,CodeQwen1.5 除了代码生成,技术文档的生成也是非常的出色。

请添加图片描述

5. 在 VSCode 中使用

对于开发人员来说,最便捷的使用当然是集成到 IDE 中。最常用的 IDE 莫过于 VSCode 了,那么如何在 VSCode 中使用 CodeQwen1.5 呢?这里笔者推荐使用 Twinny 插件,这是一个非常好用的插件,可以帮助我们在 VSCode 中使用 CodeQwen1.5 进行编程辅助。

请添加图片描述

作为一个开源项目,Twinny 插件提供了丰富的功能,包括代码补全、代码生成、代码优化、代码测试、代码文档生成等。通过简单的配置,我们就可以在 VSCode 中使用 CodeQwen1.5,提高编程效率,减少编码错误,加速项目开发进程。

最重要的一点是,该插件支持多种模型的部署提供方案,并且允许我们自行修改提示词,以优化我们在不同模型中的使用表现。这为我们提供了更多的选择和灵活性,使我们能够更好地适应不同的编程场景。

5.1 插件配置

插件默认使用的 Codegemma ,我们需要通过以下操作修改配置。在侧边的对话功能页,点击类似插头的配置图标:

请添加图片描述

之后我们会看到两个默认的配置,一个用于 Chat 对话,一个用于 FIM 补全,我们需要逐个将其修改为刚刚拉取的 CodeQwen 模型即可。

请添加图片描述

需要注意的是,FIM 模型的配置时,CodeQwen 的 Fim Template 需要设置为 stable-code。其使用的格式准则涉及使用三个专用标记,表示代码结构的相应段:<fim_prefix><fim_suffix><fim_middle>

请添加图片描述

5.2 使用示例

配置完成后,我们即可以开始使用 CodeQwen1.5 进行编程辅助。在编辑器中输入代码时,插件会自动弹出提示,只需要编写注释即可自动生成代码,非常方便。当然,我们也可以通过对话的方式与大模型进行交流,获取更多的帮助和建议。

请添加图片描述

5.2 高级功能

此外,CodeQwen1.5 还提供了一些当前 Twinny 插件尚未支持的能力,比如:存储库级代码完成。这个功能可以通过推理输入工作区的整个文件,帮助大模型更好地理解和处理代码。这对于处理复杂的代码文件和项目非常有用,可以帮助我们更快地找到问题和解决方案。

这个功能通过特殊的标记,可以输入多个代码文件:

<reponame>{repo_name}
<file_sep>{file_path1} 
{file_content1}
<file_sep>{file_path2} 
{file_content2}

这个功能类似于 Github Copilot 的 @workspace 指令,在官方的存储我们可以看到代码示例。

6. 总结

你的私人编码副驾驶已准备就绪,CodeQwen1.5 为你提供了一个强大的编程助手,它将成为你开发之旅中不可或缺的伙伴。如果你因为种种原因而无法使用 Github Copilot,那么 CodeQwen1.5 将是你的最佳选择。它的开源、透明、可访问、协作、道德规范、灵活性等优势,将为你的编程工作带来更多的便利和效率。

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

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

相关文章

python爬虫 - 爬取图片

文章目录 1、爬取图片示例1&#xff1a;使用 .urlretrieve() 函数2、爬取图片示例2 - 使用 open/write 函数3、爬取图片示例33.1 使用 open/write 下载3.2 使用 urlretrieve下载 爬虫的本质&#xff1a;模拟对应的App&#xff0c;浏览器访问对应的地址获取到数据 1、爬取图片示…

光伏工程施工前踏勘方案与注意事项

光伏工程是指利用光能发电的技术。随着清洁能源的发展&#xff0c;光伏工程在能源领域的应用越来越广泛。在进行光伏工程施工前&#xff0c;需要对施工现场进行踏勘&#xff0c;以确保施工能够顺利进行并达到预期的效果。 本文游小编带大家一起看一下探勘的方案和注意事项。 1…

LY-UV冲击试样缺口液压拉床

性能说明&#xff1a;该系列拉床专用于精确加工冲击试样的V型和U型缺口&#xff0c;试样加工过程全自动操作。是冶金、锅炉压力容器、车船和机械制造等行业理化试验室的理想冲击辅助设备。 该拉床具有操作简单、快速高效、一次成型且缺口标准统一的特点&#xff0c;完全满足GB…

用html写一个搜索页面

<!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>搜索框设计</title><link rel"stylesheet" href"./style.css"> </head> <body> <div class"se…

第 393 场周赛

100256. 替换字符可以得到的最晚时间 给你一个字符串 s&#xff0c;表示一个 12 小时制的时间格式&#xff0c;其中一些数字&#xff08;可能没有&#xff09;被 "?" 替换。 12 小时制时间格式为 "HH:MM" &#xff0c;其中 HH 的取值范围为 00 至 11&am…

VBA技术资料MF143:将PowerPoint中幻灯片导出为图片

我给VBA的定义&#xff1a;VBA是个人小型自动化处理的有效工具。利用好了&#xff0c;可以大大提高自己的工作效率&#xff0c;而且可以提高数据的准确度。“VBA语言専攻”提供的教程一共九套&#xff0c;分为初级、中级、高级三大部分&#xff0c;教程是对VBA的系统讲解&#…

【Qt 学习笔记】Qt常用控件 | 显示类控件Progress Bar的使用及说明

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt常用控件 | 显示类控件Progress Bar的使用及说明 文章编号&#xff…

Centos7 ElasticSearch集群搭建

1. 服务器环境配置 1.1 配置hosts文件 3台服务器都要执行 vim /etc/hosts; # 将以下内容写入3台服务器hosts文件 192.168.226.148 es001 192.168.226.149 es002 192.168.226.150 es003 1.2 关闭防火墙 3台服务器都要执行 systemctl stop firewalld; systemctl disable…

SAP HCM 离职是1号 正确计算免税金额

员工是1号离职&#xff0c;如何正确计算个税中的免税金额&#xff0c;例如员工2024年3月1日离职&#xff0c;现在计算2月的工资&#xff0c;因为是下发薪所以&#xff0c;12月、1月、2月是三个月&#xff0c;3*500015000&#xff0c;但是系统计只有10000. 如果要计算出三个月&a…

(CVPR,2024)CAT-Seg:基于成本聚合的开放词汇语义分割

文章目录 摘要引言方法计算成本与嵌入空间成本聚合类别成本聚合CAT-Seg框架 实验 摘要 开放词汇的语义分割面临着根据各种文本描述对图像中的每个像素进行标记的挑战。在这项工作中&#xff0c;我们引入了一种新颖的基于成本的方法&#xff0c;以适应视觉语言基础模型&#xf…

【算法】反转链表

本题来源---《反转链表》 题目描述&#xff1a; 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输…

ansible模块实战-部署rsync服务端

目录 1、根据部署流程所用到的命令找出模块 2.实战部署 2.1 服务部署&#xff1a;yum 安装 2.2 准备好rsync服务的配置文件 &#xff0c;并将配置文件通过copy模块分发给192.168.81.136这台受控主机 2.3 创建虚拟机用户 2.4 创建密码文件和改权限 2.5 模块对应目录&…

大屏数字字体+渐变色

vue数据大屏使用数字字体_vue数字字体-CSDN博客 用css实现文字字体颜色渐变的三种方法_css 字体颜色渐变-CSDN博客

Java内存模型和 JVM 内存运行时

文章目录 前言一、什么是Java 的内存模型&#xff1f;二、什么是 JVM 的运行时数据区Java8 之前和之后的区别JVM 内存模型JVM 内存区域JVM 内存垃圾回收JVM如何判断哪些对象不在存活&#xff1f;JVM运行过程中如何判断哪些对象是垃圾&#xff1f; JVM 垃圾回收Java8 中的 jvm如…

Codeforces Round 924 (Div. 2) ---- F. Digital Patterns ---- 题解

F. Digital Patterns&#xff1a; 题目描述&#xff1a; 思路解析&#xff1a; 要求在一个方块中&#xff0c;任意相邻的方块中他的透明度系数不能相同&#xff0c;这样的方块称为趣味性方块&#xff0c;问这样的方块有多少种。 那么我们可以相当&#xff0c;假设 a1 a2, 那…

Day 17 计划任务

计划任务&#xff1a;在约定好的时间完成计划好的工作 一次性计划任务&#xff1a;at ①安装一次性计划任务at&#xff1a;yum -y install at ②启动at服务&#xff1a;systemctl start atd 使用at命令 at 执行任务的时间 at> 写入需要执行的命令 at> ...... …

数字营销:细分-目标-定位(STP)模式——如何实现精准营销

细分-目标-定位&#xff08;STP&#xff09;模型是最广为人知的营销策略之一。作为营销人员&#xff0c;我们倾向于追逐新鲜事物&#xff0c;总是追求最新、最闪亮的营销技术&#xff0c;并为自己领先于趋势而感到自豪。与内容营销相结合&#xff0c;STP模式仍然是简化营销运作…

Linux http协议与实现http服务器

目录 一、HTTP与URL 1、HTTP协议 2、URL 3、URL编码 4、报文与报头 报文&#xff08;Message&#xff09; 报头&#xff08;Header&#xff09; 二、HTTP&#xff08;超文本传输协议&#xff09;的内部运作机理 请求部分&#xff1a; 响应部分&#xff1a; 三、实现…

聊聊binlog是什么

1. 上一讲思考題解答:redo日志刷盘策略的选择建议 先给大家解释一下上一讲的思考題&#xff0c;我给大家的一个建议&#xff0c;其实对于redo日志的三种刷盘策略&#xff0c;我们通常建议是设置为1 也就是说&#xff0c;提交事务的时候&#xff0c;redo日志必须是刷入磁盘文件…

Java代码基础算法练习-水仙花数-2024.04.17

任务描述&#xff1a; 水仙花数也被称为超完全数字不变数、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数。水仙花数是 指一个 3 位数&#xff0c;它的每个位上的数字的3次幂之和等于它本身。 例如: 1的3次方 5的3次方 …