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
Copier le fichier d'environnement :
cp .env.example .envConfigurer la cle API dans
.env(voir section "Configuration LLM" ci-dessous)Lancer :
docker-compose up --buildOuvrir http://localhost:8000
Configuration LLM
Option A : Test (OpenRouter)
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)
OPENROUTER_API_KEY=ollama
LLM_BASE_URL=http://localhost:11434/v1
LLM_MODEL=mistral:instruct
Prerequis pour Ollama :
ollama pull mistral:instruct
ollama serve
Deploiement en ligne (Hugging Face Spaces)
Pour une demo accessible via URL publique, gratuite, sans carte bancaire :
- Creer un compte sur huggingface.co
- New Space > choisir Docker comme SDK
- Connecter le repo GitHub ou pousser le code directement
- Dans Settings > Variables and secrets, ajouter comme secrets :
OPENROUTER_API_KEY= votre cle OpenRouterLLM_BASE_URL=https://openrouter.ai/api/v1LLM_MODEL=mistralai/mistral-7b-instruct
- Le Space se build et deploie automatiquement
- 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 :
LLM : Changer uniquement
LLM_BASE_URLetLLM_MODELdans.env- Remplacer
https://openrouter.ai/api/v1parhttp://localhost:11434/v1 - Remplacer
mistralai/mistral-7b-instructparmistral:instruct - Mettre
OPENROUTER_API_KEY=ollama(Ollama n'exige pas de cle mais le champ doit etre non-vide)
- Remplacer
Aucune modification de code requise : le
base_urlet l'api_keysont charges exclusivement depuis.envResultat : 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