مشكلة: يقضي محفوظون المصدر المفتوح الكثير من الوقت في إدارة المشكلات المكررة/ذات الصلة (Doppelgänger) وطلبات السحب
حل: يقارن Doppelgänger المشكلات المقدمة حديثًا/PRS ضد القضايا الحالية لإعلام تلقائيًا مكررة/ذات صلة (Doppelgänger)/PRS
الموضوعات: ناقل DB ، Github ، مفتوح المصدر ، البحث التضمين ، خرقة ، درجات التشابه
هذا التطبيق عبارة عن تطبيق GitHub يقارن تلقائيًا المشكلات التي تم افتتاحها حديثًا مع القضايا الحالية ، والإغلاق والتعليق على المشكلات المتشابهة للغاية لتقليل الازدواجية. بالإضافة إلى ذلك ، يعلق على ملاحظات على PRS بناءً على العنوان والوصف للنقاط التي يجب مراعاتها.
وثائق Doppelganger
يتم تحويل كل issue['title'] والمسألة issue['body'] إلى تمثيل متجه باستخدام Minilm-L6-V2 .
يتم استمرار كل ناقل في chromadb ويقوم بالبحث عن التشابه باستخدام بحث تشابه جيب التمام المدمج في chromadb. جنبا إلى جنب مع كل متجه هي issue_id و issue['title'] المخزنة باستخدام حجة metadata Chromadb.
SIMILARITY_THRESHOLD d
ستقوم Doppelganger بإغلاق أي مشكلة عندما تكون مسافة جيب التمام d بين القضية المقدمة حديثًا والمسألة الأكثر تشابهًا من هذه العتبة. خلاف ذلك ، إذا كانت المشكلة المقدمة حديثًا أكبر من (Similarty_threshold*0.5) ، فستترك تعليقًا مفيدًا يشير إلى القضية الأكثر تشابهًا/ذات الصلة.
[1] مسافة جيب التمام
يتم تخزين المشكلات وطلبات السحب في مجموعات chromadb لكل مستودع.
استنساخ هذا المستودع:
git clone https://github.com/dannyl1u/doppelganger.git
cd doppelganger
تثبيت التبعيات:
pip install -r requirements.txt
لإنشاء ملف .env جديد ، قم بتشغيل الأمر التالي في المحطة الخاصة بك:
cp .env.example .env افتح ملف .env الذي تم إنشاؤه حديثًا وقم بتحديث المتغيرات التالية بقيمك الخاصة:
* APP_ID : استبدل your_app_id_here بمعرف التطبيق الفعلي.
* WEBHOOK_SECRET : استبدل your_webhook_secret_here بسر webhook الفعلي.
* OLLAMA_MODEL : استبدل your_chosen_llm_model_here باستخدام نموذج LLM المختار (على سبيل المثال "llama3.2"). ملاحظة: يجب أن يكون نموذجًا مدعومًا لـ Ollama (انظر: https://ollama.com/library للنماذج المدعومة)
* NGROK_DOMAIN : استبدل your_ngrok_domain_here بمجال ngrok الخاص بك إذا كان لديك واحد 4. ضع المفتاح الخاص الذي تم تنزيله في جذر المشروع وتسميته rsa.pem .
ابدأ تطبيق Flask:
python3 app.pyسيبدأ التطبيق تشغيل على http: // localhost: 4000
سوف نستخدم ngrok لبساطتها
الخيار 1: عنوان URL العام الذي تم إنشاؤه في نافذة طرفية جديدة ، ابدأ NGROK لإنشاء نفق آمن لخادمك المحلي:
ngrok http 4000سيقوم Ngrok بإنشاء عنوان URL العام (على سبيل المثال ، https://abc123.ngrok.io)
إلحاق /webhook إلى عنوان URL ، على سبيل المثال https://abc123.ngrok.io -> https://abc123.ngrok.io/webhook
في نافذة طرفية أخرى ، ابدأ Ollama
ollama run < an OLLAMA model here >الخيار 2: استخدام البرنامج النصي Shell مع مجال NGROK الخاص بك
تأكد من تعيين متغيرات البيئة.
./run-dev.shبمجرد التثبيت ، سيقوم التطبيق تلقائيًا:
يمكنك ضبط عتبة التشابه عن طريق تعديل متغير SIMILARITY_THRESHOLD في البرنامج النصي. يتم تعيين الافتراضي على 0.5.
rsa.pem موجود وتنسيقه بشكل صحيح. المساهمات مرحب بها! لا تتردد في تقديم طلب سحب.
هذا المشروع مرخص بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.