🌟

NeoVimとChatGPTを使ってコードを改良する

2022/12/18に公開

この記事は筆者が以下で投稿したものの日本語版です。

ChatGPT.nvimの登場

今、OpenAI GPT-3チャットボットが大きな可能性を秘めています。最近、新しいAIボットが登場しています。ChatGPTです。

https://chat.openai.com

ChatGPTがリリースされ、多くの野心的なソフトウェアエンジニアがSlackやLINE botなどを通じてそのAPIを発展させようとしているようです。そんな中、幸運にもOpenAIのGPT-3チャットボットと連携するNeoVimプラグイン ChatGPT.nvim を見つけることができました。

NeoVimの新機能を試すのに熱中しているヘビーユーザーなので、今回もこの魅力的なプラグインの紹介を始めてみました。今回は、その使い方とChatGPT.nvimの動作を紹介します。

ChatGPT.nvimを導入してみる

touchコマンドを入力して、.openai_key.zshファイルを作成します。

$ touch $HOME/.openai_key.zsh
$ vi $HOME/.openai_key.zsh

HOME/.openai_key.zsh を修正して、OPEN_API_KEY を設定します。

export OPENAI_API_KEY=<value>

以下のコードを ~/.zshrc ファイルに追加してください。

# ChatGPT
source "$HOME/.openai_key.zsh"

.zshで環境変数を設定するのは、ChatGPT NeoVimプラグインが環境変数を抽出するpythonのメソッドである os.getenv() で読み取るためです。

https://github.com/jackMort/ChatGPT.nvim/blob/6f602143d64b506fa8fcfa349df54ddb289360f2/lua/chatgpt/api.lua#L9-L13

以下のコマンドを実行し、.zshrcの設定をロードします。

$ source ~/.zshrc

次にNeoVimの設定について説明します。NeoVimがどのような構成になっているかは開発者次第なので、次の説明はすべての人に当てはまるとは限りません。あなたの環境はどうでしょうか?私のNeoVimの環境はこちらです。

packer.nvimを既に扱っていれば、ChatGPT.nvimのインストールは簡単だと思います。次のコードをコピーして require('packer') に貼り付けてください。

require('packer').startup(function(use)
    ...
    -- ChatGPT
    -- https://github.com/jackMort/ChatGPT.nvim
    use({
        "jackMort/ChatGPT.nvim",
        config = function() require("chatgpt").setup({}) end,
        requires = {
            "MunifTanjim/nui.nvim", "nvim-lua/plenary.nvim",
            "nvim-telescope/telescope.nvim"
        }
    })
    ...
)

それでは、インストールしましょう。

:PackerInstall

現在、ChatGPT.nvimで3つのコマンドが利用可能です。そこで、これらを init.lua でキーバインディングとして登録しました。

-- ChatGPT
-- https://github.com/jackMort/ChatGPT.nvim
vim.keymap.set('n', '<Leader>tk', '<cmd>:ChatGPT<cr>')
vim.keymap.set('n', '<Leader>tj', '<cmd>:ChatGPTActAs<cr>')
vim.keymap.set('n', '<Leader>tt', '<cmd>:ChatGPTEditWithInstructions<cr>')

コマンド <Leader>tt または :ChatGPTEditWithInstructions を押した後の画面を見てみましょう: 選択したテキストまたはウィンドウ全体を編集する対話型のウィンドウが開きます。

超クール! OpenAI GPT-3チャットボットはバグを修正したレスポンスを返してくれました。もちろん、OpenAI GPT-3 chatbotからの応答は、必ずしも正しく適切なものではないかもしれませんが、大きなヒントを与えてくれ、開発速度を向上させることができるでしょう。

Discussion