Un chatbot intelligent propulsé par Google Gemini AI avec une API REST construite avec FastAPI et une interface web moderne.
Ce projet est un chatbot conversationnel intelligent qui utilise l'API Google Gemini pour générer des réponses contextuelles. Il comprend :
- Backend API : FastAPI avec gestion de l'historique des conversations
- Frontend : Interface web moderne et responsive avec Bootstrap 5
- IA : Google Gemini 2.5 Flash pour des réponses rapides et intelligentes
- 💬 Conversations contextuelles : Le bot se souvient de l'historique des messages
- 🚀 API REST : Endpoints FastAPI documentés automatiquement
- 🎨 Interface moderne : UI responsive avec Bootstrap 5 et animations
- 🔄 CORS configuré : Compatible avec les applications frontend
- ⚡ Performances : Réponses rapides grâce à Gemini 2.5 Flash
- 📝 Documentation automatique : Swagger UI intégré
- 🛡️ Gestion d'erreurs : Validation des entrées et messages d'erreur clairs
┌─────────────┐ HTTP ┌──────────────┐
│ Frontend │ ───────────────>│ FastAPI │
│ (HTML/JS) │ │ Backend │
└─────────────┘ └──────────────┘
│
│ API Call
▼
┌──────────────┐
│ Google Gemini│
│ AI │
└──────────────┘
- Python 3.9 ou supérieur
- Une clé API Google Gemini (obtenir ici)
- pip (gestionnaire de paquets Python)
git clone https://github.com/Fried-06/Projet_chatbot.git
cd Projet_chatbot# Linux/Mac
python3 -m venv .venv
source .venv/bin/activate
# Windows
python -m venv .venv
.venv\Scripts\activatepip install -r requirements.txtCréez un fichier .env à la racine du projet :
cp .env.example .envÉditez .env et ajoutez votre clé API :
GEMINI_API_KEY=votre_clé_api_ici
GEMINI_MODEL=gemini-2.5-flash| Variable | Description | Valeur par défaut |
|---|---|---|
GEMINI_API_KEY |
Clé API Google Gemini | Obligatoire |
GEMINI_MODEL |
Modèle Gemini à utiliser | gemini-2.5-flash |
gemini-2.5-flash: Rapide et économique (recommandé)gemini-2.5-pro: Plus puissant mais plus lentgemini-flash-latest: Dernière version stable
uvicorn app.main:app --reloadLe serveur démarre sur http://localhost:8000
- Interface web : Ouvrez
frontend.htmldans votre navigateur - API Docs : http://localhost:8000/docs
- ReDoc : http://localhost:8000/redoc
curl -X POST "http://localhost:8000/api/chat" \
-H "Content-Type: application/json" \
-d '{"message": "Bonjour, comment ça va ?"}'Envoie un message au chatbot et reçoit une réponse.
Request Body :
{
"message": "Votre message ici"
}Response :
{
"response": "Réponse du chatbot"
}Exemple avec Python :
import requests
response = requests.post(
"http://localhost:8000/api/chat",
json={"message": "Bonjour !"}
)
print(response.json()["response"])Exemple avec JavaScript :
fetch("http://localhost:8000/api/chat", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
message: "Bonjour !",
}),
})
.then((response) => response.json())
.then((data) => console.log(data.response));Page d'accueil de l'API.
Response :
{
"message": "Chatbot API is running"
}chatbot-gemini-fastapi/
│
├── app/
│ ├── __init__.py
│ ├── main.py # Point d'entrée FastAPI
│ ├── api/
│ │ ├── __init__.py
│ │ └── chat.py # Routes de l'API
│ ├── core/
│ │ ├── __init__.py
│ │ └── config.py # Configuration et settings
│ ├── memory/
│ │ ├── __init__.py
│ │ └── conversation.py # Gestion de l'historique
│ ├── models/
│ │ ├── __init__.py
│ │ └── schema.py # Modèles Pydantic
│ └── services/
│ ├── __init__.py
│ └── llm_services.py # Logique Gemini AI
│
├── frontend.html # Interface utilisateur
├── .env # Variables d'environnement (à créer)
├── .env.example # Template pour .env
├── .gitignore # Fichiers à ignorer par Git
├── requirements.txt # Dépendances Python
└── README.md # Ce fichier
- FastAPI - Framework web moderne et rapide
- Uvicorn - Serveur ASGI haute performance
- Pydantic - Validation des données
- Google Generative AI - API Gemini
- Bootstrap 5 - Framework CSS
- Bootstrap Icons - Icônes
- Vanilla JavaScript - Pas de framework JS
- Python-dotenv - Gestion des variables d'environnement
pip install -r requirements-dev.txtpytestblack app/
isort app/flake8 app/
pylint app/- Vérifiez que votre clé API est correcte dans le fichier
.env - Assurez-vous que la clé n'a pas été révoquée sur Google AI Studio
- Vérifiez que le nom du modèle dans
.envest correct - Utilisez
gemini-2.5-flashau lieu degemini-1.5-flash
- Assurez-vous que le serveur backend est démarré
- Vérifiez que CORS est bien configuré dans
app/main.py
- L'historique est stocké en mémoire et sera perdu au redémarrage
- Pour une persistance, voir la section Améliorations futures
# Créer un Procfile
echo "web: uvicorn app.main:app --host=0.0.0.0 --port=${PORT:-8000}" > Procfile
# Déployer
heroku create votre-app-name
git push heroku main
heroku config:set GEMINI_API_KEY=votre_clé# Dockerfile
FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]# Build et run
docker build -t chatbot-gemini .
docker run -p 8000:8000 --env-file .env chatbot-geminiDans .env :
GEMINI_MODEL=gemini-2.5-pro # Modèle plus puissantDans app/services/llm_services.py :
generation_config=genai.types.GenerationConfig(
max_output_tokens=2000, # Longueur max de la réponse
temperature=0.9, # Créativité (0-2)
top_p=0.95, # Diversité
)Modifiez frontend.html :
- Couleurs : Changez le gradient dans le CSS
- Texte : Modifiez le titre et le message de bienvenue
- Icônes : Utilisez d'autres icônes de Bootstrap Icons
- 💾 Persistance avec base de données (SQLite/PostgreSQL)
- 👤 Système d'authentification utilisateur
- 📊 Dashboard d'analytics
- 🎤 Support de la reconnaissance vocale
- 🖼️ Support des images avec Gemini Vision
- 🌍 Internationalisation (i18n)
- 🔄 Streaming de réponses
- 📱 Application mobile React Native
- 🎨 Personnalités multiples du bot
- 📤 Export de conversations
Les contributions sont les bienvenues ! Pour contribuer :
- Fork le projet
- Créez une branche (
git checkout -b feature/AmazingFeature) - Committez vos changements (
git commit -m 'Add some AmazingFeature') - Push vers la branche (
git push origin feature/AmazingFeature) - Ouvrez une Pull Request
- Suivez le style de code existant (PEP 8)
- Ajoutez des tests pour les nouvelles fonctionnalités
- Mettez à jour la documentation si nécessaire
- Assurez-vous que tous les tests passent
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
David - @votre-username
- Google pour l'API Gemini
- FastAPI pour le framework
- Bootstrap pour l'interface
- La communauté open source
- GitHub : @votre-username
- Email : votre.email@example.com
- LinkedIn : Votre Profil
Si ce projet vous a aidé, n'hésitez pas à lui donner une étoile ⭐
Fait avec ❤️ et Python
