Skip to content

Repository files navigation

Capture d'écran 2025-07-15 204919

License: MIT

Application de Chat LiquidAI avec Transformers

Une application de bureau et une API locale pour interagir avec les modèles LFM2 de LiquidAI, optimisée par la bibliothèque transformers.

Fonctionnalités Principales

  • 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_p et 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.

Prérequis

  • Python 3.9+
  • Git

⚠️ Prérequis Important pour les Utilisateurs Windows

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.

  1. 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
  2. Redémarrez votre ordinateur. C'est une étape cruciale pour que le changement soit pris en compte.

Installation

Les scripts d'installation créent un environnement virtuel et installent toutes les dépendances nécessaires.

Pour Windows

  1. Première fois : Double-cliquez sur install.bat. L'application se lancera automatiquement après l'installation.
  2. Les fois suivantes : Double-cliquez sur run.bat pour un démarrage rapide.

Pour macOS et Linux

  1. 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 depuis requirements.txt). L'application se lancera automatiquement.
  2. Les fois suivantes : Exécutez ./run.sh.

Comment Utiliser

Ce projet offre deux modes d'utilisation principaux : une interface de bureau et une API.

1. Interface Graphique de Bureau (GUI)

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 .gguf du 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, plus top_p), pénalité de répétition, longueur max, découpe RAG. Ils sont sauvegardés dans settings.json.
    • Champ de Saisie : Tapez votre question (même si vous avez chargé une image) et envoyez.

2. Fonctionnalité RAG (pour les modèles de texte uniquement)

La fonctionnalité RAG permet au modèle de répondre à des questions sur des informations contenues dans vos documents personnels.

  1. Charger des documents : Cliquez sur le bouton "Charger Documents" pour sélectionner un ou plusieurs fichiers (.txt, .pdf, .docx).
  2. 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).
  3. Activer le RAG : Cochez la case "Activer RAG".
  4. 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.

3. API Compatible OpenAI

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éfaut 127.0.0.1:8000)
  • LIQUIDAI_API_KEY : si défini, les appels doivent envoyer Authorization: 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"
    }
  ]
}

Dépendances

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

About

Anywhere-LFM est une application de bureau légère, pensée pour simplifier l'utilisation en local des modèles LiquidAI/LFM2 (350M à 1.2B). Elle permet à n'importe qui de discuter avec une IA générative performante, sans nécessiter de ligne de commande ou de configuration complexe.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages