- ProblèmeSystème de consensus multi-LLM local avec Ollama : réponses parallèles → revue anonymisée → synthèse chairman.
- RôleDémonstration d’ingénierie systèmes
- DuréePrototype
- StackNode.js • TypeScript • Ollama • Zod
- FocusLocal AI • Distributed Systems • Ollama
- RésultatsUn pattern local-first qui transforme les divergences multi-LLM en consensus traçable et auditable sans dépendre du cloud.
Problème
Un seul modèle peut produire des réponses fragiles, biaisées ou inconsistantes. Comparer plusieurs modèles de façon reproductible est difficile, et il est souvent impossible d’expliquer pourquoi un résultat final a été retenu.
Le local-first compte : les données sensibles restent sur la machine, l’inférence fonctionne hors ligne, les coûts sont prévisibles et l’on évite le vendor lock‑in.
- Inférence locale uniquement (Ollama), aucun appel cloud
- Contrats JSON/Zod stricts entre services
- Observabilité + historique de runs pour des démos reproductibles
Contexte
Architecture en bref — L’UI envoie un prompt et une politique à l’orchestrateur. Celui-ci distribue vers les pairs Ollama, anonymise, collecte les votes, puis transmet au chairman pour une réponse JSON finale. Health/heartbeat et historique de runs sont stockés localement.
- Quickstart (local)
npm install npm --prefix orchestrator install npm --prefix chairman install npm --prefix ui install cp .env.example .env cp orchestrator/.env.example orchestrator/.env cp chairman/.env.example chairman/.env cp ui/.env.example ui/.env ./scripts/run_all_local.sh open http://localhost:5173
Orchestration multi‑LLM locale avec Ollama et contrats JSON
LLM Council fonctionne en local et coordonne plusieurs modèles via des contrats JSON validés par Zod.
L’inférence reste privée, offline et reproductible.
Pipeline de consensus : revue anonymisée + synthèse chairman
Les réponses sont anonymisées, évaluées, puis classées avant la synthèse finale.
Le processus reste transparent et auditable.
Architecture
- Étapes du pipeline (Stage 1 → 3)
- Stage 1 : réponses indépendantes des membres du council.
- Stage 2 : revue anonymisée et classement des réponses.
- Stage 3 : synthèse finale par le chairman avec sortie JSON stricte.
- Tolérance aux pannes partielles : un pair manquant n’interrompt pas le run.
- Frontières de services & contrats
- L’orchestrateur coordonne, anonymise et persiste les métadonnées.
- Payloads JSON validés par Zod pour éviter la dérive des API.
- Run IDs + latences rendent chaque résultat traçable.
- Observabilité & run history
- UI avec timing par étape, état des pairs et synthèse finale.
- SQLite stocke les runs, classements et exports JSON.
Sécurité / Modèle de menace
- Inférence locale via Ollama ; aucun appel cloud.
- Historique SQLite activable/désactivable selon la sensibilité des démos.
- Pas d’auth/rate limiting par défaut (à ajouter pour un usage LAN partagé).
Résultats
Un pattern local-first qui transforme les divergences multi-LLM en consensus traçable et auditable sans dépendre du cloud.
Stack technique
FAQ
Pourquoi du local‑first plutôt qu’une API cloud ?
Pour garder les données sensibles sur la machine, fonctionner hors ligne et éviter des coûts variables ou le vendor lock‑in.
L’orchestrateur appelle‑t‑il les LLMs ?
Non. Il coordonne les requêtes et agrège les réponses ; les appels LLM sont faits par les services membres.
Qu’est‑ce qui rend les résultats reproductibles ?
Les contrats JSON/Zod et l’historique SQLite permettent de rejouer et auditer les runs.
