Tous les articles
IA & dev

Llama Windows : brancher Spring AI ou LangChain4j sur un LLM local

Par Elouan Laurent
Ordinateur portable sous Windows posé sur un bureau, poste où faire tourner un LLM en local

Llama Windows : qu'est-ce qui est sorti le 13 octobre 2026 ?

Le 13 octobre 2026, Hugging Face a présenté Llama Windows dans un billet de blog. C'est une application gratuite et open source qui fait tourner llama.cpp depuis la zone de notification de Windows 11. Le code est publié sous l'organisation GitHub de ggml, l'équipe de llama.cpp.

Ce que confirment le billet et le dépôt GitHub, au 15 octobre 2026 :

  • Une app WinUI 3 qui vit près de l'horloge, sans fenêtre dans la barre des tâches.
  • Un modèle en un clic, téléchargé depuis le Hub de Hugging Face. Pas de terminal, pas de compilation, pas de droits administrateur.
  • Un serveur local compatible avec l'API d'OpenAI, sur http://localhost:9931.
  • Une licence MIT, ajoutée seulement dans la v0.12.0 du 10 octobre. Le billet dit juste « free and open source ».
  • Une version 0.x. La dernière release est la v0.12.0.
  • Windows 11 obligatoire. Le manifeste du paquet exige la build 26100, soit Windows 11 24H2. Il existe un paquet x64 et un paquet Arm.

Hugging Face annonce aussi la prise en charge native de Windows on Arm et de la nouvelle puce NVIDIA RTX Spark. C'est une déclaration de l'éditeur : le billet ne publie aucune mesure de performance.

Installer un modèle sans terminal

Le billet décrit quatre étapes :

  1. Télécharger l'app sur llama.app depuis un PC Windows 11. Le dépôt propose aussi les paquets .msixbundle dans ses releases.
  2. Lancer l'app. L'icône du lama apparaît dans la zone de notification, parfois dans le menu des icônes masquées.
  3. Cliquer sur l'icône, choisir un modèle dans « Recommended Models » et le télécharger. Chaque ligne affiche le nombre de paramètres, la taille sur disque et la prise en charge des images.
  4. Charger le modèle, puis ouvrir l'interface web de llama.cpp pour discuter.

Si llama.cpp n'est pas installé, l'app l'installe avec l'installeur officiel. Les modèles arrivent dans le cache standard de Hugging Face (%USERPROFILE%\.cache\huggingface\hub). Un modèle déjà téléchargé par un autre outil Hugging Face ou par llama.cpp sert donc sans nouveau téléchargement.

Le serveur local sur localhost:9931

C'est la partie qui intéresse un développeur. L'app gère un serveur llama.cpp sur le port 9931 par défaut, réglable dans les paramètres. C'est aussi le port par défaut de llama-server lui-même. Il parle le format d'API d'OpenAI.

Le billet donne la commande pour lister les modèles disponibles :

curl http://localhost:9931/models

Notez l'identifiant du modèle chargé : votre code devra l'envoyer à chaque appel. Sur llama.app, l'exemple utilise un identifiant de la forme ggml-org/gpt-oss-20b-GGUF:MXFP4, soit le dépôt Hugging Face suivi de la quantification.

Un point de sécurité compte. Selon les notes de la v0.12.0, le serveur llama.cpp n'a pas d'authentification propre. Ouvert à tout le réseau sans clé, il exposerait toute son API : charger, télécharger, lancer et supprimer des modèles. La v0.12.0 ajoute donc le choix de l'interface d'écoute, avec localhost par défaut. Toute ouverture au-delà de la machine génère une clé d'API de 256 bits et demande une confirmation. Mon conseil : restez sur localhost.

Brancher Spring AI 2.x en changeant l'URL de base

L'idée est simple : votre application parle déjà à OpenAI, vous changez l'adresse. C'est la même astuce qu'avec OpenRouter. Je mets cette configuration dans un profil Spring local, pour ne jamais la livrer en production par erreur :

# application-local.properties
spring.ai.openai.base-url=http://localhost:9931/v1
spring.ai.openai.api-key=
spring.ai.openai.chat.model=<identifiant lu dans /models>

