言語モデル統合
アシスタントパネル
アシスタントパネルは、OpenAIの大規模言語モデルと対話する方法を提供します。アシスタントは、コードの生成、既存のコードに関する質問、メールやドキュメントなどのプレーンテキストの作成など、さまざまなタスクに役立ちます。アシスタントパネルを開くには、コマンドパレット(cmd-shift-p
)でworkspace: toggle right dock
アクションを使用して、右側のドックを切り替えます。
注:設定で右ドックを切り替えるためのデフォルトのバインドを設定できます。
セットアップ
-
OpenAI APIキーを作成します。
-
OpenAIアカウントにクレジットがあることを確認してください。
-
コマンドパレット(
cmd-shift-p
)でassistant: toggle focus
またはworkspace: toggle right dock
アクションを使用して、アシスタントパネルを開きます。 -
アシスタントパネルにフォーカスが当たっていることを確認してください。
-
コマンドパレット(
cmd-shift-p
)を開き、使用可能になったassistant: reset key
アクションを使用してOpenAI APIキーを設定します:
OpenAI APIキーはキーチェーンに保存されます。
Zedは、OPENAI_API_KEY
環境変数が定義されている場合にも使用します。 OpenAI APIキーをリセットする必要がある場合は、アシスタントパネルにフォーカスを当て、コマンドパレットアクションassistant: reset key
を実行します。
会話をする
Zedのアシスタントエディターは、他のエディターと同様に機能します。カスタムキーバインドを使用し、複数のカーソルを操作できるため、コーディングと言語モデルとのディスカッションをシームレスに切り替えることができます。ただし、アシスタントエディターは、メッセージブロックが含まれている点が異なります。これらのブロックは、会話内の異なる役割に対応するテキストのコンテナとして機能します。これらの役割には以下が含まれます。
あなた
アシスタント
システム
開始するには、モデルを選択し、あなた
ブロックにメッセージを入力します。
入力すると、選択したモデルの残りのトークン数が更新されます。
エディターからテキストを挿入するには、テキストを強調表示してcmd->
(assistant: quote selection
)を実行するだけです。コードの場合は、Zedがフェンス付きコードブロックで囲みます。
メッセージを送信するには、cmd-enter
(assistant: assist
)を使用します。 enter
キーを押すとメッセージが送信される一般的なチャットアプリケーションとは異なり、アシスタントエディターでは、できるだけ通常のエディターに近い感覚にすることを目標としていました。そのため、enter
キーを押すと、単に新しい行が挿入されます。
メッセージを送信した後、アシスタントの応答は、アシスタント
メッセージブロックにストリーミングされます。
ストリームは、escape
でいつでもキャンセルできます。これは、応答が探しているものではないことに早期に気付いた場合に役立ちます。
いつでも新しい会話を開始する場合は、cmd-n
を押すか、パネルの左上にあるハンバーガーメニューの[新しいコンテキスト]メニューオプションを使用できます。
簡単なやり取りの会話は、アシスタントでうまく機能します。ただし、会話の前のテキストを変更して、別の方向に進む必要がある場合があります。
会話を編集する
アシスタントは、会話を自由に制御できるようにします。アシスタントからの応答を含め、以前のテキストを自由に編集できます。メッセージブロック全体を削除する場合は、カーソルをブロックの先頭に置いてdelete
キーを使用するだけです。典型的なワークフローには、問い合わせを絞り込んだり、追加のコンテキストを提供したりするために、会話全体で編集や調整を行うことが含まれる場合があります。次に例を示します。
あなた
ブロックにテキストを書き込みます。cmd-enter
でメッセージを送信します。- 期待どおりの
アシスタント
応答が得られません。 escape
で応答をキャンセルします。アシスタント
メッセージブロックの内容を消去し、ブロック全体を削除します。- 元のメッセージに追加のコンテキストを追加します。
cmd-enter
でメッセージを送信します。
以前のメッセージを編集できることで、トークンの使用方法を制御できます。間違いを修正したり、追加のコンテキストを追加したりするために新しいコンテキストを起動する必要はなく、フォローアップの修正を送信することでトークンを無駄にする必要もありません。
注意すべき追加事項
- 会話の途中でモデルタイプを自由に変更できます。
- 役割をクリックすることでメッセージブロックの役割を切り替えることができます。これは、
アシスタント
ブロックで応答を受信し、それを編集してあなた
ブロックとして送り返したい場合に役立ちます。
会話の保存と読み込み
最初のメッセージを送信した後、言語モデルによって会話の名前が生成され、会話はファイルシステムの~/.config/zed/conversations
に自動的に保存されます。アシスタントパネルの左上隅にあるハンバーガーボタンをクリックすると、以前のメッセージにアクセスして読み込むことができます。
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": "http://localhost:11434/v1"
}
}
}
ここでのカスタムURLはhttp://localhost:11434/v1
です。
macOSでOllamaを使用する
OllamaをOpenAPIエンドポイントとして表示させることで、ZedアシスタントでOllamaを使用できます。
- Zedの
settings.json
に以下を追加します。
{
"assistant": {
"version": "1",
"provider": {
"name": "openai",
"type": "openai",
"default_model": "gpt-4-turbo-preview",
"api_url": "http://localhost:11434/v1"
}
}
}
- たとえば、Ollamaで
mistral
モデルをダウンロードします。
ollama run mistral
- モデルをコピーし、Zedの
settings.json
のモデルと一致するように名前を変更します。
ollama cp mistral gpt-4-turbo-preview
assistant: reset key
(上記のセットアップセクションを参照)を使用し、次のAPIキーを入力します。
ollama
- Zedを再起動します。
Claude 3.5 Sonnetを使用する
次の設定を追加することで、ZedアシスタントでClaudeを使用できます。
"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" }
]
}
}
]