Skip to content

bradlab/chatbot

Repository files navigation

Chatbot API FastAPI

GitHub

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.

🌟 Fonctionnalités

  • 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)

🛠️ Technologies utilisées

🚀 Installation

Prérequis

  • Python 3.12+
  • Docker (optionnel)
  • AWS CLI (optionnel)

Installation locale

  1. Cloner le dépôt

    git clone https://github.com/bradlab/chatbot.git
    cd chatbot
  2. 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
  3. Installer les dépendances

    # avec make
    make install
    # avec pip
    pip install -r requirements.txt
  4. 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
    

▶️ Exécution

Localement

uvicorn src.main:app --reload

Avec Docker

  1. Construire l'image

    docker build -t chatbot-api .
  2. Exécuter le conteneur

    docker run -p 8000:80 chatbot-api

📚 Documentation API

Une fois l'API lancée, la documentation interactive est disponible aux URLs suivantes :

⚙️ Déploiement

Sur AWS Lambda

Le projet est configuré pour être déployé sur AWS Lambda grâce à Mangum :

make infra  # Déploie l'infrastructure CloudFormation

Via CI/CD

Le projet intègre un pipeline Jenkins pour l'intégration et le déploiement continus :

  1. Installation et tests
  2. Tests unitaires
  3. (Autres étapes définies dans le Jenkinsfile)

🧪 Tests

pytest

📂 Structure du projet

├── 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.)

🤝 Contribution

  1. Forker le projet
  2. Créer une branche de fonctionnalité (git checkout -b feature/nouvelle-fonctionnalite)
  3. Commit des changements (git commit -am 'Ajouter une nouvelle fonctionnalité')
  4. Push vers la branche (git push origin feature/nouvelle-fonctionnalite)
  5. Créer une Pull Request

📝 Licence

Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.

About

A chatbot API developed with FastAPI, designed to be deployed on AWS Lambda via Mangum

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors