Problema: Los mantenedores de código abierto pasan mucho tiempo administrando solicitudes duplicadas/relacionadas (doppelgänger).
Solución: Doppelgänger compara temas/PR recién enviados con los existentes para marcar automáticamente los problemas duplicados/relacionados (doppelgänger)/PRS
Temas: Vector DB, GitHub, Frase Abierta, Búsqueda de incrustación, RAG, puntajes de similitud
Esta aplicación es una aplicación GitHub que compara automáticamente los problemas recién abierto con los existentes, cerrando y comentando sobre problemas muy similares para reducir la duplicación. Además, comenta comentarios sobre PRS basados en el título y la descripción de los puntos a considerar.
Documentación de doppelganger
Cada issue['title'] y issue['body'] se convierte en representación vectorial utilizando minilm-l6-v2 .
Cada vector persiste en ChromAdB y realiza una búsqueda de similitud utilizando la búsqueda de similitud de coseno incorporada de ChromAdB. Junto con cada vector se encuentran issue_id y issue['title'] almacenados utilizando el argumento metadata de ChromAdB.
SIMILARITY_THRESHOLD (es decir, la distancia d en la que consideramos "similar") es configurable y puede establecerse en cualquier decimal entre 0 y 1 [1].
Doppelganger cerrará cualquier problema cuando la distancia del coseno d entre el problema recién enviado y el problema más similar es mayor que este umbral. De lo contrario, si el problema recién enviado es mayor que (similarty_threshold*0.5), dejará un comentario útil que indique el problema más similar/relacionado.
[1] Distancia de coseno
Los problemas y las solicitudes de extracción se almacenan en colecciones de ChromAdB por repositorio.
Clon este repositorio:
git clone https://github.com/dannyl1u/doppelganger.git
cd doppelganger
Instalar dependencias:
pip install -r requirements.txt
Para crear un nuevo archivo .env , ejecute el siguiente comando en su terminal:
cp .env.example .env Abra el archivo .env recién creado y actualice las siguientes variables con sus propios valores:
* APP_ID : reemplace your_app_id_here con su ID de aplicación real.
* WEBHOOK_SECRET : reemplace your_webhook_secret_here con su secreto real de webhook.
* OLLAMA_MODEL : reemplace your_chosen_llm_model_here con su modelo LLM elegido (por ejemplo, "llama3.2"). Nota: Debe ser un modelo compatible con Ollama (ver: https://ollama.com/library para modelos compatibles)
* NGROK_DOMAIN : reemplace your_ngrok_domain_here con su dominio NGROK si tiene uno 4. Coloque la clave privada descargada en la raíz del proyecto y asígnele el nombre rsa.pem .
Inicie la aplicación Flask:
python3 app.pyLa aplicación comenzará a ejecutarse en http: // localhost: 4000
Usaremos ngrok por su simplicidad
Opción 1: URL pública generada en una nueva ventana de terminal, inicie NGROK para crear un túnel seguro para su servidor local:
ngrok http 4000Ngrok generará una URL pública (por ejemplo, https://abc123.ngrok.io)
Append /webhook a la URL, por ejemplo, https://abc123.ngrok.io -> https://abc123.ngrok.io/webhook
En otra ventana terminal, inicia ollama
ollama run < an OLLAMA model here >Opción 2: Uso de script shell con su propio dominio ngrok
Asegúrese de que todas las variables de entorno estén establecidas.
./run-dev.shUna vez instalada, la aplicación automáticamente:
Puede ajustar el umbral de similitud modificando la variable SIMILARITY_THRESHOLD en el script. El valor predeterminado se establece en 0.5.
rsa.pem esté presente y formateado correctamente. ¡Las contribuciones son bienvenidas! No dude en enviar una solicitud de extracción.
Este proyecto tiene licencia bajo la licencia MIT.