Swift-HuggingFace : le nouveau client complet pour Hugging Face en Swift, avec authentification fluide, téléchargements fiables et partage de cache avec Python
Hugging Face annonce aujourd’hui swift-huggingface, une nouvelle bibliothèque Swift complète pour interagir avec le Hugging Face Hub. Disponible dès maintenant en tant que package indépendant, elle remplacera prochainement l’implémentation actuelle du HubApi dans swift-transformers. Ce projet répond directement aux retours de la communauté après la sortie de swift-transformers 1.0, notamment concernant la fiabilité des téléchargements, l’expérience développeur et l’interopérabilité avec l’écosystème Python. Le cœur de swift-huggingface repose sur une architecture moderne et robuste. Une des grandes améliorations est le système d’authentification via le pattern TokenProvider, qui rend explicite la source des identifiants. Il supporte plusieurs scénarios : détection automatique des tokens via des variables d’environnement (comme HF_TOKEN), des fichiers de configuration ou le Keychain, idéal pour les applications de production. Cela suit les conventions du client Python huggingface_hub, permettant une transition fluide si l’utilisateur a déjà utilisé hf auth login. Pour les applications orientées utilisateur, swift-huggingface intègre une implémentation complète d’OAuth 2.0. Grâce à HuggingFaceAuthenticationManager, les développeurs peuvent facilement gérer la connexion des utilisateurs via le navigateur système, avec un stockage sécurisé des tokens dans le Keychain, une actualisation automatique et une déconnexion sécurisée — sans gestion manuelle du cycle de vie des jetons. Les téléchargements de modèles sont désormais fiables, avec suivi de progression précis, support de la reprise après interruption et gestion intelligente du cache. Les fonctions downloadFile et resumeDownloadFile permettent de reprendre un téléchargement interrompu grâce à des données de reprise persistantes. Pour les répertoires complets, downloadSnapshot télécharge uniquement les fichiers correspondant à des critères donnés (ex. : *.safetensors), en suivant les modifications via le suivi de métadonnées, évitant les téléchargements redondants. Un point clé : swift-huggingface utilise une structure de cache compatible avec Python, localisée par défaut dans ~/.cache/huggingface/hub. Cela permet un partage direct du cache entre applications Swift et Python, avec prise en charge des variables d’environnement (HF_HUB_CACHE, HF_HOME) et des verrous de fichiers (flock(2)) pour éviter les conflits multi-processus. Par rapport à l’ancien HubApi de swift-transformers, qui manquait de suivi de progression et de reprise, swift-huggingface repose sur URLSession avec une gestion rigoureuse des délégués, des données de reprise et des métadonnées. L’API est similaire mais bien plus fiable et transparente. Au-delà du téléchargement, swift-huggingface offre un client complet pour interagir avec le Hub : liste des modèles tendance, récupération des détails d’un modèle, gestion des collections et discussions. Elle inclut également un client d’inférence (InferenceClient) pour accéder à des modèles via des fournisseurs comme Hugging Face Inference, permettant par exemple de générer des images à partir de texte avec des modèles comme FLUX.1-schnell. À venir : intégration avec swift-transformers (pull request en cours), et support du stockage Xet pour des téléchargements plus rapides grâce à la déduplication par blocs. La bibliothèque est disponible via Swift Package Manager depuis la version 0.4.0. Les développeurs sont invités à tester le package, à fournir des retours et à contribuer à son amélioration. Ce projet est le fruit des suggestions de la communauté — une reconnaissance pour ceux qui ont fait vivre le projet.
