Contrôler un PC avec un LLM : ce que propose vraiment Anthropic
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 :
- Presser une touche ou une combinaison de touches
- Saisir des chaînes de caractères
- Obtenir les coordonnées du pointeur
- Déplacer le pointeur vers des coordonnées
- Effectuer un clic gauche
- Cliquer-déplacer vers des coordonnées
- Effectuer un clic droit
- Effectuer un clic central
- Effectuer un double-clic
- Faire un screenshot
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 :
- Il s'agit d'une interface vers un environnement graphique : pas d'accès à un terminal. Ni d'ailleurs à un menu d'applications : pour en lancer, il faut cliquer sur les icônes du bureau.
- Certaines applications peuvent prendre du temps pour se lancer ou traiter des actions. Il peut donc te falloir attendre et faire des captures d'écran successives pour voir les résultats de tes actions.
- Quand tu veux déplacer le pointeur pour cliquer sur un élément, tu devrais consulter un screenshot pour déterminer les coordonnées de l'élément.
- Si un programme ou un lien sur lequel tu as cliqué ne s'est pas ouvert, essaye d'ajuster la position du pointeur.
- Assure-toi de placer l'extrémité du pointeur au centre de l'élément sur lequel tu veux cliquer.
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 :
- Persistance d'état entre les commandes et les conversations
- Si le chemin fourni correspond à un fichier, la commande view affiche le résultat de cat-n. S'il correspond à un dossier, elle liste les fichiers et dossiers non cachés jusqu'à deux niveaux de profondeur.
- La commande create ne peut pas être utilisée si le chemin spécifié existe déjà en tant que fichier.
- La commande undo_edit revient à la dernière édition effectuée sur le fichier correspondant au chemin renseigné.
L'outil bash est défini ainsi : "exécuter des commandes dans un shell bash". Parmi les instructions transmises au modèle :
- Pas besoin d'échappement XML dans le contenu du paramètre "command"
- Tu peux accéder à des paquets Linux et Python communs via apt et pip.
- Persistance d'état entre les commandes et les conversations
- Pour inspecter une plage de lignes donnée, essayer la commande sed -n
- Exécuter les commandes latentes en arrière-plan
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
Sur le même thème
Voir tous les articles Data & IA