今天看到了
【分享开源】Copilot后端代理服务|本地中转服务|离线Copilot本地|FIM模型本地补全
能够实现脱离cocopilot认证的而且自带转发的方式,经过部署后发现确实可用
因此具备了完全内网环境下的copilot条件,于是测试了下override使用近期的一些开源代码补全模型的测试情况(以下模型均采用ollama部署)
使用模型 | 参数大小 | 镜像大小 | 代码补全情况 | 对话情况 | |||||
---|---|---|---|---|---|---|---|---|---|
llama3.2 | 3B | 2.0GB | 不支持 | 生成无意义的换行 | |||||
qwen2.5-coder | 7B | 4.7GB | 支持,但不按注释生成 | 支持,但无法读取当前文件 | |||||
qwen2.5-coder(非量化版) | 7B | 15GB | 支持,但不按注释生成 | 支持,但无法读取当前文件 | |||||
deepseek-coder-v2 | 16B | 8.9GB | 支持,但不按注释生成 | 不支持 | |||||
mike/deepseek-coder-v2 | 16B | 10GB | 支持,但不按注释生成 | 不支持 | |||||
starcoder2:7b | 7B | 4.0GB | 支持,但不按注释生成 | 支持,但无法读取当前文件 | |||||
yi-coder | 9B | 5.0GB | 支持,但不按注释生成 | 不支持 | |||||
简而言之就是,小模型全部翻车
不推荐override搭配本地部署小模型使用
看了后台日志,使用github copoilot插件进行代码补全时,因为上下文都会传入当做prompt和suffix传递,在文件行数较多的情况下,即使写明注释,补全也会莫名其妙跑偏,但是如果新开一个空文件写同样的注释,又能正常生成了。
下面是多行文件下本地模型补全的情况
但是传递当前文件的对话情况就很奇怪,模型只响应了提问内容,但是对附加的附件内容完全处于不知情的状态
相比之下,使用deepseek 2.5版本的在线api完全没有上述模型的问题,能够正常在项目文件中间打注释生成代码且不会有胡言乱语的内容,chat功能也能正确读取当前文件回答,因此目前的本地模型是完全无法替代在线接口的。
下面是多行文件下deepseek API接口补全的情况
近期deepseek也开源了2.5版本的开源模型,但是236B哪怕Q4量化后也需要133GB的显存,我司内网也只能流出80G的卡能给我折腾,因此此次的内网摸鱼计划正式破产


内网使用continue.dev仍然是目前的最优解
希望deepseek能尽快放出2.5版本的小模型,同时也解决2.0版本没法在override下使用的问题
===================2024.10.18更新=======================================
今天抽空把各个工具模型都更新到最新,重新尝试了下Qwen-2.5-Coder
ollama版本:0.3.13 (0.3.12版本官方已经适配了Qwen-2.5-Coder的FIM功能)
Copilot后端代理服务 版本: v0.0.12-alpha
使用模型10月10号更新的 qwen2.5-coder:7b-instruct-fp16 (即官网完整版的15G模型)
使用结果如下
好吧。Qwen-2.5-Coder完整非量化的7B的模型在上下文多行的情况下还是无法克制的脑补过多,生成注释以外的内容。
本地部署情况下,还是使用continue.dev吧