Ollama 使用本地模型来使用 copilot

最近 Mistral AI 开放了一个非常善于写代码的模型 codestral,只有 22B, 而我的 MacBook 可以轻松驾驭它,在运行时内存基本只调用 15G 左右,但是又想把它应用到 VScode,这样就可以替代 Github copilot 来更加安全地编写代码。

首先保证在本机已经已经安装了 Ollama 和模型 codestral ,参考官方的链接即可,非常简单。

想在 VScode 使用 类似于 copilot 的功能,一方面需要已经通过 Ollama 安装了 codestralstarcoder2 之后在 VScode 中安装插件 continue 。保证你的 Ollama 已经启动即可,你可以通过访问 localhost:11434 来验证它是否在运行。

之后在 continue 插件里面选择 local model 即可,记住,一定要安装 starcoder2 它是实现你成为 TAB 工程师的关键!

Ollama 使用私有部署模型来使用 copilot

但是,并不是所有朋友的设备都具有在本地跑一个 22B 模型的能力,或者移动设备能力不足。这时候,如果你拥有一个性能还不错的主机设备,那么你可以选择将 Ollama 部署到主机上,然后远程访问它。

想访问它的前提是需要设置它运行在 0.0.0.0 上,让其他设备能够访问到这个服务,参考这里 :

setting-environment-variables-on-linux

Setting environment variables on Linux

If Ollama is run as a systemd service, environment variables should be set using systemctl:

  1. Edit the systemd service by calling systemctl edit Ollama.service. This will open an editor.

  2. For each environment variable, add a line Environment under section [Service]:

    1
    2
    
    [Service]
    Environment="OLLAMA_HOST=0.0.0.0"    
    

Save and exit.

Reload systemd and restart Ollama:

1
2
systemctl daemon-reload
systemctl restart ollama

[!WARNING]

注意!如果你的机器升级了 Ollama ,他会动你的 service 文件,你需要重新编辑保存它!

这里我部署到了我的 itx 上,我的 itx 设备使用 Debian ,确认安装 Ollama 以及 codestralstarcoder2 之后,修改 Ollama.service 的配置文件,然后重启即可,然后在本地机器上尝试访问它 ip:11434 能看到 Ollama is running 就说明能够成功访问到了。

如果你有使用 iptables 或者 ufw 那要记得开放 11434 端口来进行访问。

然后编辑 VScode 上 continue 的扩展配置,我的配置文件目录在 /Users/bdim404/.continue/config.json 你也可以通过点击 continue 右下角的 设置 图标来修改它的配置来使用远程机器上配置的 ollama,关键参数是 "apiBase"

这里是我的示例,例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
  "models": [
    {
      "model": "AUTODETECT",
      "title": "Ollama in itx",
      "apiBase": "http://192.168.51.154:11434",
      "provider": "Ollama"
    }
  ],
  "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": "Starcoder 3b",
    "provider": "Ollama",
    "apiBase": "http://192.168.51.154:11434",
    "model": "starcoder2"
  },
  "allowAnonymousTelemetry": true,
  "embeddingsProvider": {
    "provider": "transformers.js"
  }
}

然后保存即可,这个时候在 continue 中选择 Ollama in itx 中的模型来进行问答来测试即可。

模型推荐

针对编写代码问答 copilot chat :

codestral 22B (运行时大概需要 15G 显存,显存不足可能导致生成慢/卡顿)

codeqwen 7B

这两个模型都针对 code 进行了优化。

对于 TAB 补全可以使用:

starcoder2 3B.

参考链接:

https://ollama.com/

https://ollama.com/library/codestral

https://ollama.com/library/starcoder2

https://docs.continue.dev/intro

https://github.com/ollama/ollama/blob/main/docs/faq.md#setting-environment-variables-on-linux