Assistant conversationnel orchestré par FastAPI et Angular, utilisant Google Gemini (Vertex AI) pour la génération, LangGraph pour la gestion des workflows, Milvus pour le RAG (Retrieval-Augmented Generation) sur vos documents, et Tavily pour la recherche web en temps réel.
- 💬 Chat Streaming : Réponses en streaming token par token.
- 📚 RAG (Document Q&A) :
- Importez vos documents (PDF, DOCX, TXT) directement dans le chat.
- Indexation automatique et recherche vectorielle via Milvus Lite.
- Le bot utilise le contenu de vos fichiers pour répondre précisément.
- 🌐 Recherche Web :
- Activez l'option pour permettre au bot de chercher des informations fraîches sur internet via Tavily.
- Sources citées automatiquement à la fin de la réponse.
- 🔄 Reformulation Contextuelle :
- L'IA réécrit automatiquement vos questions pour inclure le contexte précédent ("Quel est son prix ?" devient "Quel est le prix de l'iPhone 15 ?").
- Améliore la précision du RAG et de la recherche Web lors d'une conversation.
- ⚙️ Configuration Dynamique :
- Personnalisez le Prompt Système (personnalité de l'IA).
- Ajustez la Température (créativité), le nombre de Tokens Max, et le Top-K (nombre de documents contextuels).
- Sauvegarde locale de vos préférences.
- 🎨 UI Moderne : Interface Angular 16+ avec Angular Material, support du Markdown.
L'application est conteneurisée et orchestrée via Docker Compose.
- Frontend (Angular) :
- Interface utilisateur réactive.
- Gestion des Settings via localStorage.
- Communication WebSocket/HTTP Stream avec le backend.
- Backend (FastAPI) :
- API REST asynchrone.
- Gestion du flux (Stream) Gemini.
- LangGraph pour l'orchestration des agents et des workflows.
- Traitement des fichiers (PyPDF2, python-docx).
- Base de Données (MongoDB) :
- Stockage persistant des conversations et messages.
- Métadonnées des documents uploadés.
- Vector Store (Milvus Lite) :
- Base de données vectorielle embarquée (fichier local
milvus_demo.db). - Stocke les "chunks" de documents vectorisés (Embeddings) pour la recherche sémantique.
- Base de données vectorielle embarquée (fichier local
graph TD
User["Utilisateur"] -->|HTTP/Stream| Frontend
Frontend -->|API REST| Backend
Backend -->|LangChain / LangGraph| VertexAI["Google Vertex AI (Gemini)"]
Backend -->|CRUD| Mongo["MongoDB (Historique)"]
Backend -->|RAG Search| Milvus["Milvus Lite (Vecteurs)"]
Backend -->|Web Search| Tavily["Tavily API"]
| Fichier | Rôle & Responsabilité |
|---|---|
main.py |
Point d'entrée FastAPI. Gère les routes de l'API, le streaming et les cycles de vie des services. |
agent.py |
Cœur décisionnel (LangGraph). Orchestre l'utilisation des outils et maintient l'état de l'agent. |
services.py |
Logique métier : reformulation contextuelle des requêtes et génération de titres. |
document_service.py |
Pipeline RAG : gère le parsing des fichiers, le découpage en blocs (chunking) et la vectorisation. |
vector_store.py |
Interface avec Milvus Lite. Gère la persistance et la recherche sémantique des documents. |
repositories.py |
Couche d'accès aux données pour MongoDB (Persistance de l'historique et des métadonnées). |
models.py |
Modèles de données Pydantic utilisés pour les échanges API et la structure de la base de données. |
database.py |
Initialisation et gestion de la connexion asynchrone à MongoDB. |
tavily_service.py |
Intégration de l'API Tavily pour la recherche d'informations en temps réel sur le web. |
file_parsers.py |
Utilitaires d'extraction de texte brut pour les formats PDF, DOCX et TXT. |
utils/env.py |
Centralisation et validation des variables d'environnement. |
- Docker et Docker Compose installés.
- Un projet Google Cloud Platform (GCP) avec l'API Vertex AI activée.
- (Optionnel) Une clé API Tavily pour la recherche web (https://tavily.com/).
L'application utilise les Application Default Credentials (ADC). Assurez-vous d'être authentifié sur votre machine hôte :
gcloud auth application-default loginDocker partagera ces credentials avec le conteneur backend via le volume monté.
Créez un fichier .env à la racine du projet avec les informations suivantes :
# --- Google Cloud (OBLIGATOIRE) ---
GOOGLE_CLOUD_PROJECT=votre-id-projet-gcp
GOOGLE_CLOUD_REGION=global # ou votre région préférée
# --- LLM Configuration (Optionnel) ---
LLM_MODEL=gemini-3-flash-preview
# --- Recherche Web (Optionnel) ---
# Nécessaire si vous activez le toggle "Recherche Web"
TAVILY_API_KEY=tvly-xxxxxxxxxxxxxxxxxxxx
# --- Base de Données (Optionnel) ---
MONGODB_URL=mongodb://mongo:27017/
MILVUS_URI=./milvus_demo.dbDémarrez l'application avec Docker Compose :
docker-compose up --build -d- Application Web : http://localhost:4200
- Documentation API (Swagger) : http://localhost:8000/docs
- Milvus Lite : Stocké dans
backend/milvus_demo.db.
- Frontend :
frontend/(Angular CLI). - Backend :
backend/(Python/FastAPI). - Logs :
docker-compose logs -f backendpour voir les erreurs ou les traces de génération.
