使用Llama3/Qwen2等开源大模型,部署团队私有化Code Copilot和使用教程
目前市面上有不少基于大模型的 Code Copilot 产品,部分产品对于个人开发者来说可免费使用,比如阿里的通义灵码、百度的文心快码等。这些免费的产品均通过 API 的方式提供服务,因此调用时均必须联网、同时需要把代码、提示词等内容作为 API 的入参在网络中传输和 API 服务器中进行处理,这里就涉及到一个比较重要的问题:隐私安全

针对小团队私有保密项目、创新团队孵化新产品,隐私安全问题就显得格外重要。因此,团队内部部署私有的Code Copilot方案就应运而出了:

今天老牛同学和大家一起来使用Qwen2-7构建个人或者团队专属的私有化 Code Copilot,除了代码生成之外,还可以是支持 AI 问答、代码解释、语言转换、生成单元测试用例等功能。不但可以提高我们的研发效率,还可以保护我们的代码隐私。
第一步:部署私有的大模型(Qwen2-7B)
前面老牛同学介绍了本地部署大模型和使用教程,包括Llama3-8B、Qwen2-7B、GLM4-9B、和Phi3等。大家可以看一下之前的部署教程,老牛同学今天使用Qwen2-7B作为我们 Copilot 底层大模型,对于本文Code Copilot的部署和使用,其他大模型都是一样的,看大家的喜好,没有特殊要求。
老牛同学这里简单列一下部署教程:
环境安装: 主要是Miniconda包管理安装,参见教程,注意只需要安装Miniconda和Python即可,其他非必须:大模型应用研发基础环境配置(Miniconda、Python、Jupyter Lab、Ollama 等):https://mp.weixin.qq.com/s/P_ufvz4MWVSqv_VM-rJp9w
Code Copilot底层大模型的部署方式,老牛同学验证主要以下 2 种,任选一种即可:
方式一 基于 Ollama 部署:
- 下载并安装Ollama本地模型管理软件(Windows/Mac/Linux 均支持):https://ollama.com/download
- 通过 Ollama 下载并启动大模型:
ollama run qwen2:7b
通过以上 2 步,即完成了大模型的部署。特别注意的是:GLM系列大模型还不支持 Ollama 管理!因此如果你希望用 GLM 系列(如:GLM4-9B)大模型,那么请看方式二。
方式二 通过 Python 部署:通用方法,所有模型都支持,以下是老牛同学验证过的部署教程
- Phi3:Phi-3 模型手机部署教程(微软发布的可与 GPT-3.5 媲美的小模型)
- Qwen2-7B:Qwen2 阿里最强开源大模型(Qwen2-7B)本地部署、API 调用和 WebUI 对话机器人
- Llama3-8B:玩转 AI,笔记本电脑安装属于自己的 Llama 3 8B 大模型和对话客户端
- GLM4-9B:本地部署 GLM-4-9B 清华智谱开源大模型方法和对话效果体验
第二步:IDE 安装和配置 Continue 插件
Code Copilot Continue是目前最受欢迎的插件之一,它插件的形式使用,目前支持VS Code和JetBrains 全家桶这 2 个主流 IDE 的扩展,可以在对应的插件市场中直接搜索Continue下载安装。Continue插件的一个最大优势在于它可以指定连接本地或者局域网内的大模型,所以对于信息安全高的项目,我们完全可以在本地或者局域网内部署大模型,然后用Continue插件连接使用,在提高开发生产效率同时保护了研发代码的隐私。目前Continue插件的社区活跃,GitHub 仓库已达12K星,插件版本更新频繁,越来越成熟。
因为老牛同学日常使用VS Code较多,因此下面的安装和配置,基于VS Code完成,JetBrains(如:PyCharm 等)的方式类同。
安装 Continue 插件: 插件管理器中,搜索Continue,点击安装,安装成功之后重启 IDE 即可。

