📌 Un projet FastAPI permettant d’analyser un repository GitHub, d’indexer son contenu et de faire des recherches sémantiques dans le code source.
💻 Technologies utilisées :
- FastAPI - API REST
- pygit2 - Clonage et gestion de repositories Git
- LlamaIndex - Indexation de fichiers
- Milvus - Base de données vectorielle
- Docker - Déploiement simplifié
Exécute cette commande pour cloner le dépôt sur ta machine :
git clone https://github.com/AidoTokihisaaa/git-analyzer.git
cd git-analyzer
💡 Créer et activer un environnement virtuel Python
python3 -m venv venv
source venv/bin/activate # Sous Windows : venv\Scripts\activate
Une fois l’environnement activé, installe toutes les bibliothèques requises :
pip install -r requirements.txt
1️⃣ Créer un fichier .env
dans le projet
touch .env
2️⃣ Ajouter les variables nécessaires :
MILVUS_HOST=localhost
MILVUS_PORT=19530
REPO_BASE_PATH=src/repos
🚀 Milvus est utilisé pour stocker les embeddings vectoriels.
Exécute cette commande pour le lancer dans Docker :
docker run -d --name milvus -p 19530:19530 milvusdb/milvus:v2.1.4
💡 Vérifier que Milvus tourne bien :
docker ps
Si tu ne vois pas milvus
, démarre-le :
docker start milvus
Démarre FastAPI avec la commande :
uvicorn src.main:app --reload
Si tu as une erreur ModuleNotFoundError
, lance plutôt :
PYTHONPATH=src uvicorn src.main:app --reload
Ou sous Windows PowerShell :
$env:PYTHONPATH="src"; uvicorn src.main:app --reload
L’API tournera sur http://127.0.0.1:8000
.
💡 Utilise curl
pour interagir avec l’API
curl -X 'POST' 'http://127.0.0.1:8000/index/the/repo/url/' \
-H 'Content-Type: application/json' \
-d '{"repo_url": "https://github.com/tiangolo/fastapi", "branch": "main"}'
curl -X 'GET' 'http://127.0.0.1:8000/index/the/repo/url/?repo_url=https://github.com/tiangolo/fastapi'
curl -X 'GET' 'http://127.0.0.1:8000/search/the/repo/url/?query=requests'
Tu peux aussi exécuter le projet directement avec Docker.
docker build -t git-analyzer .
docker run -p 8000:8000 git-analyzer
L’API sera disponible sur http://127.0.0.1:8000
.
🚨 Problème | ✅ Solution |
---|---|
Permission denied (publickey) lors de git push |
Ajoute ta clé SSH à GitHub ou utilise HTTPS |
ModuleNotFoundError: No module named 'config' |
Ajoute src/ au PYTHONPATH (export PYTHONPATH=src ) |
OSError: Address already in use lors de uvicorn |
Trouve et tue le processus : kill -9 $(lsof -t -i:8000) |
Connection refused sur Milvus |
Assure-toi que Milvus tourne (docker ps ) et redémarre-le (docker start milvus ) |
Les contributions sont les bienvenues !
- Fork le repo
- Crée une branche (
git checkout -b feature-xxx
) - Fais tes modifications
- Commit (
git commit -m "Ajout de xxx"
) - Push (
git push origin feature-xxx
) - Ouvre une pull request sur GitHub
👤 AidoTokihisaaa
📌 GitHub : AidoTokihisaaa