وكيل/مجموعة أدوات LLM تجريبية مع إمكانية الوصول المباشر إلى Vim، باستخدام neovim/pynvim. مخصص للاستخدام إما كوكيل فرعي لتحرير الملفات بكفاءة، أو كوكيل خاص به في وقت التشغيل.
بنيت مع:
وهنا شريط فيديو تجريبي ليل.
هناك بعض الخيارات الشائعة لاستخدام وكلاء LLM لتحرير الملفات:
الحل : بدلاً من مطالبة الوكيل باستدعاء أداة بالمحتويات الجديدة، امنح الوكيل أداة "محرر" والتي تقع في وكيل فرعي بالسياق المناسب. يُظهر المحرر المُحاكى حالة المحرر بنص عادي، ويأخذ ضغطات مفاتيح فردية، ويعكس التحديثات. ولماذا تخترع المحرر الخاص بك عندما يكون حاملو شهادة الماجستير في القانون يعرفون بالفعل عن Vim؟
️ تحذير : لا يزال VimGPT تجريبيًا وغير جاهز للإنتاج بعد.
gpt-4
هو الوحيد القادر على استخدام هذا بشكل صحيح - سيتم إجراء المزيد من الأبحاث لاحقًا. ستحتاج إلى تثبيت neovim، إذا كنت تستخدم نظام MacOS، فيمكنك ببساطة brew install neovim
. ثم قم بالتثبيت من PyPI:
pip install vimgpt # or poetry add vimgpt
استخدام واجهة سطر الأوامر (المقصود هو العرض التوضيحي/الاختبار):
$ 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
)_
أو |
ولكن هذا لم ينجح حقا.