Skip to content

Inference

martialzinsou edited this page Sep 21, 2026 · 3 revisions

Inférence d'un message

Le cycle complet

Séquence d'inférence d'un message

Déroulé pas à pas :

  1. Avant l'envoi — si une compétence est active dans le chat, son prompt système est inséré en tête de l'historique des messages.
  2. L'utilisateur écrit et valide son message dans ChatView.
  3. L'interface met à jour la liste : le message utilisateur est ajouté, puis un bloc « assistant » vide est créé (ce bloc sera rempli au fil de l'eau).
  4. ChatService.streamReply(history, baseURL) est appelé avec :
    • l'historique complet (messages système / user / assistant précédents),
    • l'URL locale du moteur.
  5. Requête HTTP envoyée :
    POST http://127.0.0.1:<port>/v1/chat/completions
    {
      "model": "<nom du modèle>",
      "messages": [ ... ],
      "stream": true,
      "max_tokens": 512,
      "temperature": 0.7
    }
    
  6. Le moteur génère token par token (la tokenisation et l'inférence s'exécutent sur le CPU de la machine).
  7. Réponse en streaming SSE — le serveur envoie des événements de la forme :
    data: {"choices":[{"delta":{"content":"Bon"}}]}
    data: {"choices":[{"delta":{"content":"jour"}}]}
    ...
    data: [DONE]
    
  8. ChatService parse chaque événement et renvoie le texte token par token (fonction génératrice / yield).
  9. Affichage accumulé : chaque token est concaténé au bloc « assistant », à l'écran, en direct.

Chargement du modèle au préalable

Avant de parler, il faut que le moteur ait chargé le modèle en mémoire :

Séquence de chargement du moteur

Étape Détail
load(model) Appelé par la vue quand tu ouvres un modèle.
Moteur installé ? Sinon, téléchargement et installation automatiques (Engine/).
Port libre Recherche d'un port inutilisé (127.0.0.1).
Lancement llama-server -m <fichier .gguf> --port <N> -c 2048
Attente de disponibilité Interrogation de GET /health toutes les 0,8 s, jusqu'à 120 s max.
Prêt L'état passe à « Prêt » et l'onglet Chat devient utilisable.

Gestion des erreurs

  • Moteur introuvable / crash : le message s'affiche avec un libellé — (Erreur …) au lieu de la réponse.
  • Compétence impossible à lire : le prompt système est simplement omis ; la conversation reste utilisable.
  • Réseau Hors-ligne : la Boutique affiche un message explicite ; l'app continue de fonctionner avec les modèles déjà installés.

La réponse instantanée

Le streaming est la seule façon d'afficher une réponse : aucun écran « en attente » sans retour. Chaque token généré est rendu immédiatement, ce qui donne un effet de frappe en continu.

Voir aussi : Architecture, Compétences.

Clone this wiki locally