Continue 插件状态: 安装成功并重启之后,可以看到VS Code的左侧多了一个Continue按钮。同时,右下角也多了一个Continue状态图标:√ Continue则代表Continue在 IDE 中生效了,🚫Continue则代表Continue在 IDE 未启用。

配置 Continue 插件: 点击左下角启用Continue插件,然后点击左侧的Continue按钮,可以看到一个对话界面,点击左下角齿轮形状的配置图标,则打开了一个 JSON 格式的配置文件,在这里可以配置Continue底层使用的大模型信息:

{"models": [{"title": "Qwen2:7B","provider": "ollama","model": "qwen2:7b"},{"title": "Llama3-8B","provider": "openai","model": "Local-Model","apiBase": "http://127.0.0.1:8000/v1","apiKey": "EMPTY","completionOptions": {"stop": ["<|eot_id|>"]}}],"customCommands": [{"name": "test","prompt": "{{{ input }}}\n\nWrite a comprehensive set of unit tests for the selected code. It should setup, run tests that check for correctness including important edge cases, and teardown. Ensure that the tests are complete and sophisticated. Give the tests just as chat output, don't edit any file.","description": "Write unit tests for highlighted code"}],// "tabAutocompleteModel": {// "title": "Qwen2:7B",// "provider": "ollama",// "model": "qwen2:7b"// },"tabAutocompleteModel": {"title": "Llama3-8B","model": "Local-Model","apiBase": "http://127.0.0.1:8000/v1","provider": "openai","apiKey": "EMPTY"},"allowAnonymousTelemetry": true,"embeddingsProvider": {"provider": "transformers.js"}
}
Continue插件的配置信息主要分为 3 块:
- models 代表所有的模型列表:上面样例配置文件,老牛同学分别配置了基于Ollama部署的Qwen2-7B大模型和基于OpenAI客户端部署的Llama3-7B大模型(也就是涵盖了上面大模型的 2 种不同部署方式的不同配置方式)
- customCommands 自定义给大模型的提示词格式,input代表输入内容(代码或者文本等),可以按照实际需求进行调整
- tabAutocompleteModel 代码编写过程中,当按下代码生成快捷键时,Continue生成代码的大模型,从models列表里面指定一个即可,当然也可以设置一个其他的大模型(注意: 只能选择一个模型,上面样例配置注释掉了一个,在实际使用时需要删除掉,因为 JSON 不支持注释!)
第三步:使用 Code Copilot Continue 插件
首先,启动大模型(如:Qwen2-7B);其次,点击 IDE 左下角图标,以启用Continue插件;然后,选择一个对话大模型(默认选中第 1 个大模型):

使用方式一: 我们可以选择不同的大模型进行对话,相当于Continue插件提供了一个可视化对话客户端
使用方式二: 代码生成,也是本文的重点,下面老牛同学以快速排序算法为例,来如何利用Continue完成代码编写:
【场景一:AI 对话代码同步】
- 使用大模型对话能力,写出快速排序算法代码,Prompt 提示词:请提供一下功能代码:Python 实现快速排序算法函数,大模型很好的实现了算法逻辑,并且给了很多的说明和解释
- 选中快速排序算法函数的代码,然后按下
CTRL+Shift+L快捷键,或者点击代码框右上角的Apply to current file按钮,Python 自动同步到了编辑器中了:

【场景二:代码自动补全】
- 在编辑器中,只需要输入注释内容(不要按回车键):
# Python实现快速排序算法函数 - 然后按下
CTRL+Shift+L快捷键,然后在按下回车键,可以看到代码已经生成,可以按Tab键使用代码

【场景三:增加单元测试代码】
- 在编辑器中,选中一段代码函数,然后按下
CTRL+I快捷键 - 然后,在弹出的Ctrl+I指令框中输入:
增加代码测试代码,然后按下回车键,可以看到生成了测试用例代码


【场景四:代码自动填充对话框】
- 在编辑器中,选中一段代码,然后按下
Ctrl+L快捷键,代码自动填充到了左侧的对话框中 - 可以在对话框中继续输入指令,如:
请解释一下这段代码,然后按回车键提交大模型:

