smolagents : une petite bibliothèque où le modèle écrit du code pour agir

Résumé

Une bibliothèque d'agents volontairement petite : environ mille lignes de logique centrale et une seule idée directrice. Au lieu d'émettre des appels d'outils structurés, le modèle écrit un court morceau de code que la bibliothèque exécute et dont elle rend le résultat. Moins d'étapes, moins d'appels, et une source assez courte pour être lue.

Recommander
Nom
smolagents
Version
v1.26
Tarif
Gratuit
Open source
Open source
Système
WindowsmacOSLinux
Mis à jour
2026-10-26 22:00

Relier un grand modèle à un travail réel demandait autrefois de traverser un moment les abstractions d'une bibliothèque d'orchestration : définir des nœuds, décrire des outils, câbler les transitions. Le temps que quelque chose tourne, la moitié de l'enthousiasme était passée dans le câblage. La bibliothèque dont il est question ici prend la position inverse, et cette position est tout l'intérêt : un agent n'a pas besoin d'un cadre, il a besoin d'un moyen d'agir.

smolagents est une petite bibliothèque libre, environ un millier de lignes de logique centrale, publiée par l'équipe autour de laquelle gravite une bonne partie de cet écosystème. Sa thèse tient en une phrase : le modèle n'a pas à apprendre un format spécial pour appeler des outils. Laissez-le écrire du code, dans le langage où il est déjà le meilleur, et exécutez ce code.

Un agent qui agit par le code

Penser en code plutôt que remplir un formulaire

La disposition habituelle demande au modèle d'émettre une instruction structurée : quel outil, quels arguments, dans une forme fixe que le cadre sait analyser. L'alternative proposée ici est un fragment de Python exécutable, que la bibliothèque lance et dont la sortie revient au modèle pour qu'il poursuive son raisonnement. Le code intègre boucles, conditions et appels imbriqués, si bien qu'une tâche en plusieurs étapes qui aurait exigé trois allers-retours structurés tient souvent dans un seul petit script.

Les chiffres publiés avec cette approche suggèrent environ un tiers d'étapes et d'appels de modèle en moins par rapport à la variante structurée sur des tâches comparables. Pour tout ce qui est facturé à l'appel, ce n'est pas une erreur d'arrondi, c'est la différence entre une expérience qu'on peut relancer souvent et une qu'on ne peut pas se permettre. Déclarer une capacité est tout aussi simple : une fonction ordinaire, une description claire, et l'agent décide seul du moment de l'utiliser. Pas de code de collage, pas de séquence d'appels écrite d'avance.

Un outil déclaré comme une fonction ordinaire

Le modèle, c'est votre décision

La bibliothèque reste neutre vis-à-vis des modèles, ce qui est l'une de ses propriétés les plus confortables. Un service d'inférence hébergé, un fournisseur commercial joint derrière une couche de routage ou un modèle qui tourne en local sur votre machine ont la même forme du point de vue de l'agent, et changer revient le plus souvent à modifier une ligne d'initialisation plutôt qu'à réécrire la logique.

Ce que le modèle sait faire fixe le plafond. Mieux il écrit du code, mieux ce style fonctionne, un point que la communauté répète et qu'il vaut la peine de prendre au sérieux avant d'adopter le schéma : un agent qui agit en écrivant du code hérite à la fois des forces et des faiblesses de la capacité de programmation de son modèle.

Ce qui s'exécute, et où

Générer du code puis le lancer soulève la question évidente, et le projet y répond sans atermoyer. L'exécuteur local sert au développement et au débogage ; ce n'est pas une frontière de sécurité. Tout ce qui compte devrait tourner à l'isolement, et il existe plusieurs moyens d'y arriver : des bacs à sable hébergés, ou un conteneur que vous contrôlez vous-même, choisi par un paramètre au moment de définir l'agent.

Deux autres garde-fous sont sensés. Le code produit ne peut utiliser par défaut que les modules standard du langage, et les paquets tiers doivent être autorisés explicitement, ce qui empêche d'importer distraitement quelque chose qui atteint le réseau. Si le code échoue, l'agent lit l'erreur et réessaie avec une correction, et le nombre de tentatives est plafonné par une limite d'étapes volontairement basse, de sorte qu'un agent perplexe ne tourne pas indéfiniment à vos frais.

Exécution dans un bac à sable

L'avantage d'être à l'intérieur d'un écosystème

Être produit par l'équipe derrière une grande communauté de modèles apporte un avantage difficile à copier : un outil ou un agent terminé peut être publié dans cette communauté et récupéré par quelqu'un d'autre comme une dépendance, et une application de démonstration hébergée peut être confiée entière à un agent comme un seul outil. En dehors de cet écosystème, des outils venus d'un protocole ouvert et d'un autre cadre répandu peuvent être raccordés, et les entrées ne se limitent pas au texte : images, vidéo et son sont pris en charge.

Pour qui veut comprendre le fonctionnement des agents, la propriété la plus précieuse est la lisibilité. Mille lignes, c'est assez court pour diagnostiquer un problème en lisant la source au lieu de se battre contre des couches d'abstraction. Cette transparence à cette échelle, l'efficacité de l'action par le code et la liberté de changer modèle et outils à volonté forment ensemble un point de départ étonnamment commode.

À qui cela convient

Aux chercheurs qui veulent faire varier une pièce et laisser le reste fixe ; aux développeurs qui préfèrent un agent à l'intérieur d'un programme existant plutôt qu'une nouvelle application construite autour ; et à tous ceux qu'ont agacés des cadres dont les abstractions coûtent plus qu'elles n'économisent. C'est gratuit et libre, et mille lignes, c'est assez peu pour en venir à bout en un après-midi.

smolagentsTéléchargement
Systèmes pris en charge : Windows macOS Linux