Проблема: Совместители с открытым исходным кодом тратят много времени на управление повторяющимися/связанными (Doppelgänger) и запросами на получение запросов
Решение: Doppelgänger сравнивает вновь представленные проблемы/PRS с существующими, чтобы автоматически помечать дубликат/связанные (Doppelgänger) проблемы/PRS
Темы: Vector DB, GitHub, с открытым исходным кодом, поиск по внедрению, тряпка, оценки сходства
Это приложение представляет собой приложение GitHub, которое автоматически сравнивает вновь открытые проблемы с существующими, закрывая и комментируя очень похожие проблемы, чтобы уменьшить дублирование. Кроме того, он комментирует отзывы о PRS на основе заголовка и описания для рассмотрения очков.
Документация Doppelganger
Каждая issue['title'] и issue['body'] преобразуется в векторное представление с использованием Minilm-L6-V2 .
Каждый вектор сохраняется в ChromADB и выполняет поиск сходства, используя встроенный поиск сходства Cosine ChromADB. Наряду с каждым вектором issue_id и issue['title'] хранятся с использованием аргумента metadata Chromadb.
SIMILARITY_THRESHOLD (то есть расстояние d , в котором мы считаем «аналогичным») настраивается и может быть установлен на любой десятичный десятичный цвет между 0 и 1 [1].
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 4000Ngrok будет генерировать публичный URL (например, https://abc123.ngrok.io)
Приложение /webhook к URL, например, https://abc123.ngrok.io -> https://abc123.ngrok.io/webhook
В другом окне терминала запустите Ollama
ollama run < an OLLAMA model here >Вариант 2: Использование сценария оболочки с собственным доменом NGROK
Убедитесь, что переменные среды установлены.
./run-dev.shПосле установки приложение будет автоматически:
Вы можете настроить порог сходства, изменяя переменную SIMILARITY_THRESHOLD в скрипте. По умолчанию установлено 0,5.
rsa.pem присутствует и правильно отформатирован. Взносы приветствуются! Пожалуйста, не стесняйтесь отправить запрос на привлечение.
Этот проект лицензирован по лицензии MIT.