neovim/pynvim を使用した、Vim への直接アクセスを備えた実験的な LLM エージェント/ツールキット。効率的なファイル編集のためのサブエージェントとして、または独自のエージェント ランタイムとして使用することを目的としています。
構築されたもの:
これが小さなデモビデオです。
LLM エージェントを使用してファイルを編集するには、いくつかの一般的なオプションがあります。
解決策: 新しいコンテンツを含むツールを呼び出すようにエージェントに依頼する代わりに、適切なコンテキストを持つサブエージェントにドロップする「エディタ」ツールをエージェントに提供します。シミュレートされたエディターは、エディターの状態をプレーンテキストで表示し、個々のキーストロークを受け取り、更新を反映します。そして、LLM がすでに Vim について知っているのに、なぜ独自のエディタを発明するのでしょうか?
️ 警告: VimGPT はまだ実験段階であり、まだ製品化の準備ができていません。
gpt-4
だけのようです - 詳細は未定です。neovim をインストールする必要があります。MacOS を使用している場合は、単にbrew install neovim
実行できます。次に、PyPI からインストールします。
pip install vimgpt # or poetry add vimgpt
CLI の使用法 (デモ/テストを目的としたもの):
$ vimgpt --help
usage: vimgpt [-h] [--path PATH] [--output [OUTPUT]] [--socket SOCKET] [--loglevel {DEBUG,INFO,WARNING}] [--max-calls MAX_CALLS] [--delay-seconds DELAY_SECONDS] command
VimGPT CLI
positional arguments:
command Task for VimGPT to perform on the file, in natural language:
'Rename Bob to Bill in paragraph 2`,
'make arg `user` optional on line 34',
'rewrite this in iambic pentameter', etc.
options:
-h, --help show this help message and exit
--path PATH, -p PATH File for VimGPT to open.
NOTE: for safety, VimGPT will NOT make changes directly
to the file unless the --output flag is provided.
--output [OUTPUT], -o [OUTPUT]
Specify output file. If flag is not provided,
VimGPT will NOT make changes directly to the file.
If flag is provided without value, uses the same path as the input file.
If flag is provided with no value and there is no input file specified,
will output to 'vimgpt_output.txt'.
--socket SOCKET, -s SOCKET
Path to nvim socket of running nvim process.
If left empty, VimGPT will run in headless mode.
Suggested value: '/tmp/nvimsocket'.
--loglevel {DEBUG,INFO,WARNING}
Set the logging level (default: WARNING)
--max-calls MAX_CALLS
Maximum number of LLM calls. Default is 1000.
--delay-seconds DELAY_SECONDS
Delay in seconds. If not provided, defaults to None.
ヘッドレス vim で実行するには:
vimgpt " Edit the contents of the README file to recommend Vim as the best text editor. " --path tests/samples/README.md --loglevel INFO
実行中の Neovim インスタンスにアタッチして、エージェントと同様にリアルタイムで何が起こっているかを確認できるようにするには:
NVIM_LISTEN_ADDRESS=/tmp/nvimsocket nvim
# in separate terminal
vimgpt " Edit the contents of the README file to recommend Vim as the best text editor. " --path tests/samples/README.md --loglevel INFO --socket ' /tmp/nvimsocket '
VimGPT はサブエージェント/ツールとして使用することを目的としているため、大規模なエージェント内で構成できるため、特定の目的でvim_gpt_agent()
を直接呼び出すことができます。
from vimgpt import vimgpt_agent
original_file_content : str = '???'
new_file_content : str = vimgpt_agent (
command = 'Edit to recommend vim over emacs.' ,
content = original_file_content ,
file_path = 'does_not_matter_just_useful_for_prompt.md' ,
# socket=None, # or '/path/to/running/nvim'
# max_calls=1000, # can use prevent cycles
# delay_seconds=2, # if you want to follow in real-time more easily
)
インスピレーションを得るためにはvimgpt/core.py
を参照してください。 LangChain の例については、 ./vimgpt/langchain_agents/
をチェックして、代替ランタイムと VimGPT をツールとして使用する方法の例を確認してください。
このプロジェクトは詩を使用しています。
# If you don't already have 3.11 installed
pyenv install 3.11:latest
# typical poetry install methods didn't work for me
brew install poetry
# this will create a .venv in the project directory.
# it should automatically check the right version is installed.
poetry install
# view info about your new venv
poetry env list
# activate in your shell
poetry shell
# exit poetry env
source deactivate
PyPI でパッケージを更新するには (https://pypi.org/project/vimgpt):
poetry build
poetry config pypi-token.pypi YOUR_PYPI_TOKEN
poetry publish
ruff + black + mypy + pytest を使用します。 VSCode を使用している場合は、次の手順に従って、mypy 拡張機能の設定がアクティブなインタープリター (詩の venv) を使用するように設定されていることを確認してください。
black .
ruff check . --fix
mypy vimgpt
pytest -vv -s --verbose -o log_cli=true
set relativenumber
)_
または|
を使用してみましたしかし、これは実際にはうまくいきませんでした。