Contrôler un PC avec un LLM : ce que propose vraiment Anthropic
Publié par Clément Bohic le - mis à jour à
Anthropic ouvre, en bêta publique, la possibilité d'utiliser son LLM Claude pour contrôler des ordinateurs. Comment se présente cette fonctionnalité ?
Ne plus adapter les outils aux modèles, mais les modèles aux outils ? Anthropic évoque un tel changement de paradigme à l'heure de doter ses LLM de capacités de contrôle d'environnements desktop.
Ces capacités sont disponibles en bêta publique sur l'API. Elles concernent pour le moment le plus puissant des modèles d'Anthropic : Claude 3.5 Sonnet.
Ce dernier ne manipule pas directement les ordinateurs : il le fait par l'intermédiaire d'outils dont les résultats sont soumis à validation. Pour commencer, Anthropic en a conçu trois, nommés computer, text_editor et bash.
L'outil computer, coeur du réacteur
L'outil computer est ainsi défini : "utiliser une souris et un clavier pour interagir avec un ordinateur, et faire des captures d'écran". Par cela, il faut entendre :
Il est nécessaire de fournir au modèle la définition de l'écran sur lequel il doit travailler. On peut éventuellement lui communiquer le numéro de l'écran (applicable aux environnements X11). Anthropic conseille de ne pas envoyer de captures d'écran de résolution supérieure à 1366 x 768 pixels, pour éviter les problèmes liés au redimensionnement des images (dimininution de la précision du modèle et augmentation de la latence).
Dans la définition de l'outil, certains éléments sont précisés au modèle :
Un éditeur de texte et un shell bash
L'outil text_editor est défini ainsi : "visualiser, créer et éditer des fichiers". Il gère plus précisément les commandes view, create, str_replace, insert et undo_edit. Entre autres éléments précisés au modèle :
L'outil bash est défini ainsi : "exécuter des commandes dans un shell bash". Parmi les instructions transmises au modèle :
Une boucle agentique et un prompt système spécifique
Dans les requêtes API, on peut demander à Claude d'utiliser n'importe lequel de ces outils ou bien un en particulier. Le modèle examine alors, en fonction du prompt utilisateur, s'il est effectivement approprié de s'en servir. Auquel cas il génère lui-même une requête exécutable sur l'environnement de bureau, qu'on aura isolé dans un conteneur ou une VM. Un bloc tool_result permet de communiquer le résultat de l'exécution. Si celle-ci échoue ou que l'objectif n'est pas pleinement atteint, on entre dans une boucle agentique jusqu'à ce que Claude achève sa tâche et le signale à l'utilisateur.
Anthropic fournit une implémentation de référence avec de quoi créer un conteneur Docker. Elle contient une boucle agentique utilisant l'API Anthropic (éventuellement sur Bedrock ou Vertex) et une app Streamlit pour interagir avec cette boucle.
Lorsqu'on exploite ces outils, un prompt système spécifique est généré en complément au prompt système global. Il s'apparente à celui généré pour l'usage d'outils externes (interpréteur de code, navigation web...), mais commence ainsi : "Tu as accès à un ensemble de fonctions que tu peux utiliser pour répondre à la question de l'utilisateur. Cela inclut l'accès à une sandbox. Tu n'as actuellement pas la capacité d'inspecter des fichiers ou d'interagir avec des ressources externes, sauf en invoquant les fonctions ci-dessous."
Vu les risques impliqués, on appliquera le principe du moindre privilège à l'environnement contrôlé. On évitera par ailleurs de donner au modèle l'accès à des données sensibles de type logins. On pourra aussi limiter l'accès Internet à une liste blanche de domaines. Et soumettre à révision humaine les décisions susceptibles d'avoir des conséquences importantes, tout comme celles qui nécessitent un consentement éclairé.
Le système n'est pas invulnérable à l'injection de prompts. Claude peut en effet suivre des commandes qu'il trouve sur des images ou des pages web, même si elles entrent en conflit avec celles de l'utilisateur.
Anthropic estime toutefois qu'il valait mieux doter dès à présent son LLM de ces capacités, plutôt que de les expérimenter ultérieurement sur des modèles qui présenteront un niveau de risque supérieur.
Les requêtes sont au même prix que celles destinées à invoquer des outils externes. En fonction de l'option demandée, le prompt système spécifique fait 466 ou 499 tokens. Chaque outil implique des tokens d'entrée supplémentaires : 683 pour computer, 700 pour text_editor et 245 pour bash.
Claude a fait l'objet d'un affinage spécifique sur l'usage de ces outils, afin de le dissuader d'aller générer et poster du contenu sur des réseaux sociaux, d'enregistrer des noms de domaines ou d'interagir avec des sites gouvernementaux.
Illustration générée par IA