V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
smdbh
V2EX  ›  问与答

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

  •  
  •   smdbh · 11 天前 · 930 次点击

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

    7 条回复    2025-02-12 16:43:15 +08:00
    billbob
        1
    billbob  
       11 天前
    腾讯豆包.通义
    ouTL034NxOke37E9
        2
    ouTL034NxOke37E9  
       11 天前
    同问
    jaylee4869
        3
    jaylee4869  
       11 天前   ❤️ 1
    理论上所有 LLM 都支持代码补全,你想问的是一个叫 FIM ( Fill-In-the-Middle )的模版输出。比如 DeepSeek FIM API: https://api-docs.deepseek.com/zh-cn/api/create-completion
    ouTL034NxOke37E9
        4
    ouTL034NxOke37E9  
       11 天前   ❤️ 1
    @wwzz @smdbh 这个配置能用就是有点慢
    "tabAutocompleteModel":{
    "title": "DeepSeek Autocomplete",
    "model": "deepseek-chat",
    "apiKey": "sk-xxx",
    "provider": "deepseek",
    "apiBase": "https://api.deepseek.com/beta"
    }
    l4ever
        5
    l4ever  
       10 天前   ❤️ 1
    qwen2.5-coder
    smdbh
        6
    smdbh  
    OP
       9 天前
    @jaylee4869 , 再问下如何知道某个模型包含这个 FIM 功能?
    jaylee4869
        7
    jaylee4869  
       9 天前   ❤️ 1
    @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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2743 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 05:55 · PVG 13:55 · LAX 21:55 · JFK 00:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.