想问下,代码智能补全是用什么类型模型

207 天前
 smdbh

现在是用 vscode, copilot 是好用,但有次数限制.换了 continue + 第三方 key. 但不知道 model 需要满足啥条件才能用. 现在比较好用的是啥模型? 谢谢

1513 次点击
所在节点    问与答
7 条回复
billbob
207 天前
腾讯豆包.通义
ouTL034NxOke37E9
207 天前
同问
jaylee4869
207 天前
理论上所有 LLM 都支持代码补全,你想问的是一个叫 FIM ( Fill-In-the-Middle )的模版输出。比如 DeepSeek FIM API: https://api-docs.deepseek.com/zh-cn/api/create-completion
ouTL034NxOke37E9
207 天前
@wwzz @smdbh 这个配置能用就是有点慢
"tabAutocompleteModel":{
"title": "DeepSeek Autocomplete",
"model": "deepseek-chat",
"apiKey": "sk-xxx",
"provider": "deepseek",
"apiBase": "https://api.deepseek.com/beta"
}
l4ever
206 天前
qwen2.5-coder
smdbh
206 天前
@jaylee4869 , 再问下如何知道某个模型包含这个 FIM 功能?
jaylee4869
206 天前
@smdbh 最快的方法是看对应的 API 文档, 进去搜 FIM 。
deepseek 文档你看到了,

其实这类仅仅是 LLM 的一种应用,特定的训练基于固定模板的 FIM Prompt ,一般都是这样:

prompt = '<|fim_prefix|>' + prefix_code + '<|fim_suffix|>' + suffix_code + '<|fim_middle|>'

所以你可以尝试直接问某个模型:

```
<|fim_prefix|>System.out.Pri<|fim_suffix|>;<|fim_middle|>

```

看是不是*直接*回复类似 `ntln("Hello, World!")<|fim_suffix|>;` 这样的内容,而没有口语字词,说明这种模型使用 FIM 训练过,也就支持 FIM 。

Reference:
https://openai.com/index/efficient-training-of-language-models-to-fill-in-the-middle/
https://github.com/QwenLM/Qwen2.5-Coder?tab=readme-ov-file#3-file-level-code-completion-fill-in-the-middle

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1110513

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX