Agen/toolkit LLM eksperimental dengan akses Vim langsung, menggunakan neovim/pynvim. Ditujukan untuk digunakan sebagai sub-agen untuk pengeditan file yang efisien, atau sebagai runtime agennya sendiri.
Dibangun dengan:
Ini video demo kecilnya.
Ada beberapa opsi umum untuk menggunakan agen LLM untuk mengedit file:
Solusi : Daripada meminta agen memanggil alat dengan konten baru, berikan agen alat "Editor" yang dimasukkan ke dalam sub-agen dengan konteks yang sesuai. Editor yang disimulasikan menunjukkan status editor dalam teks biasa, melakukan penekanan tombol individual, dan mencerminkan pembaruan. Dan mengapa menciptakan editor Anda sendiri ketika LLM sudah mengetahui tentang Vim?
️ PERINGATAN : VimGPT masih bersifat eksperimental dan belum siap diproduksi.
gpt-4
yang tampaknya mampu menggunakan ini dengan benar - penelitian lebih lanjut tbd. Anda harus menginstal neovim, jika Anda menggunakan MacOS, Anda cukup brew install neovim
. Kemudian instal dari PyPI:
pip install vimgpt # or poetry add vimgpt
Penggunaan CLI (dimaksudkan untuk demo/pengujian):
$ 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.
Untuk menjalankan dengan vim tanpa kepala:
vimgpt " Edit the contents of the README file to recommend Vim as the best text editor. " --path tests/samples/README.md --loglevel INFO
Untuk melampirkan ke instance Neovim yang sedang berjalan sehingga Anda dapat melihat apa yang terjadi secara real-time seperti yang dilakukan agen:
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 dimaksudkan untuk digunakan sebagai subagen/alat sehingga dapat disusun dalam agen yang lebih besar, sehingga Anda cukup memanggil vim_gpt_agent()
secara langsung dengan tujuan tertentu.
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
)
Lihatlah vimgpt/core.py
untuk mendapatkan inspirasi. Untuk contoh LangChain, lihat ./vimgpt/langchain_agents/
untuk runtime alternatif dan contoh cara menggunakan VimGPT sebagai alat.
Proyek ini menggunakan puisi.
# 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
Untuk memperbarui paket di PyPI (https://pypi.org/project/vimgpt):
poetry build
poetry config pypi-token.pypi YOUR_PYPI_TOKEN
poetry publish
Gunakan ruff + hitam + mypy + pytest. Jika Anda menggunakan VSCode, Anda mungkin ingin mengikuti petunjuk ini untuk memastikan pengaturan ekstensi mypy diatur untuk menggunakan penerjemah aktif Anda (venv puisi).
black .
ruff check . --fix
mypy vimgpt
pytest -vv -s --verbose -o log_cli=true
set relativenumber
)_
atau |
yang disisipkan tapi ini tidak berhasil.