code2prompt
— это инструмент командной строки (CLI), который преобразует вашу кодовую базу в одно приглашение LLM с исходным деревом, шаблонами приглашений и подсчетом токенов.
Вы можете запустить этот инструмент для всего каталога, и он сгенерирует хорошо отформатированное приглашение Markdown с подробным описанием древовидной структуры исходного кода и всего кода. Затем вы можете загрузить этот документ в модели GPT или Claude с окнами с более высоким контекстом и попросить его:
.gitignore
.Вы можете настроить шаблон приглашения для достижения любого желаемого варианта использования. По сути, он просматривает базу кода и создает приглашение со всеми исходными файлами. Короче говоря, он автоматизирует копирование нескольких исходных файлов в ваше приглашение и их форматирование, а также сообщает вам, сколько токенов потребляет ваш код.
Загрузите последнюю версию двоичного файла для вашей ОС из Releases.
Требует:
git clone https://github.com/mufeedvh/code2prompt.git
cd code2prompt/
cargo build --release
устанавливается из реестра crates.io
.
cargo install code2prompt
Для неопубликованных сборок:
cargo install --git https://github.com/mufeedvh/code2prompt
code2prompt
доступен в AUR
. Установите его через любые помощники AUR.
paru/yay -S code2prompt
Если вы используете nix, вы можете использовать nix-env
или profile
для установки.
# without flakes:
nix-env -iA nixpkgs.code2prompt
# with flakes:
nix profile install nixpkgs#code2prompt
Создайте приглашение из каталога базы кода:
code2prompt path/to/codebase
Используйте собственный файл шаблона Handlebars:
code2prompt path/to/codebase -t path/to/template.hbs
Фильтруйте файлы, используя шаблоны glob:
code2prompt path/to/codebase --include= " *.rs,*.toml "
Исключить файлы, используя шаблоны glob:
code2prompt path/to/codebase --exclude= " *.txt,*.md "
Исключить файлы/папки из дерева исходного кода на основе шаблонов исключения:
code2prompt path/to/codebase --exclude= " *.npy,*.wav " --exclude-from-tree
Отобразите количество токенов сгенерированного приглашения:
code2prompt path/to/codebase --tokens
Укажите токенизатор для количества токенов:
code2prompt path/to/codebase --tokens --encoding=p50k
Поддерживаемые токенизаторы: cl100k
, p50k
, p50k_edit
, r50k_bas
.
Примечание
Дополнительные сведения см. в разделе Токенизаторы.
Сохраните сгенерированное приглашение в выходной файл:
code2prompt path/to/codebase --output=output.txt
Распечатать вывод в формате JSON:
code2prompt path/to/codebase --json
Вывод JSON будет иметь следующую структуру:
{
"prompt" : " <Generated Prompt> " ,
"directory_name" : " codebase " ,
"token_count" : 1234 ,
"model_info" : " ChatGPT models, text-embedding-ada-002 " ,
"files" : []
}
Создайте сообщение фиксации Git (для промежуточных файлов):
code2prompt path/to/codebase --diff -t templates/write-git-commit.hbs
Создайте запрос на включение со сравнением ветвей (для промежуточных файлов):
code2prompt path/to/codebase --git-diff-branch ' main, development ' --git-log-branch ' main, development ' -t templates/write-github-pull-request.hbs
Добавьте номера строк в блоки исходного кода:
code2prompt path/to/codebase --line-number
Отключите перенос кода внутри блоков кода уценки:
code2prompt path/to/codebase --no-codeblock
Первоначально я написал это для личного использования, чтобы использовать контекстное окно Claude 3.0 200K, и оно оказалось весьма полезным, поэтому я решил открыть его исходный код!
code2prompt
поставляется с набором встроенных шаблонов для распространенных случаев использования. Вы можете найти их в каталоге templates
.
document-the-code.hbs
Используйте этот шаблон для создания подсказок для документирования кода. Он добавит комментарии к документации ко всем общедоступным функциям, методам, классам и модулям в базе кода.
find-security-vulnerabilities.hbs
Используйте этот шаблон для создания подсказок для поиска потенциальных уязвимостей безопасности в базе кода. Он выявит распространенные проблемы безопасности и предоставит рекомендации по их устранению или смягчению последствий.
clean-up-code.hbs
Используйте этот шаблон для создания подсказок по очистке и улучшению качества кода. Он будет искать возможности улучшить читабельность, соблюдение лучших практик, эффективность, обработку ошибок и многое другое.
fix-bugs.hbs
Используйте этот шаблон для создания подсказок по исправлению ошибок в базе кода. Это поможет диагностировать проблемы, предлагать исправления и обновлять код с использованием предлагаемых исправлений.
write-github-pull-request.hbs
Используйте этот шаблон для создания описания запроса на извлечение GitHub в уценке путем сравнения git diff и журнала git двух ветвей.
write-github-readme.hbs
Используйте этот шаблон для создания высококачественного файла README для проекта, подходящего для размещения на GitHub. Он проанализирует базу кода, чтобы понять ее назначение и функциональность, и сгенерирует содержимое README в формате Markdown.
write-git-commit.hbs
Используйте этот шаблон для создания коммитов git из подготовленных файлов в вашем каталоге git. Он проанализирует базу кода, чтобы понять ее назначение и функциональность, и сгенерирует содержимое сообщения фиксации git в формате Markdown.
improve-performance.hbs
Используйте этот шаблон для создания подсказок по повышению производительности базы кода. Он будет искать возможности оптимизации, предоставлять конкретные предложения и обновлять код с учетом изменений.
Вы можете использовать эти шаблоны, передав флаг -t
и путь к файлу шаблона. Например:
code2prompt path/to/codebase -t templates/document-the-code.hbs
code2prompt
поддерживает использование пользовательских переменных в шаблонах Handlebars. Любые переменные в шаблоне, которые не являются частью контекста по умолчанию ( absolute_code_path
, source_tree
, files
), будут рассматриваться как определяемые пользователем переменные.
Во время генерации приглашения code2prompt
предложит пользователю ввести значения для этих определяемых пользователем переменных. Это позволяет дополнительно настраивать генерируемые подсказки на основе пользовательского ввода.
Например, если ваш шаблон включает {{challenge_name}}
и {{challenge_description}}
, вам будет предложено ввести значения этих переменных при запуске code2prompt
.
Эта функция позволяет создавать многократно используемые шаблоны, которые можно адаптировать к различным сценариям на основе предоставленной пользователем информации.
Токенизация реализована с помощью tiktoken-rs
. tiktoken
поддерживает следующие кодировки, используемые моделями OpenAI:
Название кодировки | Модели OpenAI |
---|---|
cl100k_base | Модели ChatGPT, text-embedding-ada-002 |
p50k_base | Модели кода, text-davinci-002 , text-davinci-003 |
p50k_edit | Используйте для редактирования моделей, таких как text-davinci-edit-001 , code-davinci-edit-001 |
r50k_base (или gpt2 ) | Модели GPT-3, такие как davinci |
Дополнительную информацию о различных токенизаторах см. в кулинарной книге OpenAI.
code2prompt
позволяет легко генерировать запросы для LLM из вашей кодовой базы. Он просматривает каталог, строит древовидную структуру и собирает информацию о каждом файле. Вы можете настроить генерацию подсказок с помощью шаблонов Handlebars. Сгенерированное приглашение автоматически копируется в буфер обмена, а также может быть сохранено в выходной файл. code2prompt
помогает упростить процесс создания подсказок LLM для анализа, генерации и других задач кода.
Способы внести свой вклад:
Лицензия MIT License. Дополнительную информацию см. в разделе ЛИЦЕНЗИЯ.
Если проект вам понравился и оказался полезным, пожалуйста, поставьте ему лайк и поддержите авторов!