NeoVimとChatGPTを使ってコードを改良する
この記事は筆者が以下で投稿したものの日本語版です。
ChatGPT.nvimの登場
今、OpenAI GPT-3チャットボットが大きな可能性を秘めています。最近、新しいAIボットが登場しています。ChatGPTです。
ChatGPTがリリースされ、多くの野心的なソフトウェアエンジニアがSlackやLINE botなどを通じてそのAPIを発展させようとしているようです。そんな中、幸運にもOpenAIのGPT-3チャットボットと連携するNeoVimプラグイン ChatGPT.nvim
を見つけることができました。
- https://github.com/jackMort/ChatGPT.nvim
- (2) ChatGPT - preview of my first neovim plugin [WIP] : neovim
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()
で読み取るためです。
以下のコマンドを実行し、.zshrc
の設定をロードします。
$ source ~/.zshrc
次にNeoVimの設定について説明します。NeoVimがどのような構成になっているかは開発者次第なので、次の説明はすべての人に当てはまるとは限りません。あなたの環境はどうでしょうか?私のNeoVimの環境はこちらです。
- Plugin/package manager: https://github.com/wbthomason/packer.nvim
- Where writes code: init.lua
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