Pour exécuter des modèles open source privés ou des versions personnalisées (fine-tuning) au sein de l'interface HuggingChat, il convient d'abord de comprendre l'architecture technique sous-jacente. De nombreux développeurs parcourent l'interface publique de HuggingChat (hf.co/chat) en cherchant un panneau de configuration permettant de renseigner une URL de point de terminaison et un jeton d'API. Or, la version publique de HuggingChat est un service mutualisé hébergé directement sur l'infrastructure de routage centralisée de Hugging Face. Pour des impératifs d'isolation et de sécurité, l'interface publique ne permet pas de brancher des points de terminaison privés arbitraires.
La méthode officielle et conçue pour la production permettant de profiter de l'expérience HuggingChat avec des modèles privés consiste à déployer sa propre instance de Chat UI — l'application open source développée en SvelteKit qui alimente HuggingChat. Chat UI intègre nativement la prise en charge des API au format OpenAI. Il suffit de renseigner les variables d'environnement OPENAI_BASE_URL et OPENAI_API_KEY pour rediriger les échanges vers un point de terminaison dédié Hugging Face Inference Endpoints propulsé par Text Generation Inference (TGI) ou vLLM. Ce déploiement s'effectue en quelques minutes sur un Hugging Face Space privé ou en local via Docker.
Architecture et flux de données
L'intégration complète repose sur trois éléments clés :
- Hugging Face Inference Endpoints : Héberge les poids de votre modèle privé ou adapté (comme Llama 3.3, Mistral, Qwen ou des adaptateurs LoRA internes) sur des accélérateurs GPU sous TGI ou vLLM, et expose une route REST standard compatible OpenAI (
/v1/chat/completions). - User Access Token (
HF_TOKEN) : Assure l'authentification et l'autorisation de chaque requête adressée au point de terminaison privé. - Chat UI (Instance privée de HuggingChat) : L'application web frontale qui consomme le point de terminaison et restitue l'ensemble des fonctionnalités de conversation, de multimodalité et d'outils.
+-------------------------------------------------------------+
| Instance privée de Chat UI |
| (Hugging Face Space / Docker local) |
+-------------------------------------------------------------+
|
OPENAI_BASE_URL | OPENAI_API_KEY (hf_xxx)
v
+-------------------------------------------------------------+
| Hugging Face Inference Endpoint |
| https://<endpoint-id>.<region>.<cloud>.endpoints.huggingface.cloud/v1 |
| (Conteneur TGI ou vLLM sur GPU) |
+-------------------------------------------------------------+
|
v
+-------------------------------------------------------------+
| Dépôt privé / Poids du modèle ajusté |
+-------------------------------------------------------------+
Étape 1 : Déployer le modèle sur Inference Endpoints
Pour héberger un modèle privé sur une infrastructure dédiée Hugging Face :
- Accédez à la console Inference Endpoints.
- Cliquez sur Create New Endpoint.
- Model Repository : Saisissez l'identifiant du dépôt privé (ex. :
votre-organisation/modele-prive-8b) ou choisissez un modèle public du Hub. - Cloud Provider & Region : Choisissez le fournisseur de cloud (AWS ou Azure) ainsi qu'une région géographique proche de vos utilisateurs.
- Instance Type : Sélectionnez le profil matériel GPU adapté à la volumétrie du modèle (ex. : 1x NVIDIA A10G pour 8B, ou plusieurs A100/H100 pour 70B).
- Framework & Engine : Vérifiez que le moteur d'exécution sélectionné est Text Generation Inference (TGI) ou vLLM. Les deux intègrent nativement les routes conformes aux spécifications OpenAI.
- Cliquez sur Create Endpoint.
Patientez jusqu'à ce que l'état passe de Building à Running. Notez l'URL assignée visible sur votre tableau de bord :
https://<endpoint-id>.<region>.<cloud>.endpoints.huggingface.cloud
Étape 2 : Créer un jeton d'accès au compte (Access Token)
Votre point de terminaison dédié requiert un jeton d'authentification valide pour chaque requête :
- Rendez-vous dans Settings > Access Tokens sur votre profil (
hf.co/settings/tokens). - Cliquez sur Create new token.
- Choisissez le type de jeton :
- Fine-grained token (Recommandé) : Dans la catégorie Inference, activez l'autorisation « Make calls to your Inference Endpoints ».
- Read token : Pour les points de terminaison associés à votre compte personnel, un jeton en lecture standard convient également.
- Copiez la chaîne générée (
hf_...) et stockez-la en sécurité.
Étape 3 : Configurer et démarrer Chat UI (HuggingChat)
Chat UI interroge les modèles disponibles en concaténant automatiquement /v1 à l'URL de base.
Option A : Déploiement en un clic sur Hugging Face Spaces (Recommandé)
Pour mettre à disposition un environnement d'échange sécurisé sans gestion d'infrastructure :
- Ouvrez le modèle officiel de Space pour Chat UI.
- Définissez la visibilité sur Private afin de restreindre les accès aux seuls membres autorisés.
- Dans l'onglet Settings > Variables and Secrets du Space, ajoutez les variables suivantes :
OPENAI_BASE_URL:https://<endpoint-id>.<region>.<cloud>.endpoints.huggingface.cloud/v1OPENAI_API_KEY:hf_************************(votre jeton d'accès généré à l'étape 2)
- (Facultatif) Définissez
MONGODB_URLpour assurer la persistance des discussions après redémarrage du Space. Pour un usage individuel, Chat UI active automatiquement sa base de données locale intégrée. - Redémarrez le Space. Chat UI découvrira le point de terminaison et rendra le modèle immédiatement opérationnel dans l'interface.
Option B : Déploiement local ou sur serveur dédié (Node.js / Docker)
Pour exécuter l'interface sur votre poste de travail ou au sein d'un cluster privé :
-
Clonez le dépôt open source de Chat UI :
git clone https://github.com/huggingface/chat-ui.git cd chat-ui -
Créez un fichier
.env.local:# Configuration du point de terminaison d'inférence OPENAI_BASE_URL=https://<endpoint-id>.<region>.<cloud>.endpoints.huggingface.cloud/v1 OPENAI_API_KEY=hf_votre_jeton_ici # Base de données (facultative en développement local, stockée dans ./db par défaut) # MONGODB_URL=mongodb://localhost:27017 -
Si le point de terminaison ne prend pas en charge la découverte automatique via
/v1/modelsou si vous souhaitez fixer des paramètres d'inférence stricts, déclarez la variable JSON5MODELS:MODELS=`[ { "id": "tgi", "name": "Modèle Privé Entreprise", "multimodal": false, "supportsTools": false, "parameters": { "temperature": 0.7, "max_tokens": 4096 } } ]` -
Installez les dépendances et lancez le serveur :
npm install npm run dev -- --open
L'application s'ouvre à l'adresse http://localhost:5173, connectée à votre modèle privé tout en conservant l'expérience complète de HuggingChat.
Test et vérification de la liaison
Avant de lancer les échanges dans le navigateur, effectuez une validation rapide en ligne de commande avec curl :
curl -X POST "https://<endpoint-id>.<region>.<cloud>.endpoints.huggingface.cloud/v1/chat/completions" \
-H "Authorization: Bearer hf_votre_jeton_ici" \
-H "Content-Type: application/json" \
-d '{
"model": "tgi",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Hello! Confirm endpoint readiness."}
],
"max_tokens": 50
}'
Dès qu'une réponse JSON structurée contenant le texte généré est renvoyée, votre point de terminaison et vos identifiants sont validés.
Points de vigilance et arbitrages opérationnels
- Assistants publics vs Déploiement dédié : La création d'un assistant sur
hf.co/chatpermet d'ajuster des consignes système et de charger des documents (RAG), mais repose exclusivement sur les modèles publics de la plateforme. Pour garantir la confidentialité des données et exécuter des poids privés, l'auto-hébergement de Chat UI avec Inference Endpoints constitue la seule solution viable. - Mise en veille et démarrage à froid (Scale-to-Zero) : Si le point de terminaison est configuré pour s'arrêter à 0 réplique lors des périodes d'inactivité, la première requête peut déclencher un délai d'attente le temps que le conteneur GPU démarre. En environnement de production, conservez au moins 1 réplique active en permanence.
- Flux en continu (Streaming) : Chat UI s'appuie sur les Server-Sent Events (SSE) pour afficher les réponses en temps réel. TGI et vLLM gèrent nativement ce mode ; si vous utilisez un reverse proxy (comme Nginx), désactivez le tampon de proxy (
proxy_buffering off;).