LLM local · Base de connaissances · Python
Sensai
Un professeur de japonais qui tourne entièrement sur la machine, et qui se souvient de vos fiches de cours.
Projet de groupe Epitech (G-AIA-500). J'y ai écrit la base de connaissances, les personas et la configuration.
- Python
- Ollama
- SQLite
- Embeddings
- TOML
- unittest
01Le projet
Sensai accompagne un étudiant qui prépare le JLPT N5 : il l'interroge, se souvient de ses erreurs et consulte un dictionnaire grâce à des outils MCP. Tout tourne avec Ollama, sans framework LLM : de simples appels HTTP.
Chaque fonctionnalité est une étape d'un pipeline qui enrichit la requête avant l'appel au modèle, puis inspecte la réponse après. On ajoute une fonctionnalité sans toucher au cœur.
02Démo
Un tour de conversation
élève Je m'appelle Léa, lea.martin@mail.fr — comment dit-on merci ?
- Personama partie
- Garde-fous
- Profil
- Mémoire
- Outils MCP
- Journal JSONLma partie
- Ollamaqwen2.5 en local
Lancez un tour pour suivre le message à travers le pipeline.
Base de connaissances · ma partie
- FichesMarkdown, texte, PDF
- Découpagemorceaux qui se chevauchent
- EmbeddingsOllama /api/embed
- SQLiteré-ingère seulement les fichiers modifiés (SHA-256)
Commande /ingest. La recherche des passages utiles au moment de la question est la prochaine étape.
Exemple de conversation illustratif ; l'ordre des étapes et leur rôle sont ceux du code.
03Ma partie
Ce que j'ai réalisé
La base de connaissances (RAG)
Lecture de fiches en Markdown, texte ou PDF, découpage en morceaux qui se chevauchent, embeddings calculés par Ollama, stockage dans SQLite avec ingestion incrémentale. Les commandes /ingest et /notes pour alimenter et consulter la base. Prochaine étape : une étape du pipeline qui retrouve les passages proches de la question et les injecte dans la requête.
Les personas
Un sensei bienveillant et un examinateur exigeant, sous forme d'étape du pipeline. On en ajoute dans la configuration, on change en pleine conversation avec /persona, et le choix est mémorisé dans la session.
La configuration
Un sensai.toml commenté et validé au démarrage : priorité ligne de commande > fichier > défaut, erreurs claires pour un type ou une valeur hors limites, simple avertissement pour une faute de frappe. Sensai vérifie aussi qu'Ollama répond et que le modèle est téléchargé.
Commandes et journal
/help, /reset, /model, et un journal JSONL des échanges placé en dernière étape du pipeline, pour qu'il ne voie que les données déjà masquées.
04Bilan
Ce que j'en retiens
- Un RAG, c'est d'abord une ingestion bien faite : découpage, chevauchement, ré-ingestion seulement des fichiers modifiés (empreinte SHA-256).
- Écrire les tests avec la fonctionnalité, en simulant Ollama, pour tester sans GPU ni modèle.
- Placer chaque étape au bon endroit : un journal mis trop tôt aurait enregistré des données non masquées.