編輯器內的完全開源 AI 程式碼助手

2024 年 5 月 31 日

這是一篇由 Continue 共同創辦人 Ty Dunn 撰寫的客座文章,內容涵蓋如何設定、探索,以及找出將 Continue 和 Ollama 搭配使用的最佳方式。

Continue and Ollama

Continue 讓您能夠輕鬆地在 Visual Studio Code 和 JetBrains 內,使用開源 LLM 直接建立您自己的程式碼助手。所有這些都可以在您自己的筆記型電腦上完全運行,或者將 Ollama 部署在伺服器上,以根據您的需求遠端支援程式碼完成和聊天體驗。

若要進行設定,您需要安裝

下載完成後,以下是我們建議探索的內容:

試用 Mistral AI 的 Codestral 22B 模型進行自動完成和聊天

目前,Codestral 是我們目前最喜歡的模型,它能夠同時進行自動完成和聊天。此模型展示了 LLM 在程式設計任務方面的改進。然而,由於它具有 220 億個參數和 非商業授權,因此需要相當多的 VRAM,並且只能用於研究和測試目的,因此可能不是日常本地使用的最佳選擇。

a. 在您的終端機中執行以下指令來下載並執行 Codestral

ollama run codestral

b. 點擊 Continue 右下角的齒輪圖示以開啟您的 config.json 並新增

{
  "models": [
    {
      "title": "Codestral",
      "provider": "ollama",
      "model": "codestral"
    }
  ],
  "tabAutocompleteModel": {
    "title": "Codestral",
    "provider": "ollama",
    "model": "codestral"
  }
}

VS Code settings to change config.json

使用 DeepSeek Coder 6.7B 進行自動完成,並使用 Llama 3 8B 進行聊天

根據您機器上的 VRAM 容量,您或許可以利用 Ollama 運行多個模型並處理多個並行請求的能力,方法是使用 DeepSeek Coder 6.7B 進行自動完成,並使用 Llama 3 8B 進行聊天。如果您的機器無法同時處理兩者,請分別嘗試它們,並決定您偏好本地自動完成還是本地聊天體驗。然後,您可以使用遠端託管或 SaaS 模型來獲得另一種體驗。

a. 在您的終端機中執行以下指令來下載並執行 DeepSeek Coder 6.7B

ollama run deepseek-coder:6.7b-base

b. 在另一個終端機視窗中執行以下指令來下載並執行 Llama 3 8B

ollama run llama3:8b

c. 點擊 Continue 右下角的齒輪圖示以開啟您的 config.json 並新增

{
  "models": [
    {
      "title": "Llama 3 8B",
      "provider": "ollama",
      "model": "llama3:8b"
    }
  ],
  "tabAutocompleteModel": {
    "title": "DeepSeek Coder 6.7B",
    "provider": "ollama",
    "model": "deepseek-coder:6.7b-base"
  }
}

使用 nomic-embed-text 嵌入與 Ollama 搭配使用,以支援 @codebase

Continue 內建一個 @codebase 內容提供器,可讓您自動從程式碼庫中檢索最相關的程式碼片段。假設您已經設定了聊天模型(例如 Codestral、Llama 3),由於使用了 Ollama 和 LanceDB 的嵌入,您可以保持整個體驗在本地進行。目前,我們建議使用 nomic-embed-text 嵌入。

a. 在您的終端機中執行以下指令來下載 nomic-embed-text

ollama pull nomic-embed-text

b. 點擊 Continue 右下角的齒輪圖示以開啟您的 config.json 並新增

{
  "embeddingsProvider": {
    "provider": "ollama",
    "model": "nomic-embed-text"
  }
}

c. 根據您的程式碼庫大小,索引可能需要一些時間,然後您可以向它提問,重要的程式碼庫區段將會自動被找到並用於回答中(例如:「@codebase Llama 3 的預設上下文長度是多少?」)

在您的開發資料上微調 StarCoder 2,並將其推送到 Ollama 模型庫

當您使用 Continue 時,會自動產生關於您如何建構軟體的資料。預設情況下,此開發資料會儲存到您本地機器上的 .continue/dev_data。當與您最終提交的程式碼結合使用時,它可以被用來改進您或您的團隊使用的 LLM(如果您允許)。例如,您可以使用團隊接受的自動完成建議來微調像 StarCoder 2 這樣的模型,以提供更好的建議。

a. 將「接受的 Tab 建議」提取並載入到 Hugging Face Datasets 中

b. 使用 Hugging Face Supervised Fine-tuning Trainer 來微調 StarCoder 2

c. 將模型推送到 Ollama 模型庫,供您的團隊使用並衡量您的接受率變化

透過使用 @docs 提問並搭配 Continue 的協助,進一步了解 Ollama

Continue 還內建一個 @docs 內容提供器,可讓您從任何文件網站索引和檢索程式碼片段。假設您已經設定了聊天模型(例如 Codestral、Llama 3),您可以透過提供 Ollama README 在 GitHub 上的連結,並以其作為上下文提問來了解更多資訊,從而保持整個體驗在本地進行。

a. 在聊天側邊欄中輸入 @docs,選擇「新增文件」,將「https://github.com/ollama/ollama” 複製並貼到 URL 欄位中,並在標題欄位中輸入「Ollama」

b. 它應該會快速索引 Ollama README,然後您可以向它提問,重要的章節將會自動被找到並用於回答中(例如:「@Ollama 我該如何執行 Llama 3?」)

加入我們的 Discord!

現在您已經嘗試了這些不同的探索,您應該更清楚了解使用 Continue 和 Ollama 的最佳方式。如果您在過程中遇到問題或有疑問,請加入 Continue DiscordOllama Discord 以獲得一些幫助和解答。