Это реализация Compeybert: Compet Message General с использованием предварительно обученной модели языка программирования. Комплект принимается на семинаре ACL: NLP4Prog. Вы когда -нибудь колебались, чтобы написать сообщение о коммите? Теперь получите послание коммита от искусственного интеллекта!
Codebert: предварительно обученная модель для программирования и естественных языков представляет предварительно обученную модель в комбинации языка программы и естественного языка (PL-NL). Он также вводит проблему преобразования кода в естественный язык (генерация документации кода).
diff --git a/test.py b/test.py
new file mode 100644
index 0000000..d13f441
--- /dev/null
+++ b/test.py
@@ -0,0 +1,6 @@
+
+import torch
+import argparse
+
+def add(a, b):
+ return a + b
Recommended Commit Message : Add two arguments .
Мы можем использовать Codebert для создания модели, которая генерирует сообщение о коммите при добавлении кода. Тем не менее, большинство изменений кода не сделаны только путем добавления кода, и некоторые части кода удаляются.
diff --git a/test.py b/test.py
index d13f441..1b1b82a 100644
--- a/test.py
+++ b/test.py
@@ -1,6 +1,3 @@
-import torch
-import argparse
-
def add(a, b):
return a + b
Recommended Commit Message : Remove unused imports
Чтобы решить эту проблему, используйте новое внедрение, называемое patch_type_embeddings , которое может различать добавленную и удаленную, так же, как XLM (Lample et al, 2019) использовал встроенный язык. (1 для добавленного, 2 для удаленного.)
| Язык | Добавлен | Разница | Данные (только Diff) | Вес |
|---|---|---|---|---|
| Питон | ✅ | ✅ | 423K | Связь |
| JavaScript | ✅ | ✅ | 514K | Связь |
| Идти | ⬜ | ⬜ | ⬜ | ⬜ |
| Ява | ⬜ | ⬜ | ⬜ | ⬜ |
| Рубин | ⬜ | ⬜ | ⬜ | ⬜ |
| PHP | ⬜ | ⬜ | ⬜ | ⬜ |
Мы планируем медленно завоевать языки, которые в настоящее время не поддерживаются. Тем не менее, мне также необходимо использовать дорогие экземпляры GPU AWS или GCP для обучения вышеуказанным языкам. Пожалуйста, сделайте простой спонсор для этого! Добавить данные - это набор данных CodeSearchnet.
Чтобы запустить этот проект, вам нужен сервер вывода на основе колбы (GPU) и клиент (модуль Commit). Если у вас нет графического процессора, не волнуйтесь, вы можете использовать его через Google Colab.
Подготовьте Docker и Nvidia-Docker, прежде чем запустить сервер.
Подавайте Flask Server с Nvidia Docker. Проверьте тег Docker для языка программирования здесь.
| Язык | Ярлык |
|---|---|
| Питон | пирог |
| JavaScript | младший |
| Идти | идти |
| Ява | Ява |
| Рубин | рубин |
| PHP | PHP |
$ docker run -it -d --gpus 0 -p 5000:5000 graykode/commit-autosuggestions:{language}Даже если у вас нет графического процессора, вы все равно можете обслуживать сервер Flask, используя настройку ngrok в commit_autosuggestions.ipynb.
commit .Во -первых, установите пакет через PIP.
$ pip install commit Установите конечную точку для сервера Flask, настроенного на шаге 1 через команду Commit Configure. (Например, если конечная точка -http://127.0.0.1:5000, установите следующим образом: commit configure --endpoint http://127.0.0.1:5000 )
$ commit configure --help
Usage: commit configure [OPTIONS]
Options:
--profile TEXT unique name for managing each independent settings
--endpoint TEXT endpoint address accessible to the server (example :
http://127.0.0.1:5000/) [required]
--help Show this message and exit.Вся настройка сделана! Теперь вы можете получить сообщение о коммите от ИИ с командным коммитом.
$ commit --help
Usage: commit [OPTIONS] COMMAND [ARGS]...
Options:
--profile TEXT unique name for managing each independent settings
-f, --file FILENAME patch file containing git diff (e.g. file created by
` git add ` and ` git diff --cached > test.diff ` )
-v, --verbose print suggested commit message more detail.
-a, --autocommit automatically commit without asking if you want to
commit
--help Show this message and exit.
Commands:
configureОбратитесь к тому, как тренироваться для вашего стиля ворса. Это позволяет вам повторно настраивать настройку в стиль Commit Lint.
Вы можете внести что угодно, даже опечатка или код в статье. Не стесняйтесь !!. Версии управляются только в филиале с именем каждой версии. После выпуска на PYPI он объединен в главную филиал, а новая выручка развития в обновленном отделении версии.
Tae Hwan Jung (@graykode)
@article{jung2021commitbert,
title={CommitBERT: Commit Message Generation Using Pre-Trained Programming Language Model},
author={Jung, Tae-Hwan},
journal={arXiv preprint arXiv:2105.14242},
year={2021}
}