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
러프 + 블랙 + mypy + pytest를 사용하세요. VSCode를 사용하는 경우 다음 지침에 따라 mypy 확장 설정이 활성 인터프리터(시 venv)를 사용하도록 설정되어 있는지 확인할 수 있습니다.
black .
ruff check . --fix
mypy vimgpt
pytest -vv -s --verbose -o log_cli=true
set relativenumber
)_
또는 |
사용해 보았습니다. 그러나 이것은 실제로 작동하지 않았습니다.