Je n'ai pas exécuté cette configuration. Je l'ai assemblée à partir du billet Hugging Face et du code source de Spring AI 2.0.1. Deux détails viennent de ce code :

  • Le /v1 est obligatoire. Depuis la 2.0, Spring AI s'appuie sur le SDK Java officiel d'OpenAI. Il transmet l'URL de base telle quelle, et l'URL par défaut du SDK se termine déjà par /v1. La doc Spring AI prévient d'ailleurs, à propos d'un autre serveur local compatible OpenAI, qu'il faut parfois ajouter /v1.
  • La clé vide est voulue. Avec une valeur vide, Spring AI passe en mode sans authentification. Le serveur local n'en demande pas.

Lancez l'application avec --spring.profiles.active=local. Le reste du code Spring AI ne change pas. Les appels d'outils et les sorties structurées dépendent en revanche du modèle chargé : le site llama.app les annonce, sans détailler quels modèles les gèrent bien. Si vous suivez le jalon Spring AI 2.1 et son API Responses, la documentation de llama-server liste bien un endpoint /v1/responses. Je ne l'ai pas testé avec Spring AI : le billet Hugging Face ne montre que Chat Completions.

Brancher LangChain4j 1.22

Même principe avec LangChain4j. L'URL par défaut du module langchain4j-open-ai est https://api.openai.com/v1. On la remplace :

ChatModel model = OpenAiChatModel.builder()
        .baseUrl("http://localhost:9931/v1")
        .apiKey("not-needed")
        .modelName("<identifiant lu dans /models>")
        .build();

String resume = model.chat("Résume ce ticket en trois lignes : ...");

Ce code n'est pas exécuté non plus. La valeur not-needed reprend l'exemple Python du billet. Sur localhost, l'app ne protège pas le serveur par une clé : il ne la vérifie donc pas. Avec le starter Spring Boot, la propriété équivalente est langchain4j.open-ai.chat-model.base-url.

Les limites : mémoire, qualité, maturité

La mémoire fixe la taille du modèle. En quantification 4 bits, un paramètre occupe environ un demi-octet. Un modèle de 8 milliards de paramètres pèse donc autour de 4 Go, un modèle de 20 milliards autour de 10 Go. C'est mon calcul, un ordre de grandeur, souvent dépassé : la page llama.app affiche 12,1 Go pour gpt-oss 20B. Il faut y ajouter le cache du contexte, qui grossit avec la longueur des conversations. L'app affiche sa propre estimation de mémoire pour chaque taille de contexte : fiez-vous à elle plutôt qu'à mon calcul.

La qualité n'est pas celle d'une grande API. Je n'ai mesuré aucun modèle local pour cet article, et Hugging Face ne publie aucun comparatif. Un modèle qui tient sur un portable ne remplace pas un grand modèle hébergé sur des tâches longues ou des appels d'outils en chaîne. Pour du développement, des tests d'intégration ou du résumé, il peut suffire. Testez sur vos propres tâches.

L'outil est jeune. Version 0.x, licence ajoutée trois jours avant l'annonce. Les notes de la v0.12.0 reconnaissent aussi qu'un bug désactivait en silence les mises à jour hebdomadaires de llama.cpp depuis le lancement. Selon ces mêmes notes, les mises à jour automatiques restent suspendues tant que le projet n'a pas épinglé l'empreinte de son script d'installation. Au 15 octobre 2026, le code du dépôt n'en contient toujours aucune. Mettez llama.cpp à jour vous-même en attendant.

Windows 11 24H2 seulement. Le paquet officiel exige la build 26100. Un poste Windows 10, ou un Windows 11 resté sur une version plus ancienne, ne peut pas l'installer.

Mon avis : que faire maintenant

Pour un développeur Java sous Windows 11 24H2, Llama Windows supprime la corvée d'installation. Je l'installerais pour trois usages. Développer sans clé d'API. Faire tourner des tests d'intégration sans facture. Travailler sur des données qui ne doivent pas quitter le poste.

Concrètement, cette semaine :

  1. Installez l'app et chargez le plus petit modèle recommandé qui accepte vos cas d'usage.
  2. Ajoutez un profil local à votre projet Spring AI ou LangChain4j, avec l'URL http://localhost:9931/v1.
  3. Rejouez 10 à 20 prompts réels de votre application, et comparez les réponses à celles de votre fournisseur actuel.

Pour un CTO, la question n'est pas « local ou cloud », mais « quelles tâches tolèrent un petit modèle ». Ce test le dit en une demi-journée.

Vous voulez mettre en place ce profil local et ce jeu de prompts sur votre projet Java / Spring Boot ? Je développe sur cette stack depuis 2015. Réserver un appel découverte de 30 minutes pour cadrer le test.

À lire ensuite