📚

lsp-aiでgroqを利用した爆速Copilotを手に入れたい

2024/06/16に公開

lsp-aiについて

  • lsp(Language Server Protocol)はMicroSoftが提唱したプロトコルで、VSCodeからhelixまで幅広いエディタの共通のインターフェースを提供します
  • lsp-aiは、lspを使ってGitHub Copilotのようなインライン補完を提供するツールです
  • 今回は簡単のためVSCodeの例を示します。

https://github.com/SilasMarvin/lsp-ai

インストール

以下の手順でセットアップします。

  1. lsp-aiのインストール
  2. VSCode拡張機能のインストール
  3. groqのAPIキーの取得
  4. 拡張機能の設定

1. lsp-aiのインストール

wikiに従ってインストールします。以下はMacOSの例です。

cargo install lsp-ai -F llama_cpp -F metal

https://github.com/SilasMarvin/lsp-ai/wiki/Installation

2. VSCode拡張機能のインストール

以下のリンクからVSCode拡張機能をインストールします。インストール数が少ないですが公式です。 参考

https://marketplace.visualstudio.com/items?itemName=SilasMarvin.lsp-ai

3. groqのAPIキーの取得

他のものでも動きますが、本趣旨であるgroqでの爆速補完のためにAPIキーを取得します。
ログインしてCreate API Keyで簡単に取得できます。

https://console.groq.com/keys

4. 拡張機能の設定

まずはQuick Suggestionsの設定を変更します。

    "editor.quickSuggestions": {
        "comments": "inline",
        "other": "inline",
        "strings": "inline"
    },

https://github.com/SilasMarvin/lsp-ai/wiki/Plugins#vs-code

次にプロバイダを設定します。公式のwikiだと少し不親切な部分。以下はgroqの例です。
auth_token_env_var_nameを利用したら環境変数から取得できるようですが、うまく認識しないのでauth_tokenで直接設定します。

    "lsp-ai.serverConfiguration": {
        "memory": {
            "file_store": {}
        },
        "models": {
            "model1": {
                "type": "open_ai",
                "chat_endpoint": "https://api.groq.com/openai/v1/chat/completions",
                "model": "llama3-8b-8192",
                "auth_token": "gsk_xxx",
            }
        },
        "completion": {
            "model": "model1",
            "parameters": {
                "max_context": 1800,
                "max_tokens": 32,
                "messages": [
                    {
                        "role": "system",
                        "content": "You are a programming completion tool. Replace <CURSOR> with the correct code."
                    },
                    {
                        "role": "user",
                        "content": "{CODE}"
                    }
                ]
            }
        }
    },

https://github.com/SilasMarvin/lsp-ai/wiki/Plugins#configuration-examples
https://github.com/SilasMarvin/lsp-ai/wiki/Configuration

使ってみた

最後に簡単なアルゴリズムを書いてみました。

速度

確かにスピードが速い気がしますが、cacheがないせいか、Copilotとそこまで変わらないスピードでした。

精度

7bにしては最低限使える精度が出ます。構文か崩れてたりするのでそこはチューニングが必要そうです。

その他

あとそしてちょっと書いただけでratelimitが来ます。やっぱ金かけないとです。

Discussion