目前市面上有不少基于大模型的 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\nWriteacomprehensivesetofunittestsfortheselectedcode.Itshouldsetup,runteststhatcheckforcorrectnessincludingimportantedgecases,andteardown.Ensurethatthetestsarecompleteandsophisticated.Givethetestsjustaschatoutput,don'teditanyfile.","description":"Writeunittestsforhighlightedcode"}],//"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 的不断发展,相信两者的差距以后会越来越小。以上就是今天介绍的内容,希望对大家有所帮助。