語言模型整合

助理面板

助理面板提供您與 OpenAI 的大型語言模型互動的方式。助理擅長各種任務,例如產生程式碼、詢問有關現有程式碼的問題,甚至撰寫純文字,例如電子郵件和文件。若要開啟助理面板,請使用命令面板 (cmd-shift-p) 中的 workspace: toggle right dock 動作來切換右側面板。

注意:可以透過設定設定預設繫結來切換右側面板。

設定

  1. 建立 OpenAI API 金鑰

  2. 確保您的 OpenAI 帳戶有餘額

  3. 使用命令面板 (cmd-shift-p) 中的 assistant: toggle focusworkspace: toggle right dock 動作開啟助理面板。

  4. 確保助理面板已聚焦

    The focused assistant panel

  5. 開啟命令面板 (cmd-shift-p) 並使用現在可用的 assistant: reset key 動作來設定您的 OpenAI API 金鑰:在右側欄位輸入您的 OpenAI API 金鑰並按下 Enter

OpenAI API 金鑰將會儲存在您的鑰匙圈中。

如果已定義 OPENAI_API_KEY 環境變數,Zed 也會使用它。如果您需要重設 OpenAI API 金鑰,請聚焦於助理面板並執行命令面板動作 assistant: reset key

進行對話

Zed 中的助理編輯器功能與任何其他編輯器類似。您可以使用自訂快捷鍵並使用多個游標,讓您在編碼和與語言模型進行討論之間無縫切換。但是,助理編輯器與其他編輯器的不同之處在於它包含訊息區塊。這些區塊作為對話中不同角色的文字容器。這些角色包括

  • 助理
  • 系統

首先,選擇一個模型並在 區塊中輸入訊息。

Asking a question

當您輸入時,選定模型的剩餘可用權杖數會更新。

從編輯器插入文字就像反白顯示文字並執行 cmd-> (assistant: quote selection) 一樣簡單;如果它是程式碼,Zed 會將其包裝在程式碼區塊中。

Quoting a selection

若要提交訊息,請使用 cmd-enter (assistant: assist)。與典型的聊天應用程式不同,在典型的聊天應用程式中,按下 enter 會提交訊息,在助理編輯器中,我們的目標是讓它盡可能接近一般的編輯器。因此,按下 enter 只會插入新的一行。

提交訊息後,助理的回覆會串流顯示在下方的一個 助理 訊息區塊中。

Receiving an answer

您可以隨時使用 escape 取消串流。如果您很早就意識到回覆不是您想要的,這會很有用。

如果您想隨時開始新的對話,可以按下 cmd-n 或使用面板左上角漢堡選單中的 New Context 選單選項。

簡單的來回對話在助理中可以很好地運作。但是,有時您可能想修改對話中的先前文字並將其引導到不同的方向。

編輯對話

助理讓您可以靈活地控制對話。您可以自由編輯任何先前的文字,包括助理的回覆。如果您想完全移除訊息區塊,只需將游標放在區塊的開頭並使用 delete 鍵。典型的流程可能包括在整個對話中進行編輯和調整,以改進您的查詢或提供額外的上下文。以下是一個範例

  1. 區塊中撰寫文字。
  2. 使用 cmd-enter 提交訊息
  3. 收到不符合您預期的 助理 回覆
  4. 使用 escape 取消回覆
  5. 清除 助理 訊息區塊的內容並完全移除該區塊
  6. 將額外的上下文新增到您的原始訊息中
  7. 使用 cmd-enter 提交訊息

能夠編輯先前的訊息讓您可以控制如何使用權杖。您不需要啟動新的上下文來修正錯誤或新增額外的上下文,也不必透過提交後續修正來浪費權杖。

一些需要牢記的額外要點

  • 您可以隨時更改模型類型。
  • 您可以透過點選角色來循環訊息區塊的角色,當您在 助理 區塊中收到想要編輯並作為 區塊發送回去的回覆時,這會很有用。

儲存和載入對話

提交第一條訊息後,語言模型會產生對話的名稱,並且對話會自動儲存到檔案系統的 ~/.config/zed/conversations 中。您可以透過點選助理面板左上角的漢堡按鈕來存取和載入先前的訊息。

Viewing assistant history

為 OpenAI 使用自訂 API 端點

您可以為 OpenAI 使用自訂 API 端點,只要它與 OpenAI API 結構相容即可。

為此,請將以下內容新增到您的 Zed settings.json

{
  "assistant": {
    "version": "1",
    "provider": {
      "name": "openai",
      "type": "openai",
      "default_model": "gpt-4-turbo-preview",
      "api_url": "https://127.0.0.1:11434/v1"
    }
  }
}

此處的自訂網址為 https://127.0.0.1:11434/v1

在 macOS 上使用 Ollama

您可以將 Ollama 與 Zed 助理搭配使用,方法是讓 Ollama 顯示為 OpenAPI 端點。

  1. 將以下內容新增到您的 Zed settings.json
{
  "assistant": {
    "version": "1",
    "provider": {
      "name": "openai",
      "type": "openai",
      "default_model": "gpt-4-turbo-preview",
      "api_url": "https://127.0.0.1:11434/v1"
    }
  }
}
  1. 例如,使用 Ollama 下載 mistral 模型
ollama run mistral
  1. 複製模型並將其名稱更改為與 Zed settings.json 中的模型相符
ollama cp mistral gpt-4-turbo-preview
  1. 使用 assistant: reset key(請參閱上面的 設定 區段)並輸入以下 API 金鑰
ollama
  1. 重新啟動 Zed

使用 Claude 3.5 Sonnet

您可以透過新增以下設定來將 Claude 與 Zed 助理搭配使用

"assistant": {
  "version": "1",
  "provider": {
    "default_model": "claude-3-5-sonnet",
    "name": "anthropic"
  }
},

儲存設定時,助理面板會開啟並要求您新增 Anthropic API 金鑰。您可以在 此處 取得此金鑰。

即使您付費購買了 Claude Pro,您仍然需要 支付額外的費用 才能透過 API 使用它。

行內產生

您可以透過選取文字並按下 ctrl-enter 來在任何編輯器中產生和轉換文字。您也可以透過在多個游標處按下 ctrl-enter,或透過在多緩衝區中跨越多個節錄的選取範圍按下 ctrl-enter,以平行執行多個產生請求。若要建立預先填入提示的自訂快捷鍵,您可以在快捷鍵映射中新增以下格式

[
  {
    "context": "Editor && mode == full",
    "bindings": {
      "ctrl-shift-enter": [
        "assistant::InlineAssist",
        { "prompt": "Build a snake game" }
      ]
    }
  }
]