Masalah: Pemelihara open-source menghabiskan banyak waktu mengelola masalah duplikat/terkait (doppelgänger) & permintaan tarik
Larutan: Doppelgänger membandingkan masalah/PR yang baru diajukan dengan masalah yang sudah ada untuk secara otomatis menandai duplikat/terkait (doppelgänger) masalah/PRS
Topik: Vektor DB, GitHub, Sumber Terbuka, Pencarian Menanamkan, Rag, Skor Kesamaan
Aplikasi ini adalah aplikasi GitHub yang secara otomatis membandingkan masalah yang baru dibuka dengan yang sudah ada, menutup dan mengomentari masalah yang sangat mirip untuk mengurangi duplikasi. Selain itu, ia mengomentari umpan balik tentang PRS berdasarkan judul dan deskripsi untuk dipertimbangkan poin.
Dokumentasi doppelganger
Setiap issue['title'] dan issue['body'] dikonversi menjadi representasi vektor menggunakan minilm-l6-v2 .
Setiap vektor bertahan dalam chromadb dan melakukan pencarian kesamaan menggunakan pencarian kesamaan cosinus chromadb. Bersama dengan masing -masing vektor adalah issue_id dan issue['title'] disimpan menggunakan argumen metadata Chromadb.
SIMILARITY_THRESHOLD (yaitu jarak d di mana kami menganggap "serupa") dapat dikonfigurasi, dan dapat diatur ke desimal antara 0 dan 1 [1].
Doppelganger akan menutup masalah apa pun ketika jarak cosinus d antara masalah yang baru diajukan dan masalah yang paling mirip lebih besar dari ambang batas ini. Jika tidak, jika masalah yang baru dikirim lebih besar dari (similarty_threshold*0,5), itu akan meninggalkan komentar yang bermanfaat yang menunjukkan masalah yang paling mirip/terkait.
[1] Jarak kosinus
Masalah dan permintaan tarik disimpan dalam koleksi Chromadb per repositori.
Klon Repositori ini:
git clone https://github.com/dannyl1u/doppelganger.git
cd doppelganger
Instal dependensi:
pip install -r requirements.txt
Untuk membuat file .env baru, jalankan perintah berikut di terminal Anda:
cp .env.example .env Buka file .env yang baru dibuat dan perbarui variabel berikut dengan nilai Anda sendiri:
* APP_ID : Ganti your_app_id_here dengan ID aplikasi Anda yang sebenarnya.
* WEBHOOK_SECRET : Ganti your_webhook_secret_here dengan rahasia webhook Anda yang sebenarnya.
* OLLAMA_MODEL : ganti your_chosen_llm_model_here dengan model LLM pilihan Anda (misalnya "llama3.2"). Catatan: Ini harus menjadi model yang didukung Ollama (lihat: https://ollama.com/library untuk model yang didukung)
* NGROK_DOMAIN : ganti your_ngrok_domain_here dengan domain ngrok Anda jika Anda memiliki satu 4. Tempatkan kunci pribadi yang diunduh di root proyek dan beri nama rsa.pem .
Mulai aplikasi Flask:
python3 app.pyAplikasi akan mulai berjalan di http: // localhost: 4000
Kami akan menggunakan Ngrok untuk kesederhanaannya
Opsi 1: URL publik yang dihasilkan di jendela terminal baru, mulailah NGROK untuk membuat terowongan yang aman ke server lokal Anda:
ngrok http 4000Ngrok akan menghasilkan URL publik (misalnya, https://abc123.ngrok.io)
Tambahkan /webhook ke URL, misalnya https://abc123.ngrok.io -> https://abc123.ngrok.io/webhook
Di jendela terminal lain, mulailah ollama
ollama run < an OLLAMA model here >Opsi 2: Menggunakan skrip shell dengan domain Ngrok Anda sendiri
Pastikan variabel lingkungan sudah siap.
./run-dev.shSetelah diinstal, aplikasi akan secara otomatis:
Anda dapat menyesuaikan ambang batas kesamaan dengan memodifikasi variabel SIMILARITY_THRESHOLD dalam skrip. Standarnya diatur ke 0,5.
rsa.pem hadir dan diformat dengan benar. Kontribusi dipersilakan! Silakan mengirimkan permintaan tarik.
Proyek ini dilisensikan di bawah lisensi MIT.