File size: 3,712 Bytes
6a4e68b 1e29076 87344df 1e29076 87344df 1e29076 87344df 1e29076 87344df 1e29076 87344df 1e29076 87344df 1e29076 87344df 1e29076 87344df 1e29076 87344df 1e29076 87344df 1e29076 87344df 2a08435 b497571 2a08435 b497571 2a08435 b497571 2a08435 b497571 2a08435 b497571 1e29076 87344df 1e29076 87344df 1e29076 87344df 1e29076 87344df 1e29076 87344df 1e29076 87344df 1e29076 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | ---
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
|