هذا هو تنفيذ Lafflebert: ارتكاب توليد الرسائل باستخدام نموذج لغة البرمجة قبل التدريب. تم قبول Laffebert في ورشة 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 .
يمكننا استخدام Coderbert لإنشاء نموذج ينشئ رسالة ملزمة عند إضافة الكود. ومع ذلك ، لا يتم إجراء معظم تغييرات التعليمات البرمجية فقط عن طريق إضافة الرمز ، ويتم حذف بعض أجزاء الكود.
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 فقط) | الأوزان |
|---|---|---|---|---|
| بيثون | ✅ | ✅ | 423 كيلو | وصلة |
| جافا سكريبت | ✅ | ✅ | 514K | وصلة |
| يذهب | ⬜ | ⬜ | ⬜ | ⬜ |
| جافا | ⬜ | ⬜ | ⬜ | ⬜ |
| روبي | ⬜ | ⬜ | ⬜ | ⬜ |
| PHP | ⬜ | ⬜ | ⬜ | ⬜ |
نحن نخطط لقهر اللغات ببطء غير مدعوم حاليًا. ومع ذلك ، أحتاج أيضًا إلى استخدام مثيلات GPU باهظة الثمن من AWS أو GCP للتدريب حول اللغات المذكورة أعلاه. يرجى القيام برعاية بسيطة لهذا! إضافة البيانات هي مجموعة بيانات codesearchnet.
لتشغيل هذا المشروع ، تحتاج إلى خادم استدلال قائم على القارورة (GPU) وعميل (وحدة ملزمة). إذا لم يكن لديك وحدة معالجة الرسومات ، فلا تقلق ، يمكنك استخدامه من خلال Google Colab.
قم بإعداد Docker و Nvidia-Docker قبل تشغيل الخادم.
خدمة خادم Flask مع Nvidia Docker. تحقق من علامة Docker للبرمجة هنا.
| لغة | علامة |
|---|---|
| بيثون | PY |
| جافا سكريبت | JS |
| يذهب | يذهب |
| جافا | جافا |
| روبي | روبي |
| PHP | PHP |
$ docker run -it -d --gpus 0 -p 5000:5000 graykode/commit-autosuggestions:{language}حتى إذا لم يكن لديك وحدة معالجة الرسومات ، فلا يزال بإمكانك خدمة خادم Flask باستخدام إعداد NGROK في commun_autosuggestions.ipynb.
commit .أولاً ، قم بتثبيت الحزمة من خلال PIP.
$ pip install commit قم بتعيين نقطة النهاية لخادم Flask الذي تم تكوينه في الخطوة 1 من خلال الأمر Commice 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راجع كيفية التدريب على نمط الوبر الخاص بك. يتيح لك ذلك إعادة ضبط ضبط أسلوب الوبر في مستودعك.
يمكنك المساهمة بأي شيء ، حتى خطأ مطبعي أو رمز في المقالة. لا تتردد !!. تتم إدارة الإصدارات فقط داخل الفرع باسم كل إصدار. بعد إصداره على PYPI ، يتم دمجه في فرع Master وتجاوز العائدات الجديدة في فرع الإصدار الذي تمت ترقيته.
تاي هوان يونغ (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}
}