問題:オープンソースメンテナーは、重複/関連(doppelgänger)の問題とリクエストの管理に多くの時間を費やします
解決: doppelgängerは、新しく提出された問題/PRを既存の問題と比較して、重複/関連(doppelgänger)の問題/PRSに自動的にフラグを立てます
トピック:ベクターDB、GitHub、オープンソース、埋め込み検索、ぼろきれ、類似性スコア
このアプリケーションは、新たに開かれた問題と既存の問題を自動的に比較し、重複を減らすために非常に類似した問題について閉鎖し、コメントするGitHubアプリです。さらに、検討すべきポイントのタイトルと説明に基づいてPRSに関するフィードバックをコメントします。
Doppelgangerドキュメント
各issue['title']およびissue['body'] minilm-L6-V2を使用してベクター表現に変換されます。
各ベクトルはChromADBで持続し、ChromADBの組み込みCOSINE類似性検索を使用して類似性検索を実行します。各ベクトルとともに、ChromaDBのmetadata引数を使用して保存されているissue['title'] issue_id 。
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実際のアプリIDに置き換えます。
* WEBHOOK_SECRET : your_webhook_secret_here実際のwebhookの秘密に置き換えます。
* OLLAMA_MODEL : your_chosen_llm_model_hereを選択したLLMモデル( "llama3.2")に置き換えます。注:オラマサポートモデルでなければなりません(サポートされているモデルについてはhttps://ollama.com/libraryを参照)
* NGROK_DOMAIN : your_ngrok_domain_hereをngrokドメインrsa.pem置き換えます。
Flaskアプリケーションを開始します:
python3 app.pyアプリケーションはhttp:// localhost:4000で実行を開始します
Ngrokを単純に使用します
オプション1:新しい端末ウィンドウで生成されたパブリックURLは、NGROKを開始して、ローカルサーバーに安全なトンネルを作成します。
ngrok http 4000ngrokはパブリックURLを生成します(例:https://abc123.ngrok.io)
URLに/webhookを追加します
別のターミナルウィンドウで、オラマを開始します
ollama run < an OLLAMA model here >オプション2:独自のngrokドメインでシェルスクリプトを使用する
環境変数がすべて設定されていることを確認してください。
./run-dev.shインストールすると、アプリは自動的に次のようになります。
スクリプトのSIMILARITY_THRESHOLD変数を変更することにより、類似性のしきい値を調整できます。デフォルトは0.5に設定されています。
rsa.pemファイルが存在し、正しくフォーマットされていることを確認します。 貢献は大歓迎です!プルリクエストをお気軽に送信してください。
このプロジェクトは、MITライセンスの下でライセンスされています。