Une application de bureau et une API locale pour interagir avec les modèles LFM2 de LiquidAI, optimisée par la bibliothèque transformers.
- Interface Graphique Intuitive : Une application de bureau simple et efficace construite avec PyQt6.
- Support Multimodal (Image + Texte) : Interagissez avec les modèles Vision-Language (VL) en fournissant une image en plus de votre question.
- Catalogue Hugging Face automatique : l'app scanne le compte LiquidAI et liste les nouveaux LFM / LFM2.5 / GGUF sans mise à jour manuelle.
- Gestion Dynamique des Modèles : Chargez et déchargez les modèles de langue et de vision à la volée pour libérer les ressources (VRAM/RAM).
- Support RAG (Retrieval-Augmented Generation) : Améliorez les réponses des modèles textuels en leur fournissant le contexte de vos propres documents (
.txt,.pdf,.docx). - API Compatible OpenAI : Exposez le modèle via une API locale qui imite la structure de l'API OpenAI, vous permettant de connecter vos outils et scripts existants.
- Streaming de Texte : Obtenez des réponses en temps réel, mot par mot, pour une expérience plus fluide.
- Paramètres Personnalisables : Ajustez finement les paramètres de génération comme la température, le
min_pet la pénalité de répétition via une interface dédiée. - Historique des Conversations : Toutes vos discussions sont sauvegardées localement et peuvent être rechargées.
- Python 3.9+
- Git
Pour que l'installation des dépendances fonctionne correctement, vous DEVEZ activer le support des chemins de fichiers longs sur votre système. C'est une opération unique et sans danger.
- Ouvrez PowerShell en tant qu'administrateur et exécutez la commande suivante :
New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
- Redémarrez votre ordinateur. C'est une étape cruciale pour que le changement soit pris en compte.
Les scripts d'installation créent un environnement virtuel et installent toutes les dépendances nécessaires.
- Première fois : Double-cliquez sur
install.bat. L'application se lancera automatiquement après l'installation. - Les fois suivantes : Double-cliquez sur
run.batpour un démarrage rapide.
- Première fois :
- Rendez les scripts exécutables :
chmod +x install.sh run.sh run_api.sh. - Exécutez le script d'installation :
./install.sh(installe depuisrequirements.txt). L'application se lancera automatiquement.
- Rendez les scripts exécutables :
- Les fois suivantes : Exécutez
./run.sh.
Ce projet offre deux modes d'utilisation principaux : une interface de bureau et une API.
Lancez l'application en utilisant run.bat (Windows) ou ./run.sh (macOS/Linux).
-
Panneau de Gauche (Historique) :
- Affiche toutes vos conversations passées.
- Cliquez sur "Nouvelle Discussion" pour en commencer une nouvelle.
- Faites un clic droit sur une conversation pour la supprimer.
-
Panneau de Droite (Chat) :
- Sélection de Modèle : Filtrez puis choisissez un modèle (texte, VL ou GGUF). Le catalogue est lu sur Hugging Face ; Actualiser HF rescanne le compte LiquidAI (LFM2, LFM2.5, nouveaux GGUF, etc.).
- Fichier GGUF : pour un dépôt GGUF, l'app liste les
.ggufdu repo (Q4_K_M recommandé, Q5, Q8, F16…). Plus besoin d'ajouter les quantizations à la main. - Charger : Télécharge et charge le modèle (ou le fichier GGUF) sélectionné. Attendez le message « chargé » avant d'envoyer.
- Utilisation des Modèles VL : Si vous sélectionnez un modèle VL (par ex.,
LiquidAI/LFM2-VL-3B), une zone apparaît pour sélectionner une image. L'image est envoyée avec votre prochain message. - Éjecter le Modèle : Libère les ressources VRAM/RAM.
- Paramètres : Température,
min_p(paramètre officiel LiquidAI, plustop_p), pénalité de répétition, longueur max, découpe RAG. Ils sont sauvegardés danssettings.json. - Champ de Saisie : Tapez votre question (même si vous avez chargé une image) et envoyez.
La fonctionnalité RAG permet au modèle de répondre à des questions sur des informations contenues dans vos documents personnels.
- Charger des documents : Cliquez sur le bouton "Charger Documents" pour sélectionner un ou plusieurs fichiers (
.txt,.pdf,.docx). - Création de l'index : L'application traite ces documents, les découpe en morceaux, et les transforme en vecteurs numériques à l'aide d'un modèle d'embedding local. Ces vecteurs sont stockés dans un index en mémoire (FAISS).
- Activer le RAG : Cochez la case "Activer RAG".
- Posez votre question : Lorsque le RAG est actif, l'application recherche les morceaux de documents les plus pertinents et les injecte dans le contexte avant d'interroger le modèle.
Lancez le serveur d'API avec run_api.bat (Windows) ou ./run_api.sh (macOS/Linux). Le serveur écoute par défaut sur http://127.0.0.1:8000 (localhost uniquement).
Variables d'environnement optionnelles :
LIQUIDAI_HOST/LIQUIDAI_PORT: adresse d'écoute (défaut127.0.0.1:8000)LIQUIDAI_API_KEY: si défini, les appels doivent envoyerAuthorization: Bearer <clé>LIQUIDAI_PRELOAD_MODEL: précharge un modèle au démarrage (ex.LiquidAI/LFM2-1.2B)
Endpoints utiles : GET /, GET /v1/models, POST /v1/models/refresh, POST /v1/chat/completions, POST /v1/models/unload.
Pour un GGUF précis : "model": "LiquidAI/LFM2.5-2.6B-GGUF:Q4_K_M" (ou le nom de fichier complet). Sinon le quant Q4_K_M est choisi automatiquement.
Vous pouvez utiliser http://127.0.0.1:8000 dans n'importe quel client compatible OpenAI.
Exemple avec curl (Modèle Texte) :
curl -X POST "http://127.0.0.1:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
-d '{
"model": "LiquidAI/LFM2-1.2B",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Explique le concept de RAG en une phrase."}
],
"temperature": 0.3,
"min_p": 0.15,
"repetition_penalty": 1.05
}'Exemple avec curl (Modèle Vision-Language) :
Pour envoyer une image, vous pouvez fournir une URL publique ou une image encodée en base64.
curl -X POST "http://127.0.0.1:8000/v1/chat/completions" \
-H "Content-Type: application/json" \
-d '{
"model": "LiquidAI/LFM2-VL-1.6B",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Que vois-tu sur cette image ?"},
{
"type": "image_url",
"image_url": {
"url": "https://www.ilankelman.org/stopsigns/australia.jpg"
}
}
]
}
]
}'Réponse attendue :
{
"id": "chatcmpl-...",
"object": "chat.completion",
"created": 1677652288,
"model": "LiquidAI/LFM2-350M",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Le RAG (Retrieval-Augmented Generation) est une technique où un modèle de langue récupère des informations pertinentes dans une base de connaissances externe avant de générer une réponse."
},
"finish_reason": "stop"
}
]
}Les dépendances sont listées dans le fichier requirements.txt et sont installées automatiquement. Les principales bibliothèques utilisées sont :
- GUI :
PyQt6 - Modèles IA :
transformers,torch,accelerate,Pillow,llama-cpp-python,huggingface-hub - API :
fastapi,uvicorn - RAG :
langchain,langchain-community,sentence-transformers,faiss-cpu,pypdf,python-docx - Autres :
markdown2