Un développeur a pris un modèle de langage de 350 millions de paramètres, l'a affiné et l'a déployé sous la forme d'un assistant IA pleinement fonctionnel qui s'exécute dans n'importe quel navigateur web moderne — sans appels serveur, sans clés API et sans facture cloud.

Le projet livre les poids du modèle avec une page web statique, permettant à l'agent de choisir des outils, de lier des arguments, de résoudre des références telles que « le deuxième » et de refuser de répondre lorsqu'il manque d'informations — tout en garantissant que vos données restent sur votre propre appareil.

Comment l'agent basé sur le navigateur a été construit

Le point de départ a été la famille LFM2.5 de LiquidAI, plus précisément les variantes de 230 M et 350 M de paramètres.

Au lieu de charger des catalogues de produits ou des tableaux de prix dans le modèle, l'entraînement lui a enseigné des schémas d'interaction. L'agent ne connaît jamais un SKU spécifique ; il apprend à :

  • Choisir l'outil approprié pour une requête donnée.
  • Lier les bons arguments et identifiants à cet outil.
  • Interpréter des références ambiguës (« une douzaine », « le deuxième »).
  • Extraire du texte externe et l'utiliser pour répondre aux questions.
  • Décliner la demande lorsque l'information requise est manquante.
  • Maintenir la conversation sur le sujet.

L'ensemble d'outils est délibérément statique : list_items, get_item, search_knowledge, add_to_cart, remove_from_cart, clear_cart, checkout et navigate. Le gel de la liste empêche le modèle de mémoriser les identifiants d'outils et permet de limiter la taille des données d'affinage.

Trois choix d'ingénierie permettent de garder le système léger :

  1. Liste d'outils figée – Le modèle voit une liste fixe d'actions, il n'a donc pas besoin d'un vaste vocabulaire de noms d'outils.
  2. Le RAG comme outil – La génération augmentée par récupération (RAG) agit comme n'importe quelle autre fonction. L'agent appelle search_knowledge pour récupérer du texte, puis insère ce texte directement dans sa réponse, évitant ainsi un pipeline de récupération distinct qui ajouterait de la latence et une surcharge de mémoire.
  3. Décodage contraint par la grammaire – Pendant la génération, le décodeur suit une grammaire simple qui force la sortie dans une structure d'appel d'outil valide. Cette contrainte élimine le gaspillage de jetons et réduit les commandes malformées.

L'entraînement a utilisé la distillation de données synthétiques. L'auteur a défini 18 recettes d'interaction, chacune décrivant un échange typique entre un utilisateur et un assistant. Un modèle « enseignant » plus large a généré la partie en langage naturel, tandis qu'un script déterministe a produit le format exact d'appel d'outil. La session d'affinage a consommé environ 30 millions de jetons et a tenu sur un seul GPU doté de 16 Go de mémoire.

Pourquoi l'exécution sur l'appareil est importante

  • Confidentialité – Toutes les requêtes de l'utilisateur restent dans la mémoire du navigateur. Aucune télémétrie ne quitte l'appareil, ce qui est crucial pour les requêtes sensibles.
  • Capacité hors ligne – Comme le modèle est mis en cache localement, l'assistant fonctionne sans connexion Internet, ouvrant des possibilités pour le travail sur le terrain ou les déplacements.
  • Coût – La livraison de fichiers de modèles statiques élimine les serveurs d'inférence récurrents alimentés par GPU ou les frais d'API par appel.
  • Accessibilité – La navigation vocale dans des interfaces web complexes devient réalisable sur des appareils peu performants, étendant la portée des applications web aux utilisateurs qui dépendent de technologies d'assistance.

Ces avantages déplacent la question de « Un modèle géant peut-il répondre à cela ? » vers « À quel point un modèle peut-il être petit tout en fournissant une assistance utile ? »

Limitations potentielles

Un modèle de cette taille ne peut pas retenir de faits encyclopédiques. Lorsqu'un utilisateur demande le prix d'un produit spécifique ou un titre de l'actualité récente, l'assistant récupère soit l'information via search_knowledge, soit refuse poliment. Cette conception protège la vie privée mais lie également le système à la qualité et à la fraîcheur de sa source de connaissances externe.

À surveiller ensuite

La démo publique est disponible à une simple URL GitHub Pages, et le code source est ouvertement accessible.

À retenir : En apprenant à un LLM de taille modeste à suivre une grammaire d'outils stricte et en traitant la récupération comme une simple fonction supplémentaire, les développeurs peuvent livrer un assistant IA utile qui vit entièrement dans le navigateur — offrant confidentialité, utilisation hors ligne et coût cloud nul, sans sacrifier les capacités conversationnelles fondamentales.