Chercheur du Meilleur Modèle HuggingFace
Trouve les meilleurs modèles pour une tâche en interrogeant les classements de benchmarks officiels HF, enrichit les résultats avec les données de taille des modèles, filtre selon ce qui s'adapte au dispositif de l'utilisateur, et retourne un tableau de comparaison avec les scores de benchmark.
Étape 1 : Analyser la demande
Extraire du message de l'utilisateur :
- Tâche : ce que le modèle doit faire (codage, mathématiques/raisonnement, chat, OCR, RAG/récupération, reconnaissance vocale, classification d'images, multimodal, agents, etc.)
- Dispositif : contraintes matérielles (MacBook M-series 8/16/32/64GB mémoire unifiée, GPU RTX avec quantité de VRAM, CPU uniquement, cloud/pas de contrainte, etc.)
Si le dispositif n'est pas mentionné, ignorer entièrement le filtrage et retourner les modèles les plus performants indépendamment de la taille. Si la tâche est véritablement ambiguë, poser une question de clarification.
Dispositif → budget de paramètres max
Quand un dispositif est spécifié, extraire sa mémoire disponible (RAM unifiée pour Apple Silicon, VRAM pour GPUs discrets) et appliquer :
- fp16 max params (B) ≈ mémoire (GB) ÷ 2
- Q4 max params (B) ≈ mémoire (GB) × 2
Exemples : 16GB → 8B fp16 / 32B Q4 — 24GB VRAM → 12B fp16 / 48B Q4 — 8GB → 4B fp16 / 16B Q4
Étape 2 : Trouver les datasets de benchmark pertinents
Récupérer la liste complète des benchmarks officiels HF :
curl -s -H "Authorization: Bearer $(cat ~/.cache/huggingface/token)" \
"https://huggingface.co/api/datasets?filter=benchmark:official&limit=500" | jq '[.[] | {id, tags, description}]'
Lire la liste retournée et sélectionner les datasets les plus pertinents pour la tâche de l'utilisateur — faire correspondre sur l'id du dataset, les tags et la description. Utiliser son jugement ; ne pas se limiter à 2-3. Viser une couverture complète : si 5 benchmarks couvrent clairement la tâche, utiliser les 5.
Étape 3 : Récupérer les meilleurs modèles des classements
Pour chaque dataset de benchmark sélectionné :
curl -s -H "Authorization: Bearer $(cat ~/.cache/huggingface/token)" \
"https://huggingface.co/api/datasets/<namespace>/<repo>/leaderboard" | jq '[.[:15] | .[] | {rank, modelId, value, verified}]'
Collecter les IDs de modèles et les scores sur tous les benchmarks. Si un classement retourne une erreur (404, 401, etc.), le sauter et le noter dans la sortie.
Étape 4 : Enrichir avec les métadonnées du modèle
Pour les 10-15 premiers IDs de modèles candidats, obtenir les infos du modèle.
# REST API
curl -s -H "Authorization: Bearer $(cat ~/.cache/huggingface/token)" \
"https://huggingface.co/api/models/org/model1" | jq '{safetensors, tags, cardData}'
# CLI (hf-cli)
hf models info org/model1 --json | jq '{safetensors, tags, cardData}'
Extraire de chaque réponse :
- Paramètres :
safetensors.total→ convertir en B (ex. 7_241_748_480 → "7.2B") - Licence : des tags de la carte du modèle (chercher
license:apache-2.0,license:mit, etc.) - Si
safetensorsest absent, analyser la taille à partir du nom du modèle (chercher "7b", "8b", "13b", "70b", "72b", etc.)
Étape 5 : Filtrer et classer
Si un dispositif a été spécifié :
- Supprimer les modèles dépassant le budget de paramètres fp16 pour le dispositif
- Signaler les modèles qui ne s'adaptent qu'avec la quantification Q4 (multiplier le budget par ~4 pour la capacité Q4)
- Si un modèle très bien classé est légèrement hors budget, le garder avec une note "nécessite Q4" — ne pas le supprimer silencieusement
Si aucun dispositif n'a été mentionné : ignorer tout filtrage de taille — simplement classer par score de benchmark.
Ensuite : classer par score de benchmark (descendant), garder les 5-8 meilleurs modèles.
Inclure les modèles propriétaires (GPT-4, Claude, Gemini) s'ils apparaissent sur les classements, mais les signaler comme "API uniquement / non auto-hébergeable". Si l'utilisateur a explicitement demandé uniquement des modèles locaux/ouverts, les exclure.
Étape 6 : Sortie
Tableau de comparaison
| # | Modèle | Params | [Benchmark 1] | [Benchmark 2] | Licence | Sur dispositif |
|---|--------|--------|--------------|--------------|---------|----------------|
| ⭐1 | [org/name](https://huggingface.co/org/name) | 7B | 85.2% | — | Apache 2.0 | Oui (fp16) |
| 2 | [org/name](https://huggingface.co/org/name) | 13B | 83.1% | 71.5% | MIT | Q4 uniquement |
| 3 | [org/name](https://huggingface.co/org/name) | 70B | 90.0% | 81.0% | Llama | Trop volumineux |
- Lier les noms de modèles à
https://huggingface.co/<model_id> - Utiliser
—pour les benchmarks où le modèle n'a pas été évalué - Marquer le meilleur choix recommandé avec ⭐
- Valeurs "Sur dispositif" :
Oui (fp16),Q4 uniquement,Trop volumineux,API uniquement
Suivi
Après présentation du tableau, demander à l'utilisateur : "Voulez-vous exécuter [meilleur modèle recommandé] ?"
S'ils disent oui, demander s'ils préfèrent :
- Exécuter localement — demander les détails de leur dispositif s'il n'est pas déjà connu, puis fournir les instructions de configuration appropriées
- Exécuter sur HF Jobs — les pointer vers le guide HF Jobs : https://huggingface.co/docs/huggingface_hub/en/guides/jobs
Gestion des erreurs
- Classement non trouvé : le sauter, noter "classement indisponible" dans la sortie
- Modèle manquant de hub_repo_details : retomber sur l'analyse de la taille à partir du nom du modèle
- Aucun benchmark trouvé pour la tâche : utiliser le tableau de secours établi ci-dessus, ou essayer
hub_repo_searchavecfilters=["<task>"]triés partrendingScore - Tous les classements échouent : retomber sur
hub_repo_searchpour les modèles populaires étiquetés avec la tâche, noter que les résultats sont par popularité plutôt que par score de benchmark