| --- |
| title: AIM Learning Companion |
| emoji: π― |
| colorFrom: blue |
| colorTo: purple |
| sdk: docker |
| app_port: 7860 |
| pinned: false |
| --- |
| |
| # AIM - Compagnon socratique d'apprentissage |
|
|
| Moteur de questionnement socratique pour apprenants adultes en formation professionnelle. Applique un protocole strict en 5 phases pour guider la reflexion critique, ancre dans les documents de cours via RAG. |
|
|
| ## Architecture |
|
|
| - **Backend** : FastAPI (Python) |
| - **LLM** : OpenRouter ou Ollama (configurable via `.env`) |
| - **Vector Store** : ChromaDB (local, persistant) |
| - **Embeddings** : sentence-transformers (`all-MiniLM-L6-v2`) |
| - **Frontend** : Vanilla HTML/CSS/JS (servi par FastAPI) |
|
|
| ## Demarrage rapide |
|
|
| 1. Copier le fichier d'environnement : |
| ```bash |
| cp .env.example .env |
| ``` |
|
|
| 2. Configurer la cle API dans `.env` (voir section "Configuration LLM" ci-dessous) |
|
|
| 3. Lancer : |
| ```bash |
| docker-compose up --build |
| ``` |
|
|
| 4. Ouvrir http://localhost:8000 |
|
|
| ## Configuration LLM |
|
|
| ### Option A : Test (OpenRouter) |
|
|
| ```env |
| OPENROUTER_API_KEY=sk-or-v1-votre-cle-ici |
| LLM_BASE_URL=https://openrouter.ai/api/v1 |
| LLM_MODEL=mistralai/mistral-7b-instruct |
| ``` |
|
|
| ### Option B : Production (Ollama local) |
|
|
| ```env |
| OPENROUTER_API_KEY=ollama |
| LLM_BASE_URL=http://localhost:11434/v1 |
| LLM_MODEL=mistral:instruct |
| ``` |
|
|
| Prerequis pour Ollama : |
| ```bash |
| ollama pull mistral:instruct |
| ollama serve |
| ``` |
|
|
| ## Deploiement en ligne (Hugging Face Spaces) |
|
|
| Pour une demo accessible via URL publique, gratuite, sans carte bancaire : |
|
|
| 1. Creer un compte sur [huggingface.co](https://huggingface.co) |
| 2. **New Space** > choisir **Docker** comme SDK |
| 3. Connecter le repo GitHub ou pousser le code directement |
| 4. Dans **Settings > Variables and secrets**, ajouter comme **secrets** : |
| - `OPENROUTER_API_KEY` = votre cle OpenRouter |
| - `LLM_BASE_URL` = `https://openrouter.ai/api/v1` |
| - `LLM_MODEL` = `mistralai/mistral-7b-instruct` |
| 5. Le Space se build et deploie automatiquement |
| 6. URL publique : `https://votre-nom-aim.hf.space` |
|
|
| Free tier : 2 Go RAM, 16 Go disque β suffisant pour sentence-transformers + ChromaDB. |
|
|
| ## Migration vers deploiement local |
|
|
| L'application est concue pour rendre la migration triviale : |
|
|
| 1. **LLM** : Changer uniquement `LLM_BASE_URL` et `LLM_MODEL` dans `.env` |
| - Remplacer `https://openrouter.ai/api/v1` par `http://localhost:11434/v1` |
| - Remplacer `mistralai/mistral-7b-instruct` par `mistral:instruct` |
| - Mettre `OPENROUTER_API_KEY=ollama` (Ollama n'exige pas de cle mais le champ doit etre non-vide) |
|
|
| 2. **Aucune modification de code requise** : le `base_url` et l'`api_key` sont charges exclusivement depuis `.env` |
|
|
| 3. **Resultat** : inference 100% locale, aucune donnee ne quitte le reseau client |
|
|
| ## Corpus |
|
|
| Placer des fichiers `.pdf` et `.txt` dans le dossier `/corpus`. Le pipeline RAG les charge et les indexe au demarrage. |
|
|
| Le dossier `/corpus` est monte en volume β ajout ou remplacement de documents sans reconstruction du conteneur. |
|
|
| Un fichier `sample.txt` est inclus pour tester le RAG immediatement. |
|
|
| ## Fonctionnalites |
|
|
| - **Deux modes** : TUTEUR (accompagnement) et CRITIQUE (audit logique) |
| - **Protocole socratique en 5 phases** : Ciblage β Clarification β Mecanisme β Verification β Stress-test |
| - **Une seule question par reponse** β jamais de reponse directe |
| - **RAG** : questions ancrees dans les documents de cours |
| - **Analyse de fin de session** : 6 dimensions notees (0-100) + bilan + export JSON |
| - **Stateless** : aucune donnee persistee apres fermeture de l'onglet |
|
|
| ## Confidentialite |
|
|
| - Sessions sans etat : aucune donnee persistee apres fermeture de l'onglet |
| - Pas de localStorage pour l'historique |
| - Pas de comptes utilisateurs, pas d'authentification |
| - Pas de cookies, pas de tracking |
|
|