Guide d'utilisation de Phi-3-mini-128k-instruct avec l'interface Chainlit

Présentation du modèle Phi-3-Mini-128K-Instruct

Le modèle Phi-3-Mini-128K-Instruct est un modèle de langage léger (SLM) de 3,8 milliards de paramètres, conçu pour offrir des performances élevées tout en restant économe en ressources. Ses principales caractéristiques incluent :

  • Fenêtre contextuelle : Supporte jusqu'à 128 000 jetons (tokens), idéal pour l'analyse de documents longs.
  • Entraînement : Basé sur des données de haute qualité combinant des jeux de données synthétiques et des contenus web filtrés.
  • Optimisation : Ajusté par SFT (Supervised Fine-Tuning) et DPO (Direct Preference Optimization) pour une meilleure conformité aux instructions.

Validation du service d'inférence

Avant de lancer l'interface utilisateur, il est impératif de s'assurer que le backend du modèle est opérationnel. Vous pouvez vérifier l'état du serveur d'inférence en consultant les journaux système :

tail -f /var/log/llm_service.log

Le service est prêt lorsque le message suivant appparaît dans le terminal :

INFO: Uvicorn running on http://localhost:8000 (Press CTRL+C to quit)
INFO: Application startup complete.

Mise en œuvre de l'interface Chainlit

Pour interagir avec le modèle via une interface web moderne, nous utilisons Chainlit. Voici un exemple de structure pour le fichier app.py permettant de lier l'interface au serveur d'inférence :

import chainlit as cl
import httpx

API_URL = "http://localhost:8000/v1/chat/completions"

@cl.on_message
async def traiter_message(message: cl.Message):
    corps_requete = {
        "model": "phi-3-mini",
        "messages": [{"role": "user", "content": message.content}],
        "temperature": 0.7,
        "stream": True
    }

    ui_msg = cl.Message(content="")
    
    async with httpx.AsyncClient() as client:
        async with client.stream("POST", API_URL, json=corps_requete, timeout=None) as response:
            async for chunk in response.aiter_text():
                # Logique de traitement du flux (streaming)
                await ui_msg.stream_token(chunk)
    
    await ui_msg.send()

Lancez l'application avec la commande suivante :

chainlit run app.py -w

Exploitation de l'interface utilisateur

Interaction de base

Une fois l'interface chargée dans votre navigateur, vous pouvez soumettre des requêtes directes. Le modèle Phi-3 est particulièrement efficace pour vulgariser des concepts techniques ou générer du code.

Gestion des paramètres de génération

Le panneau de configuration latéral permet d'ajuster le comportement du modèle :

  • Température : Une valeur basse (0.2) produit des réponses factuelles et déterministes, tandis qu'une valeur haute (0.8) favorise la créativité.
  • Max Tokens : Définit la limite de longueur de la réponse générée.
  • Top-P : Filtre les mots les plus probables pour affiner la diversité du vocabulaire.

Analyse des performances et réponses

Lors de l'utilisation de Phi-3 avec Chainlit, plusieurs aspects de la réponse peuvent être analysés :

  1. Formatage Markdown : Le modèle structure naturellement ses réponses avec des titres, des listes à puces et des blocs de code syntaxiquement colorés.
  2. Suivi du contexte : Grâce à la gestion native des sessions par Chainlit, vous pouvez poser des questions de suivi (ex: "Peux-tu approfondir le deuxième point ?").
  3. Vitesse d'inférence : En raison de sa taille réduite (3.8B), le temps de génération du premier jeton est extrêmement rapide, même sur des configurations matérielles modestes.

Résolution des problèmes courants

Le serveur ne répond pas

Si l'interface affiche une erreur de connexion, vérifiez que l'URL de l'API dans votre script Python correspond exactement à l'adresse fournie par votre serveur d'inférence (souvent localhost:8000 ou 127.0.0.1:8000).

Qualité de réponse insuffisante

Si les réponses manquent de précision :

  • Réduisez la Temperature pour limiter les hallucinations.
  • Fournissez un "System Prompt" plus explicite pour cadrer le rôle du modèle (ex: "Tu es un expert en cybersécurité").
  • Utilisez des techniques de "Few-shot prompting" en donnant un exemple de format attendu dans votre question.

Étiquettes: Phi-3-mini Chainlit LLM-Inference Python nlp

Publié le 1 juillet à 04h16