【其他场景】
- 增加注释
- 代码异常堆栈分析
- …… 其他请大家补充
最后:
使用开源大模型作为团队的 Code Copilot 工具,可以提高团队的开发效率,同时也可以保护团队的代码隐私。虽然目前开源的 LLM 相比闭源商用的 LLM 还有一些差距,但是随着开源 LLM 的不断发展,相信两者的差距以后会越来越小。以上就是今天介绍的内容,希望对大家有所帮助。
关注本公众号,我们共同学习交流进步 👇🏻👇🏻👇🏻

Phi-3 开源大模型
Phi-3 模型手机部署教程(微软发布的可与 GPT-3.5 媲美的小模型)
Qwen2-7B 开源大模型
Qwen2 阿里最强开源大模型(Qwen2-7B)本地部署、API 调用和 WebUI 对话机器人
Llama-3-8B 开源大模型
玩转 AI,笔记本电脑安装属于自己的 Llama 3 8B 大模型和对话客户端
一文彻底整明白,基于 Ollama 工具的 LLM 大语言模型 Web 可视化对话机器人部署指南
基于 Llama 3 搭建中文版(Llama3-Chinese-Chat)大模型对话聊天机器人
GLM-4-9B 开源大模型
本地部署 GLM-4-9B 清华智谱开源大模型方法和对话效果体验
ChatTTS 文本转语音模型
ChatTTS 开源文本转语音模型本地部署、API 使用和搭建 WebUI 界面
Stable Diffusion 3 文生图模型
Stable Diffusion 3 文生图“开源英雄”大模型本地部署和使用教程,轻松实现 AI 绘图自由
大模型应用实战
大模型应用研发基础环境配置(Miniconda、Python、Jupyter Lab、Ollama 等)
借助 AI 大模型,三分钟原创一部儿童故事短视频(附完整操作步骤)
高效编写大模型 Prompt 提示词,解锁 AI 无限创意潜能
Python 小游戏
AI 已来,我与 AI 一起用 Python 编写了一个消消乐小游戏
Python 游戏编程:一步步用 Python 打造经典贪吃蛇小游戏
相关文章:
使用Llama3/Qwen2等开源大模型,部署团队私有化Code Copilot和使用教程
目前市面上有不少基于大模型的 Code Copilot 产品,部分产品对于个人开发者来说可免费使用,比如阿里的通义灵码、百度的文心快码等。这些免费的产品均通过 API 的方式提供服务,因此调用时均必须联网、同时需要把代码、提示词等内容作为 API 的…...
C语言_结构体初阶(还未写完)
结构体的声明 1. 什么是结构?结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量 数组:一组相同类型元素的集合 结构体:一组不一定相同类型元素的集 2. 结构的声明 struct tag //tag根据实际情况给名字…...
MyBatis-Plus:快速入门
1. 概念 MyBatis-Plus(简称 MP)是一个MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。其突出的特性如下: * **无侵入**:只做增强不做改变,引入它不会对现有…...
【高级篇】第9章 Elasticsearch 监控与故障排查
9.1 引言 在现代数据驱动的应用架构中,Elasticsearch不仅是海量数据索引和搜索的核心,其稳定性和性能直接影响到整个业务链路的健康度。因此,建立有效的监控体系和掌握故障排查技能是每一位Elasticsearch高级专家的必备能力。 9.2 监控工具:洞察与优化的利器 在Elastics…...
【前端】上传和下载zip文件,有进度条(el-progess)
文章目录 上传下载进度条 场景:要上传一个zip,调用接口,然后下载一个zip。调用接口的接口响应要显示在进度条中。 上传 上传用的是input原生控件,在页面中隐藏。accept"application/zip"限制只能上传zip。 点击button…...
2024年软件测试面试题,精选100+,附答案+文档
🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 Part1 1、你的测试职业发展是什么? 测试经验越多,测试能力越高。所以我…...
在vue项目的.gitignore文件忽略不想要提交到git仓库的文件
在Vue项目中,使用.gitignore文件来忽略不需要提交到Git仓库的文件是一个常见的做法。.gitignore文件包含了一系列的规则,这些规则告诉Git哪些文件或目录应该被忽略。以下是一些Vue项目中常用的.gitignore文件示例和具体规则说明: 示例 .gitig…...
时序(流式)图谱数据仓库AbutionGraph功能介绍-Streaming Graph OLAM Database
AbutionGraph是一款端到端的流式数据实时分析的图谱数据库,实时(流式写入实时、高QPS决策分析实时、流式预处理实时)表现在: 构建实时查询QPS响应时长与历史数据量无关的图模型;接入流式数据并实时更新图计算指标&…...
windows实现Grafana+Loki+loki4j轻量级日志系统,告别沉重的ELK
文章目录 Loki下载Loki下载安装Loki添加Loki数据源springboot日志推送 Loki下载 下载地址:https://github.com/grafana/loki/releases/ 找到loki-windows-amd64.exe.zip点击开始下载,我这里下载的2.9.9版本 Loki下载 下载地址:https://gr…...
跟《经济学人》学英文:2024年06月01日这期 The side-effects of the TikTok tussle
The side-effects of the TikTok tussle tussle:美 [ˈtəsəl] 激烈扭打;争夺 注意发音 side-effects:副作用;(side-effect的复数) As the app’s future hangs in the balance, the ramifications of …...
Ubuntu安装PostgreSQL
Ubuntu(在线版) 更新软件源 sudo apt-get update 添加PostgreSQL官方数字签名 wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - 将地址添加到系统的软件包源列表中 echo "deb http://apt.postgresql.org/pub/repos/a…...
【HarmonyOS NEXT】鸿蒙如何让List组件不满一屏时,还要能滑动和回弹
当List组件不满一屏时,还要能滑动和回弹,就向系统设置 - 移动网络 页面一样 List设置如下属性: .edgeEffect(EdgeEffect.Spring, {alwaysEnabled: true}) edgeEffect edgeEffect(value: EdgeEffect, options?: EdgeEffectOptions) 设置边缘滑动效果。…...
JDK-SPI-服务提供者接口
归档 GitHub: JDK-SPI-服务提供者接口 SPI 源码说明 java.util.ServiceLoader /*** 服务加载器:给定接口,查找实现类。实现可迭代接口 */ public final class ServiceLoader<S> implements Iterable<S> {/*** 返回 ServiceLoader 实例 *…...
【docker】容器内配置环境变量
背景: 我要把下面的环境变量写到bash脚本里,起名叫environment_start.sh。 目的: 用于每次进入容器dev_into.sh的时候,让系统获取到环境变量。 操作步骤: 先在容器外找个合适的位置写环境变量bash脚本,…...
Java 乐观锁与悲观锁
1. 前言 本节内容主要是对 Java 乐观锁与悲观锁进行更加深入的讲解,本节内容更加偏重于对乐观锁的讲解,因为 synchronized 悲观锁对于大部分学习者并不陌生,本节主要内容如下: 乐观锁与悲观锁的概念,之前有所讲解,这里用很小的篇幅进行知识的回顾,巩固;乐观锁与悲观锁…...
python学习2-数据结构与算法-链表
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指…...
项目一 nfs 共享服务器 Haproxy 代理 Keepalive 高可用集群
深入理解程序的数据存储 配置NFS服务器 配置ansible环境...
TCP粘包解决方法
一. 产生原因及解决方法 产生原因:TCP是面向连接、基于字节流的协议,其无边界标记。当服务端处理速度比不其接收速度时,就很容易产生粘包现象。 解决方法:目前主要有两种解决方法,一个是在内容中添加分割标识…...
高职人工智能专业实训课之“生成对抗网络(GAN)”
一、前言 生成对抗网络(GAN)作为人工智能领域的一项重要技术,已经在图像生成、风格迁移、数据增强等多个领域展现出巨大的潜力和应用价值。为了满足高职院校对GAN专业实训课程的需求,唯众人工智能教学实训凭借其前沿的教育技术平…...
【MySQL系列】隐式转换
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
信息安全工程师-工控安全产品体系与行业实践全解析
一、引言(一)核心概念定义工控安全产品是针对工业控制系统(ICS)高实时性、高可用性、长生命周期、专有协议占比高的特性,在传统 IT 安全产品基础上进行工业级优化定制的专用安全工具,核心目标是在不影响工业…...
事件相机预处理芯片:基于混合内存计算的图像恢复与区域提取
1. 项目概述:为事件相机打造一颗“聪明”的本地大脑如果你接触过机器人、自动驾驶或者智能监控,大概率听说过“事件相机”(Event-based Camera),或者更学术一点的名字——神经形态视觉传感器。和咱们手机里每秒拍几十张…...
Claude + MS Project双引擎协同术:5分钟完成跨时区资源冲突检测与重排程,压测显示交付准时率提升41.6%
更多请点击: https://codechina.net 第一章:Claude项目管理应用技巧 Claude 作为具备强推理与长上下文理解能力的大语言模型,可深度融入项目管理全生命周期,提升需求分析、任务拆解、进度追踪与风险预判效率。关键在于将其定位为…...
图像增强与半监督学习在语义分割中的应用
1. 图像增强技术在语义分割中的应用原理计算机视觉领域的语义分割任务要求模型对图像中的每个像素进行分类,这需要模型具备强大的特征提取能力和泛化性能。图像增强技术通过人为引入数据多样性,成为提升模型鲁棒性的关键手段。在语义分割任务中ÿ…...
3分钟解决网易云音乐格式限制:免费NCM转换工具完全指南
3分钟解决网易云音乐格式限制:免费NCM转换工具完全指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾因网易云音乐下载的NCM格式文件无法在车载音响或普通播放器中播放而烦恼?今天,我将…...
SSH安全加固:禁用弱加密算法的实操指南
1. 为什么禁用弱加密算法不是“可选项”,而是SSH上线前的必过门槛我第一次在客户现场接手一台刚部署的CentOS 7跳板机时,安全扫描报告里赫然标红了三条:ssh-rsa签名算法被标记为CRITICAL,diffie-hellman-group1-sha1密钥交换被判定…...
Triton+KServe构建高可用ML模型服务的七道关卡
1. 项目概述:这不是一次“部署”,而是一场从实验室到产线的系统性迁移“From Notebook to Production: Running ML in the Real World (Part 4)”——这个标题里藏着太多被轻描淡写却重若千钧的词。“Notebook”不是指纸质本子,而是Jupyter里…...
基于DSP与SC1083 ADC的光纤远程数据采集系统设计实战
1. 项目概述:当DSP遇上高速光缆,如何构建一个“快、准、稳”的远程数据采集系统在工业自动化、电力监测、超声无损检测这些领域,我们经常需要面对一个头疼的问题:如何把现场传感器采集到的大量、高速、有时甚至是微弱的模拟信号&a…...
OBS直播教程:OBS多路推流在哪里设置?如何安装?OBS多路推流教程
OBS直播教程:OBS多路推流在哪里设置?如何安装?OBS多路推流教程 具体如何下载?如何安装?如何使用?我写了一个保姆级教程,请往下看,步骤很详细的,你一定看得懂 第一步&…...
别再复制粘贴了!手把手带你用DEFINE_PROFILE宏实现一个正弦变化入口速度
从零实现Fluent正弦速度入口:DEFINE_PROFILE宏实战指南 在计算流体力学(CFD)仿真中,标准边界条件设置往往无法满足复杂工况需求。想象这样一个场景:你需要模拟风力发电机叶片在阵风条件下的受力情况,入口风速并非恒定值࿰…...
