Portfolio

Hub-IA

PythonSQLiteDockerTailscaleOllama
Project image: Hub-IA

Description

Hub-IA est un site web de discussion avec une intelligence artificielle, dans l'esprit de ChatGPT, que j'ai entièrement conçu et développé. Il permet de poser des questions, d'analyser des images, de faire des recherches sur internet et de retrouver ses anciennes conversations, le tout sans abonnement, sans publicité et sans que les échanges soient confiés à une grande entreprise. Les assistants IA du commerce sont pratiques, mais ils ont un coût et vos conversations passent par des serveurs que vous ne maîtrisez pas. J'ai voulu prouver qu'il était possible d'offrir le même confort d'utilisation à une communauté, en gardant la maîtrise des données et en utilisant du matériel modeste. J'utilisais au départ un outil existant (OpenWebUI), complet mais lourd, difficile à comprendre et à sécuriser, avec beaucoup de réglages inutiles pour des débutants. J'ai donc décidé de repartir de zéro pour créer une interface plus simple, plus légère et dont je comprends chaque ligne de code. Le système repose sur deux machines qui se partagent le travail : - Une petite machine louée sur internet (un serveur virtuel peu coûteux) qui sert de « façade ». C'est elle qui affiche le site, gère les comptes des utilisateurs et conserve les conversations. Elle est allumée en permanence mais n'a presque aucune puissance de calcul. - Un ordinateur fixe chez moi, équipé d'une carte graphique, qui fait le vrai travail de « réflexion » de l'IA. C'est lui qui rédige les réponses. Quand quelqu'un pose une question, la façade la transmet à l'ordinateur de calcul par un tunnel sécurisé, puis renvoie la réponse au fur et à mesure qu'elle s'écrit, mot après mot, comme sur les grands services. L'astuce : l'ordinateur de calcul consomme beaucoup d'électricité, donc il n'est pas allumé en permanence. S'il dort au moment où un utilisateur envoie un message, la façade le réveille automatiquement à distance et affiche un message « Réveil du serveur en cours ». Au bout de quelques minutes sans activité, il se remet tout seul en veille. On obtient ainsi un service disponible à toute heure pour une facture d'énergie très réduite. Côté utilisateur, le site permet de : - Discuter avec plusieurs modèles d'IA et choisir celui qui convient le mieux à la demande. - Retrouver l'historique de ses conversations, les rechercher, les modifier ou les supprimer. - Envoyer des images ou des fichiers texte à analyser (y compris les photos de smartphone). - Voir le « raisonnement » des modèles qui réfléchissent avant de répondre. - Activer la recherche sur internet : l'IA va chercher des informations récentes et cite ses sources, sur lesquelles on peut cliquer. - Démarrer une conversation temporaire, qui n'est jamais enregistrée. - Utiliser le site confortablement sur ordinateur comme sur téléphone, en thème clair ou sombre. Côté administrateur, un espace dédié permet de valider les nouveaux inscrits, de gérer les comptes, de choisir quels modèles d'IA sont proposés et comment ils se comportent, de suivre des statistiques d'utilisation et même de couper le service en urgence si nécessaire. La confidentialité et la sécurité sont les points sur lesquels j'ai le plus insisté. Les conversations sont chiffrées avant d'être enregistrées, avec une clé liée au mot de passe de chaque utilisateur : même l'administrateur du site ne peut pas les lire. Les accès sont protégés par un système de connexion sécurisé, avec des limites contre les tentatives de piratage répétées. Le projet a aussi fait l'objet d'audits de sécurité menés pas à pas, avec corrections à la clé. La carte graphique ne peut répondre qu'à une personne à la fois. Pour éviter les plantages quand plusieurs adhérents écrivent en même temps, j'ai mis au point une file d'attente qui organise les demandes dans l'ordre et limite les changements de modèle, qui sont lents. Chacun est servi à son tour, sans coupure en cours de phrase. Hub-IA peut aussi être utilisé comme « moteur d'IA » par d'autres programmes que je développe (par exemple pour analyser une image dans une autre application), via une porte d'accès protégée par une clé. Pour les curieux : le serveur est écrit en Python, l'interface en HTML, CSS et JavaScript (sans framework lourd, pour rester lisible), les données sont stockées dans une base SQLite, l'ensemble tourne dans un conteneur Docker, la connexion entre les deux machines passe par Tailscale, et les modèles d'IA sont exécutés par Ollama. Hub-IA m'a permis de travailler sur l'ensemble de la chaîne : conception d'une architecture répartie sur plusieurs machines, développement web (serveur et interface), sécurité et chiffrement des données, gestion de ressources limitées, déploiement. C'est un projet vivant, qui continue d'évoluer et qui notamment qui sera peut-être utilisé par une association a but non lucratif fournissant des services informatiques.

Gallery7 images

Hub-IA | Portfolio Dev | Portfolio Dev