Une API de chatbot développée avec FastAPI, conçue pour être déployée sur AWS Lambda via Mangum. Ce projet est disponible sur GitHub.
- API REST avec FastAPI
- Configuration via variables d'environnement
- Compatibilité AWS Lambda avec Mangum
- Logging configurable
- Conteneurisation avec Docker
- Intégration CI/CD avec Jenkins
- Gestion d'infrastructure via AWS CloudFormation
- Déploiement automatisé à l’aide d’AWS SAM (Serverless Application Model)
- Python 3.12
- FastAPI
- Pydantic Settings
- AWS SDK (boto3)
- Mangum - Adaptateur AWS Lambda pour les applications ASGI
- Docker
- Jenkins
- Python 3.12+
- Docker (optionnel)
- AWS CLI (optionnel)
-
Cloner le dépôt
git clone https://github.com/bradlab/chatbot.git cd chatbot -
Créer et activer un environnement virtuel
Option 1 : Utiliser Make
make venv # Sur Windows .venv\Scripts\activate # Sur Unix source .venv/bin/activate
Option 2 : Utiliser Python directement
# Sur Windows python -m venv .venv .venv/Scripts/activate # Sur Unix python3 -m venv .venv source .venv/bin/activate
-
Installer les dépendances
# avec make make install # avec pip pip install -r requirements.txt
-
Créer un fichier
.envà la racine du projet avec les variables suivantes :ENV_NAME=local AWS_REGION_NAME=eu-west-3 DYNAMO_TABLE=votre-table-dynamo AWS_PROFILE=votre-profil-aws MISTRAL_API_KEY=votre-clé-mistral
uvicorn src.main:app --reload-
Construire l'image
docker build -t chatbot-api . -
Exécuter le conteneur
docker run -p 8000:80 chatbot-api
Une fois l'API lancée, la documentation interactive est disponible aux URLs suivantes :
- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
Le projet est configuré pour être déployé sur AWS Lambda grâce à Mangum :
make infra # Déploie l'infrastructure CloudFormationLe projet intègre un pipeline Jenkins pour l'intégration et le déploiement continus :
- Installation et tests
- Tests unitaires
- (Autres étapes définies dans le Jenkinsfile)
pytest├── Dockerfile # Configuration Docker
├── Jenkinsfile # Pipeline CI/CD Jenkins
├── LICENSE # Fichier de licence MIT
├── Makefile # Commandes Make
├── README.md # Ce fichier
├── requirements.txt # Dépendances Python
├── version # Version du projet
└── src/ # Code source
├── __init__.py
├── config.py # Configuration et variables d'environnement
├── main.py # Point d'entrée de l'application FastAPI
└── utils.py # Utilitaires (logging, etc.)
- Forker le projet
- Créer une branche de fonctionnalité (
git checkout -b feature/nouvelle-fonctionnalite) - Commit des changements (
git commit -am 'Ajouter une nouvelle fonctionnalité') - Push vers la branche (
git push origin feature/nouvelle-fonctionnalite) - Créer une Pull Request
Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.