Skip to content

alanent/geminibot

Repository files navigation

🤖 Gemini AI Assistant

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.

Gemini AI Assistant Screenshot


✨ Fonctionnalités Clés

  • 💬 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.

🏗️ Architecture Technique

L'application est conteneurisée et orchestrée via Docker Compose.

Composants

  1. Frontend (Angular) :
    • Interface utilisateur réactive.
    • Gestion des Settings via localStorage.
    • Communication WebSocket/HTTP Stream avec le backend.
  2. 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).
  3. Base de Données (MongoDB) :
    • Stockage persistant des conversations et messages.
    • Métadonnées des documents uploadés.
  4. 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.

Schéma de Données

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"]
Loading

📂 Structure du Backend

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.

🚀 Installation et Démarrage

1. Prérequis

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

2. Authentification Google Cloud

L'application utilise les Application Default Credentials (ADC). Assurez-vous d'être authentifié sur votre machine hôte :

gcloud auth application-default login

Docker partagera ces credentials avec le conteneur backend via le volume monté.

3. Configuration (.env)

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.db

4. Lancement

Démarrez l'application avec Docker Compose :

docker-compose up --build -d

5. Accès


🛠️ Développement

  • Frontend : frontend/ (Angular CLI).
  • Backend : backend/ (Python/FastAPI).
  • Logs : docker-compose logs -f backend pour voir les erreurs ou les traces de génération.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors