Voyager, l’agent IA qui joue à Minecraft (4/4)

En mai 2023, une équipe de chercheurs a publié un papier pour présenter Voyager, un agent qui s'appuie notamment sur un LLM pour jouer en totale autonomie à Minecraft. A l'époque marginale, cette approche qui consiste à exploiter le potentiel de l'IA générative en faisant d'un modèle une brique parmi d'autres d'un système est désormais devenue centrale.
Voyager, l'agent IA qui joue à Minecraft
Quelque part dans Minecraft, l'aventure continue...
Dans ces conditions, la relecture attentive du papier et du code mis à disposition à l'époque permet de comprendre comment s'y prendre pour ne pas être dépassé par les développements d'une ingénierie très particulière, visiblement promise à un bel avenir depuis que la croissance des scaling laws semble ralentir, et qu'en conséquence l'industrie cherche à cueillir les low-hanging fruits autrement que par le prompt engineering.
C'est le quatrième et dernier article d'une série. Dans le premier article, Voyager a été présenté dans son principe, de même que les technologies sur lesquelles il s'appuie, et la lecture du code a commencé pour étudier la manière dont Voyager collecte des informations sur l'environnement dans lequel il contrôle le bot - le personnage dans Minecraft. Dans le second article, il a été question de la manière dont Voyager utilise un LLM pour générer la prochaine tâche à faire accomplir par le bot. Enfin, dans le troisième article, c'est la manière dont Voyager utilise un LLM pour générer le code JavasScript qui permet d'essayer de faire accomplir la tâche en question par le bot, puis d'évaluer l'accomplissement de la tâche, et enfin de capitaliser les compétences acquises à cette occasion qui a été étudiée. Désormais que la mécanique d'un agent apparaît clairement, il est possible de prendre de la hauteur pour contempler l'industrie de la production d'agents, laquelle est en pleine expansion.
NB : Ce billet a été rédigé début décembre par un humain et non une boîte de conserve, et sera publié dans un prochain numéro de Programmez!.

Où l'on prend de la hauteur

En 2022, dans leur article MineDojo: Building Open-Ended Embodied Agents with Internet-Scale Knowledge, les auteurs écrivaient qu'il était nécessaire, pour concevoir un generalist embodied agent, de disposer de trois choses :
  • un environnement qui permet de poursuivre un nombre infini d'objectifs ;
  • une gigantesque base de connaissances acquises par avance ;
  • une architecture assez flexible pour permette à l'agent de poursuivre n'importe quel objectif en mettant ces connaissances en actions.
Ils affirmaient alors que "it would be extremely inefficient for an agent to learn everything from scratch through trial and error".
Un an plus tard, avec Voyager, les mêmes auteurs ou presque ont, d'une certaine manière, contredit cette hypothèse puisque la base de connaissances acquises par avance n'existe pas. C'est qu'entretemps, ChatGPT est apparu, et que dans la foulée, les LLMs entraînés sur à peu près toutes les connaissances disponibles sur Internet se sont multipliés comme les petits pains. Dès lors, ces connaissances se sont trouvées incorporées dans les LLMs, et il suffit désormais de les interroger pour non seulement y accéder, mais aussi les exploiter. Bref, au lieu de mettre une base de connaissances acquises à l'avance au cœur du système, autant mettre un LLM.
Cette idée de "harness the world knowledge encapsulated in pre-trained LLMs", pour reprendre les termes des auteurs, n'ira pas sans rappeler au lecteur attentif de la Chronique de l'IA ce qui était évoqué au sujet des progrès de la robotique sous l'effet de l'apparition de l'IA générative. Dans la sixième édition, l'on rappelait les explications de Vincent Vanhoucke, un chercheur de DeepMind, tirée de son excellente rétrospective de la discipline présentée lors du GTC24 de Nvidia : quand les LLMs sont apparus, il pointait, "we suddenly had capabilities like common sense reasoning or understading of the world that had not really been available to us in the past."
Tout l'enjeu est qu'un agent reposant sur un LLM n'en reste pas là, qu'il continue donc d'apprendre au fil de son fonctionnement. C'est que les créateurs de Voyager ont cherché à faire en produisant un "LLM-powered embodied lifelong learning agent". Comme on l'a vu en lisant son code attentivement, Voyager est effectivement un agent apprenant, en ceci qu'il met en œuvre deux mécanismes :
  • il procède par essais et erreurs, réitérant ses efforts pour parvenir à un résultat en tenant compte des erreurs qu'il a pu rencontrer lors d'une tentative : code généré par le LLM lors de l'itération précédente, des messages d'erreurs JavaScript fonctionnelles – les erreurs syntaxiques sont filtrées avant – que son exécution a engendrées, des messages de Minecraft que cette exécution a entraînés, des nouveaux états du bot et de son environnement après cette exécution, et de l'évaluation de l'accomplissement de la tâche par le moyen de cette exécution – la critique générée par le LLM ;
  • il mémorise dans des bases de données vectorielles :
    • les compétences qui lui ont permis d'accomplir des tâches sous la forme du code généré par le LLM, et d'une description de ce code ici encore générée par le LLM ;
    • les questions qu'il a posées au LLM et les réponses que ce dernier y a apportées, questions et réponses qu'il fournit notamment au LLM quand il lui demande ensuite de générer la tâche.
A côté de cela, il faut bien relever que Voyager ne fait pas tout à lui seul :
  • tant que le bot n'a pas accompli au moins 15 tâches, le niveau de difficulté de Minecraft est réglé sur Peaceful – pas de monstres, impossible de mourir de faim, régénération rapide –, après quoi il est réglé sur Easy ;
  • plus généralement, durant tout un tour de chauffe, le LLM n'est pas renseigné sur le biome, l'heure, les autres blocs – ceux que le bot a croisés mais qui ne figurent pas à proximité immédiate ni dans son inventaire –, les créatures alentour, l'état de santé et de satiété du bot, et ne voit de son inventaire que les objets primordiaux, et n'est que par la suite renseigné sur les créatures alentour, puis sur le biome et les autres blocs, et plus tard sur le reste ;
  • un ensemble de compétences est prédéfini, qui sont systématiquement fournies au LLM en plus de celles qui ont été trouvées en court de route, lorsqu'il lui est lui demandé de générer le code pour accomplir la tâche, avec instruction de réutiliser autant que possible les compétences en question ;
  • son code comprend des verrues qui sont le fruit d'expérimentations, notamment :
    • supprimer tout mention à "ores" et "ore" dans une question posée, car cela conduirait le LLM à indiquer qu'il faut utiliser un outil enchanté avec "Silk touch" pour le miner, ce qui ferait récupérer le bloc plutôt que le minerai, interdisant de fabriquer un objet à base de ce minerai ;
    • selon la version de GPT utilisée, modifier la liste des compétences prédéfinies dont il a été question dans le point précédent.
Il ne s'agit peut-être que de coups de pouce, mais il est essentiel de les relever, car ils renseignent sur les limites auxquelles les auteurs de Voyager se sont heurtés.

Pourquoi cet article a-t-il été rédigé ainsi ?

Plutôt que d'être parti bille en tête dans la lecture attentive du code de Voyager, pourquoi ne pas être parti des résultats auxquels elle a permis d'aboutir, et faire machine arrière au fil des précisions ? L'article aurait démarré sur la logique d'ensemble, et l'aurait approfondie jusqu'au niveau de la ligne de code, prenant ainsi moins le risque de perdre le lecteur sur le chemin d'une quarantaine de pages.
L'auteur accueille la remarque, mais la rejette aussitôt. Si le lecteur a atteint cette ligne, sa récompense est d'avoir pu constater le travail auquel il est nécessaire de se livrer pour pénétrer la logique d'un agent, ce qui est indispensable pour cerner l'étendu des possibilités et des limites de ce dernier.
Car tous ceux qui prétendent utiliser un agent sont exposés à un risque considérable, à savoir le caractère imprévisible de ses performances. Quand l'on constate, en lisant le code de Voyager, que le LLM peut être sollicité à répétition car il n'a pas sorti le résultat attendu, et que cela peut même finalement échouer, c'est non seulement l'efficience de l'agent qui doit être interrogée, mais aussi son efficacité.
Or qui parmi ces utilisateurs d'un agent ne se contentera pas de jeter un regard superficiel sur ce dernier, faisant l'impasse sur les ajustements parfois millimétriques auxquels ses créateurs ont dû procéder pour parvenir à le faire fonctionner, et peut-être parfois seulement donner l'illusion qu'il fonctionne ?
De toute manière, sachant qu'un agent repose sur une ou plusieurs IA génératives qui sont des boites noires à fondement probabiliste, comment même ces créateurs pourraient-ils garantir que l'agent fera ce que les utilisateurs attendent qu'il fasse, sinon au plus dans une certaine mesure qu'il n'est peut-être même pas possible de cerner ? Sans doute, il est possible de faire turbiner un LLM sur un sujet en le lui présentant de différentes manières, et se faire ainsi une idée de la mesure dans laquelle il est capable de produire une réponse correcte, mais comment anticiper le fait qu'un LLM peut partir totalement en sucette – style le "Please die" généré par Gemini ce mois de novembre, ou le délire de ChatGPT en février dernier –, sans que rien ne le laisse présager ?
Certes, tout mécanisme est exposé au risque de catastrophic failure, mais ce qui est fondamentalement différent avec l'IA générative, c'est que personne ne peut dire dans quelle mesure, et donc intervenir dans un tel système pour prendre les dispositions de maintenance corrective, ou préventive, ou même prédictive pour le prévenir. Ce n'est pas dans le système, mais autour, que le risque doit être géré, ce qui laisse très mal augurer de l'avenir. Car quelle attention le vendeur d'un agent va-t-il accorder à ce dispositif qui vient le sécuriser, et quelle attention l'utilisateur va-t-il même lui accorder, sachant que comme tout dispositif de prévention, l'on en voit facilement le coût qu'il engendre, mais très difficilement l'économie qu'il génère ? Par ailleurs, ces considérations ne seront-elles pas d'autant plus facilement balayées d'un revers de la main que le discours des éditeurs d'IA générative est que leurs modèles ont des limites, mais que c'est aux utilisateurs de les apprécier : "si même OpenAI n'assume pas ses responsabilités, pourquoi l'assumerai-je ?"
Si l'Humanité a quelque chose à craindre de l'IA à ce jour, ce n'est pas de succomber à la super-intelligence de Skynet, mais à sa propre bêtise : utiliser n'importe comment des agents qui ne sont pas à la hauteur des tâches qui leur sont confiées. Au fond, comme l'auteur de ces lignes l'explique à l'envi dans les entreprises où il intervient, un agent n'est qu'un sous-traitant chez qui vous externalisez : passé la signature du contrat, qui sait sur qui vous allez tomber ? Les déboires de l'externalisation sous l'effet des écarts culturels, de la valse des interlocuteurs, de la logistique défaillante, et que sais-je encore, sont légion, ayant pour conséquence la réinternalisation de tâches, parfois clandestine – avec les moyens du bord, sans reconnaissance aucune –, au prix d'une dégradation hallucinante des conditions de travail.
Dans le fond, ce que cet article anticipe, c'est que pour maîtriser les risques auxquels ils exposent leurs utilisateurs, il va falloir se doter des compétences requises pour autopsier les agents, et de là d'outils spécialement conçus à cette fin. Clairement, il y a un ensemble de points qui doivent d'emblée attirer l'attention dans la mécanique d'un agent, et cet article en a dégagé quelques-uns : les appels réitérés à une IA générative tant que le résultat qu'elle produit n'est pas celui attendu, et les verrues qui visent à aménager le prompt qui lui est soumis en fonction du résultat d'expérimentations cachées. Mais la liste de ces patterns est destinée à s'allonger tandis que l'agent forensics se constituera en discipline, comme c'est inévitable.
En particulier, se posera la question de la traçabilité : comment reconstituer ce qui s'est passé quand un système tel que Voyager est incriminé ? L'on a fait l'impasse sur tout ce qui concerne les checkpoints, et aussi l'affichage de messages au fil de l'exécution. Ces informations peuvent être utiles, mais elles sont très loin d'être suffisantes pour reconstituer avec certitude le fil des événements, et cela pour trois raisons :
  • le fondement probabiliste du système : même quand la température est réglée à zéro, il ne peut être que présumé qu'un LLM va produire le même résultat en réponse à une même demande ;
  • la dépendance à des technologies qui évoluent : le LLM utilisé a toutes les chances d'être exposé via un service accessible sur abonnement sur le serveur d'un éditeur, où il évolue au fil de mises à jour opaques ;
  • la dépendance à un environnement qui évolue : les informations fournies à un LLM ont toutes les chances d'être très nombreuses et changeantes, et pour cette raison de ne pas être mémorisées.
L'avenir dira si pour les besoins de l'enquête, la traçabilité d'agents en charge de tâches critiques fera l'objet d'une régulation particulière. A défaut, il est clair que l'on sera amené à beaucoup conjecturer sur ce qui a pu se passer lorsqu'il s'agira d'analyser les causes d'un accident.

Au fait, Voyager, ça marche ?

Comme précisé au début, l'auteur de cet article n'a jamais exécuté Mineflayer. Le code a simplement été lu, sans jamais pouvoir s'appuyer sur un débogueur, ni même un outil d'analyse quelconque, car ainsi qu'expliqué à l'instant, l'objectif était justement celui-là : lire le code. Dans leur article, les créateurs de Voyager rapportent donc que les performances de l'agent sont supérieures à celle des agents similaires SOTA, mais n'en omettent pas moins de pointer trois limites :
  • le coût : ils expliquent avoir dû mobiliser GPT-4 car GPT-3.5 s'est révélé incapable de générer du code aussi bien, mais que cela a coûté 15 fois plus ;
  • l'imprécision : ils rapportent qu'en dépit du mécanisme itératif, la bonne compétence n'est parfois pas générée ;
  • les hallucinations : ils décrivent des cas où il le bot ne peut accomplir la tâche générée, car cette dernière est tout bonnement impossible.
Comme chacun s'en doute, tout cela n'a pas découragé les afficionados de Minecraft, comme quelques recherches sur l'application de l'IA générative à ce jeu entreprises à l'occasion de la rédaction de cet article ont permis de le constater. L'on en citera trois, qui sont d'autant plus intéressantes qu'elles sont somme toute très différentes :
Au début de l'année, des indépendants ont produit un agent nommé MINDCraft. Les auteurs expliquent avoir entrepris de travailler sur le sujet peu de temps après la sortie de Voyager, mais aussi adopté une autre direction. En effet, plutôt que de faire évoluer le bot seul dans Minecraft, l'idée est de qu'il accompagne le joueur, exécutant les tâches que ce dernier lui confie via le chat : "craft a crafting table", "kill that pig", mais aussi des tâches bien plus complexes comme "build cobblestone house", ce dont le bot s'acquitte étonnamment bien, comme en témoigne une vidéo. Comme le code de Voyager, celui de MINDCraft est en accès libre sur un repo de GitHub.
En septembre dernier, la start-up Altera a fait parler d'elle en produisant Sid, une simulation de 1 000 agents dans Minecraft, fondée sur un système qui n'a pas vocation à fonctionner qu'avec ce jeu. Quelques temps plus tôt, elle avait déployé PlayLabs, un système similaire à MINDcraft puisqu'il permet d'injecter un bot dans Minecraft pour assister le joueur, mais assorti d'une bibliothèque en ligne sur Discord pour récupérer une personnalité pour ce bot – par exemple, BuilderBot, qui se présente comme "A tireless architect dedicated to designing the most beautiful homes".
Enfin, pas plus tard que fin octobre, la start-up Decart a produit Oasis. Ce n'est pas un agent, mais cela mérite d'être mentionné. Présenté comme "A Universe in a Transformer", il s'agit d'une simulation interactive de Minecraft, sur le modèle de celle de Doom qui a beaucoup fait parler d'elle fin août dernier. C'est tout à fait fascinant, car les images sont générées par le modèle, sans donc qu'aucun code ne les génère, et cela en temps réel ; le jeu n'est donc pas programmé, il est véritablement simulé. Cerise sur le gâteau, il est possible de jouer dans Chrome.
Et pour ceux qui s'étonneraient que Minecraft constitue un terrain de jeu privilégié pour tester les progrès de l'IA, l'on citera Jack Clark, auteur de la toujours intéressante lettre d'informations ImportAI, qui rapportait la sortie d'Oasis en ces termes : "People are testing out models on Minecraft because... uh... we do not know how to fully evaluate these things anymore", remarque qu'il faut tout à fait prendre au sérieux, car comme il le souligne dans la foulée, en l'absence de possibilité d'évaluer les capacités d'un agent par des métriques, "the future of the species is now a vibe check". Aussi, à l'autre extrémité du spectre des explications – en amont, plutôt qu'en aval –, l'on citera Jim Fan, chercheur chez Nvidia et l'un des créateurs de Voyager, qui dans une intervention lors de la GTC 24 expliquait que pour concevoir un agent généraliste, il faut trois choses :
  • un environnement ouvert "because the agent complexity is upper bounded by the environment complexity" ;
  • une énorme quantité de données d'apprentissage qui dit comment faire, et avant tout quoi faire de pertinent "because exploration from scratch in such open-ended world is simply intractable" – au passage, rapportant son étonnement devant la quantité et la qualité des données produites par les joueurs de Minecraft, il commente "So one thing I learned is that gamers just got a lot of time to kill. Well, but I'm not complaning, right? Because thanks for the data. Please do more." ;
  • un modèle "scalable enough to convert this large-scale data into actionable insights".
D'où sa conclusion : "this train of thoughts land us in Minecraft"...

Scaling again

Début novembre, The Information (accès libre ici) rapporte que d'après des sources internes, Orion, le dernier modèle en gestation d'OpenAI, n'est pas à la hauteur des attentes : certes, il fait mieux que ses prédécesseurs, mais pas tant au regard du supplément de moyens investis. Aussitôt, les commentateurs s'emballent pour l'idée "the scaling laws are broken", venant alimenter un discours devenu assez anxiogène pour l'industrie depuis qu'elle a été sommée de produire une "killer app" par des analystes financiers, et même des fonds d'investissement, en début d'année pour justifier les sommes astronomiques englouties, comme rapporté dans une précédent chronique.
Toutefois, ce constat technique ne débouche pas, comme le constat financier, sur l'idée qu'une bulle serait sur le point d'exploser. En effet, comme le souligne un article de Reuters publié quelques jours après, OpenAI, Google ou encore Anthropic en tirent simplement la leçon qu'il faut chercher à faire mieux autrement. Ainsi, entraîner le modèle à reformuler la question qui lui est soumise sous la forme d'un raisonnement à suivre avant d'entreprendre d'y répondre en appliquant ce dernier, ce qu'OpenAI rapporte avoir fait avec o1, prétendant par ce moyen lui avoir appris à mieux "raisonner" – l'on fera remarquer que dans son annonce d'o1, OpenAI parle d'apprentissage par renforcement, et jamais d'inférence, ce qui est pour le moins distordre la réalité. Et Reuters de citer Ilya Sutskever, ex-cofondateur d'Open AI – aussi ancien disciple de Geoffrey Hinton, récipiendaire du prix Nobel de physique cette année, qui s'est dit "particularly proud of the fact that one of my students fired Sam Altman" à cette occasion, ce qui est effectivement à mettre à son crédit – pour qui "The 2010s were the age of scaling, now we're back in the age of wonder and discovery once again. Everyone is looking for the next thing.".
Certes, mais il n'en reste pas moins qu'en cette période hivernale, chauds les marrons pour les éditeurs de LLMs. Toutefois, ce n'est peut-être pas plus mal, comme le pointe judicieusement Parmy Olson – que l'on connaît pour un excellent bouquin sur LulzSec que seuls les esprits chagrins auront trouvé trop long – dans une tribune (accès libre ici) pour Bloomberg, expliquant que l'évolution d'une technologie tend plutôt à suivre une courbe en S, la vertu du plateau étant que "companies that have been experimenting with generative AI, and grappling with ways to boost their productivity, now have some time to redesign their workflows and business processes to better capitalize on current AI models".
Dans ces conditions, il ne faut-il pas être surpris de lire dans un autre article que Reuters publie quelques jours après celui précédemment cité, que les grands éditeurs de LLMs entreprennent par ailleurs d'explorer une nouvelle voie, notamment pointée par Sam Altman (accès libre ici) :
Like Google and Anthropic, OpenAI is now shifting attention from the size of these models to newer use cases, including a crop of AI tools called agents that can book flights or send emails on a user's behalf. “We will have better and better models,” Altman wrote on Reddit. “But I think the thing that will feel like the next giant breakthrough will be agents.”
Comme toujours, les propos de celui qui rivalise avec Jensen Huang pour le titre de bonimenteur en chef de l'IA sont à prendre avec des pincettes, mais il faut bien constater que ce concept d'agents est devenu d'actualité, ne serait-ce que parce que c'est là-dessus que trouvent à se développer des start-ups, à l'ombre des éditeurs de LLMs dont elles utilisent les produits quand ce n'est pas même en cherchant à leur faire de l'ombre – par exemple, Deepgram qui propose de "build voice AI into your apps", dont le cofondateur et CEO Scott Stephenson explique dans un récent entretien accordé à TWMIL qu'ils font tout, de l'API à l'infrastructure en passant par le modèle.
Finalement, revenant sur ces difficultés que les grands éditeurs de LLMs rencontreraient désormais pour ne pas faire mentir les scaling laws, les animateurs de Last Week in AI invitent à plus que tempérer le jugement. En fait, c'est même avec enthousiasme qu'Andrey Kurenkov explique avoir "the feeling over the last couple months that we're seeing with agentic AI, with agents, something akin to what you've seen with other paradigms of AI like video generation, image generation, where we're seeing the takeoff". C'est qu'ainsi que son comparse Jeremie Harris le souligne, les voies à explorer pour sortir de l'ornière apparaissent nombreuses, de l'accélération de l'inférence à la génération de données d'apprentissage, en passant par la conception de l'IA par elle-même. Somme toute, c'est un peu comme si l'on venait de faire tomber l'arbre qui cachait la forêt : il va enfin être possible de parler de ce que l'IA permettrait de faire concrètement, au-delà de prédire le prochain token.

Les agents en pratique

C'est bien l'avis d'Andrew Ng, qui s'est fendu d'une intervention sur le sujet à l'occasion de la BUILD 2024, une conférence "where AI gets real" qui s'est tenue ces jours derniers – rien donc à voir avec la Build de Microsoft, qui est plutôt celle où l'IA devient surréaliste, si l'on se souvient de la présentation de Recall lors de la dernière édition.
Toujours intéressant à suivre, le célèbre cofondateur de Google Brain expose sa vision des opportunités actuelles dans le domaine de l'IA, pour pointer une nouvelle couche dans l'AI stack que constitue l'"Agentic Orchestration Layer", bref les agents. Il présente un slide qui mérite d'être repris, car il permet de faire rapidement comprendre à tout profane en quoi consiste la nouveauté, ce que le lecteur de ces lignes voudra éventuellement faire à l'occasion. Pour faire simple donc, la grosse nouveauté est qu'il ne s'agit plus de demander au LLM de produire un résultat en une fois, mais de le faire itérer jusqu'à ce qu'il estime être parvenu à un résultat satisfaisant :
En quoi consiste l'IA agentique selon Andrew Ng
En quoi consiste l'IA agentique selon Andrew Ng. (source)
Toutefois, ce n'est qu'un des aspects d'un système agentique. En effet, Andrew Ng dégage quatre design patterns pour un tel système, qui sont autant de voies à explorer parallèlement pour tirer le maximum de cette nouvelle approche : la réflexion, l'utilisation d'outils, la planification et la collaboration entre agents. Autrement dit, un tel système doit être capable de reprendre son ouvrage, mais aussi de décider quand il est opportun de recourir à des outils externes et de le faire, d'élaborer un plan d'action – l'incontournable Chain-of-Tought, notamment –, et de collaborer avec d'autres agents – ce qui recoupe assez l'idée de recourir à des outils, les agents ayant vocation à être spécialisés, mais qui, s'agissant d'agents, soulève l'enjeu de leur orchestration.
Aussi, un concept important, voire même central, est celui de workflow. C'est bien cette boucle qui figure sur le schéma, mais elle peut concrètement se traduire par des réalisations bien plus complexes. Pour que ce soit plus concret, Andrew Ng fait une démonstration de Quinn, un moteur de recherche expérimental de séquences vidéo à partir d'un texte, comme par exemple "grey wolf at night".
Dans Quinn, le système génère le code qui permet de répondre à la question, par exemple pour compter les joueurs dans une séquence vidéo d'un match de foot. Ces informations sont stockées sous forme de métadonnées associées à la séquence vidéo, lesquelles peuvent être réutilisées pour répondre à des requêtes dans le moteur de recherche. Quinn est en ligne, pour ceux qui veulent tester.
Dans le fond, rien de nouveau en comparaison de ce qui a été vu en lisant le code de Voyager, où les agents Curriculum, Action, Critic et Skill sont orchestrés pour travailler ensemble en s'appuyant sur un LLM et des bases de données vectorielles, mais cela montre que les principes peuvent déboucher sur bien des réalisations.
D'ailleurs, comme il a été question de TWIML, le sujet n'a certainement pas échappé à Sam Charrington. Plusieurs interlocuteurs ont été invités ces derniers temps à venir y présenter leurs travaux sur les agents, dont la seule énumération permet de comprendre qu'ils fleurissent dans tous les domaines : Sunil Mallya en matière de DevOps, Shreya Shankar en matière d'analyse de données, et Scott Stephenson, déjà mentionné, en matière de vocal.
Tous ces entretiens sont intéressants à écouter, plume à la main pour prendre des notes, car ceux qui témoignent sont du genre chercheurs qui trouvent, comme l'on en cherche, plutôt que chercheurs qui cherchent, comme l'on en trouve. Dès lors, il leur arrive plus d'une fois de relever un point de grand intérêt pour qui entreprend de créer son propre système agentique. Morceaux choisis, sans donc prétendre épuiser toute la richesse des propos :
  • Sunil Mallya, à propos de l'incapacité des LLMs à traiter correctement les séries temporelles, ce qui implique de les traduire en texte :
    I have this theory is, like, I call it The Sun Cost Fallacy of LLMs where LLMs are so good and have done so and so close to, you know, breakthroughs with like numbers that we're like "Hey we're not going to go back and fundamentally rethink that we need a new tokenizer something that understands numbers fundamentally.
  • Shreya Shankar, à propos de la manière dont l'utilisateur d'un système agentique a tendance à reformuler sa demande :
    Humans have no idea how to write the prompt until they see the initial output. They have to see what the llm came up with the first time that they wrote the prompt [...] You can't you have to have a human in the loop here because if a human is seeing the intermediate and would do something differently than what the system will do, then already you're not aligned with the intent anymore. [...] The more humans iterate the more it diverges from what the system actually would do if you took them out of the loop.
  • Scott Stephenson, à propos des petits progrès qui font une grosse différence dans l'interaction avec un agent :
    When you're talking about like a call center agent, like an AI agent, if it keeps mispronouncing your name over and over, you're going to get irritated by that, you know. So these little things that seem really tiny but actually what it is, it's... It used to be an open loop before and now you can have a closed loop feedback right in the conversation.
Tous ces cas d'usage sont fort intéressants à découvrir, mais pour l'économie du propos, et parce qu'il concerne la possible automatisation d'une activité dans l'informatique, l'on retiendra celui qui concerne DevOps. Ici, il s'agit de pouvoir traiter automatiquement le massif volume de données d'observations générées par une infrastructure afin de déterminer les causes d'un incident – logs, stack traces, et autres.
Comme ne manque pas de le pointer Sam Charrington, l'un des aspects les plus étonnants du système agentique est qu'il repose sur un modèle qui a été entraîné à partir de telles données : "what we are modeling is that pain that the machines are expressing, so it's a sort of English but it's not really", explique Sunil Mallya, qui rajoute que le modèle n'est pas seulement entraîné sur des données trouvées sur le Web, mais aussi dans une "chaos gym" pour lui permettre d'associer des causes d'incident au signaux qui résultent de ces derniers.
Au passage, il faut relever que cette idée d'entrainer le modèle, et même au-delà le système agentique, dans une simulation, c'est à quoi travaillent aujourd'hui les créateurs de Voyager qui cherchent des applications dans la robotique, comme le montre Jim Fan dans son intervention lors de la GTC 24, déjà citée :
Dans Isaac Lab, le robot est entraîné dans une simulation du monde réel
Dans Isaac Lab, le robot est entraîné dans une simulation du monde réel. (source)
Concrètement, Il n'est guère douteux que toutes les réalisations qui viennent d'être évoquées s'appuient sur les technologies croisées en lisant le code de Voyager, notamment l'incontournable LangChain. Cela permet de faire le lien avec un autre entretien de Sam Charrigton avec Harrison Chase, confondateur et CEO de LangChain, justement consacré aux bulding blocks des systèmes agentiques – les briques, dira-t-on.
Bien placé, et de longue date, pour témoigner des tendances de l'industrie, Harrison Chase se fend d'une petite rétrospective tout à fait intéressante. Pour lui, l'intérêt pour les systèmes agentiques remonte à mars 2022, avec la publication du papier ReAct: Synergizing Reasoning And Acting In Language Models, dans lequel des chercheurs expliquent qu'il est possible d'éviter les hallucinations et les erreurs, tout en produisant un "raisonnement" plus intelligible, en combinant raisonnement et action – pour reprendre leur exemple introductif, ouvrir un livre de recettes de cuisine pour trouver l’idée d’un plat à cuisiner. En fait, il s’agit de combiner le meilleur de deux mondes, celui où l’on utilise une technique telle que Chain-of-Thought pour demander au LLM de "raisonner", mais qui ne garantit pas contre les hallucinations car le "raisonnement" s’appuie sur une connaissance opaque qui n'est pas ancrée dans l’interaction avec le monde réel, et celui où l’on se contente de faire parvenir des données sur le monde réel converties en texte au LLM, pour lui demander d’agir en conséquence un dispositif, sans lui demander de « raisonner » au-delà de cette étape :
Comparaison entre les techniques de prompting et ReAct
Comparaison entre les techniques de prompting et ReAct. (source)
Fin novembre, ChatGPT déboule et suscite l'engouement que l'on sait, ce qui débouche sur l'apparition d'AutoGPT en mars 2023, soit un an après ReAct. AutoGPT est le premier système qui propose à l'utilisateur de créer un agent à partir d'une description de ce qu'il doit être et de ce qu'il doit faire, description qui est passée à un LLM capable d'accéder à des outils comme la recherche sur le Web pour s'exécuter – ce qui n'aura pas manqué d'inspirer OpenAI pour introduire les GPTs en novembre suivant, l'on suppose.
Toutefois, explique Harrison Chase, la lenteur et surtout la propension des agents d'AutoGPT à commettre des erreurs fait retomber le soufflé, et durant l'été, le scepticisme gagne du terrain. Il faut attendre début 2024, avec la sortie de plusieurs produits à base de système agentique – dont Elastic AI Assistant pour équiper les acteurs de la sécurité informatique, conçu en partenariat par Elastic et LangChain –, pour que le sujet ait de nouveau le vent en poupe. Ce qui fait la différence, selon Harrison Chase, c'est que l'architecture de ces systèmes place le LLM beaucoup plus sous contrôle : "I think that's the commonality that a lot of these agents has is they're very like workflow based", il conclut, en précisant qu'il n'est même pas certain que dans tous les cas de figure, le worflow conduise le système à faire appel à un LLM. De ce fait, un enseignement qu'en tire le CEO de LangChain, c'est que les agents font surtout leurs preuves dans des activités très "workflow based", pour autant qu'il soit "reasonably" – ce tempérament a certainement son importance – possible de décrire le workflow dans le prompt ou dans la "cognitive architecture" du système - après le prompt engineering, voilà donc encore une nouvelle compétence - : répondre aux questions de clients, enrichir des données commerciales avec d'autres trouvées sur le Web, etc.
Sur quel avenir ouvrent ces développements ? Une critique que Sam Charrington ne manque pas de relayer, c'est que désormais bien conscients des limites des LLMs, mais n'en observant pas moins qu'elles sont régulièrement repoussées, les concepteurs de systèmes agentiques semblent faire le pari que les LLMs s'améliorant, leurs systèmes qui reposent dessus s'amélioreront dans la foulée, si bien qu'il est raisonnable d'en sortir rien que pour se positionner : "we're not really building for the LLMs as they are today, we're building for like GPT 5 or like the version after that, like the point is to learn and grab some land and kind of build some capability and hope that the LLMs catch up".
Le problème n'apparaît pas seulement que ce serait au détriment de leurs clients – d'où le fait que cette posture est critiquée. Il est aussi que les progrès des LLMs pourraient non pas permettre enfin à ces systèmes agentiques de fonctionner, mais tout simplement les frapper d'obsolescence en se montrant capable de faire directement ce à quoi ces systèmes prétendent être nécessaires pour que les LLMs le fassent : "the next version of GPT-X might not need the whole agent architecture in order to do the thing that you're trying to do: it might just be able to do".
A quoi Harrison Chase finit par répondre en bottant en touche, mais de manière assez astucieuse. Il fait référence aux propos tenus par un confrère :
I think there was a good podcast that the CEO of Claro was on, and he was basically saying like « a lot of our internal tooling we built, maybe we could have bought some of it (the the AI specific internal tooling), but we learned so much from that, that even if we don't really need this, we'll go buy it now ». Like they accumulated all that knowledge that's going to be valuable in the future.
L'avenir dira...

Mais de quoi qu'on parle ?

A un moment ou un autre en lors de ses récents entretiens avec des spécialistes du sujet, Sam Charrington pose généralement la question de savoir comment son invité définit le concept d'agent. En fait, l'on comprend que c'est devenu une running joke, tant il ne manque jamais de rappeler avec un sourire moqueur que le terme est y utilisé pour qualifier un peu tout et n'importe quoi dans le milieu – et que dira-t-on du grand public qui ne manque jamais de mordre à l'hameçon du marketing, mais l'on verra si Raphaël Enthoven nous pond L'Agent artificiel un jour prochain...
Ce qui ressort des réponses, c'est qu'il faut plutôt parler de système agentique que d'agent, et par ailleurs considérer le degré auquel ce système est agentique. Lors d'un entretien, Arvind Narayanan s'attarde assez longuement sur le sujet. Et pour cause, n'est-il pas co-auteur de l'indispensable AI Snake Oil, ouvrage d'utilité publique en ceci qu'il déconstruit les idées reçues – dont les conséquences peuvent être désastreuses – sur ce qu'il est possible de faire ou de ne pas faire avec l'intelligence artificielle, pour autant qu'il en soit bien question ? Définir rigoureusement en quoi consiste un agent permet de prévenir bien des erreurs d'interprétation.
Ce n'est pas là-dessus qu'il fallait commencer ce long article sur Voyager, mais c'est certainement par là qu'il est intéressant de le terminer, maintenant que le lecteur est bien renseigné sur ce en quoi un système agentique peut consister au concret. Au fond, qu'est-ce qu'un tel système ?
Lors de l'entretien évoqué, Arvind Narayanan mentionne un papier auquel il a contribué, mais dont Sayash Kapoor, son doctorant co-auteur de AI Snake Oil, est visiblement l'un des principaux co-auteurs : AI Agents That Matter. Les auteurs proposent de qualifier le degré auquel un système est agentique en fonction de trois facteurs :
  • l'environnement : plus ce dernier est complexe, plus le système qui y évolue est agentique ;
  • les interactions avec l'utilisateur : un système qui peut recevoir de instructions en langage naturel et agir de manière autonome est plus agentique ;
  • la conception : un système qui est capable d'utiliser des outils ou de planifier, ou dont le worflow est guidé par un LLM, est plus agentique.
La définition est assez ouverte pour que bien des systèmes en relèvent, mais c'est le principe d'une définition par degré plutôt que par catégorie. La conséquence de son adoption, selon l'auteur du présent article, c'est qu'elle appelle la mise en place de métriques, et plus généralement d'une méthodologie, pour mesurer le degré auquel un système est agentique – l'auteur hésite encore à parler d'agenticité pour ne pas brutaliser le lecteur, mais pense que comme les anglo-saxons parlent désormais d'agenticity pour aller à l'essentiel, il va bien falloir y venir.
Toutefois, le problème avec les agents, c'est non seulement de ne pas savoir de quoi l'on parle, mais qu'en plus, de mal en parler – faire son Raphaël Enthoven, pour ainsi dire. Aussi le vrai mérite d'Agents That Matter n'est-il pas de poser une définition, mais de dresser un certain nombre de constats assez cruels pour certains éditeurs de systèmes agentiques, et d'en tirer des enseignements concrets pour ce qui concerne l'évaluation de tels systèmes.
En effet, considérant la nécessité de mettre en rapport les performances avec le coût – bref, situer les choses sur un diagramme à la Pareto –, les auteurs rapportent les résultats d'expérimentation qui révèlent que certains de ces systèmes ne sont pas plus efficients que ces solutions triviales : se contenter d'un simple zero-shot ; réitérer la demande plusieurs fois – sans la modifier, et température à zéro : ce n'est même pas le "please, please, please give me JSON format or cats are going to die", comme en rit Sam Charrington – ; réitérer mais en accroissant la température ; escalader le modèle.
Parlant de température, c'est donc plutôt la douche froide pour ceux qui ne jureraient plus que par les agents, ce que les auteurs expliquent fort simplement : "since papers proposing new agents haven't adequately tested simple baselines, it has led to widespread beliefs in the community that complex ideas like planning, reflection, and debugging are responsible for accuracy gain." Forcément, ignorer la concurrence, c'est bien le meilleur moyen pour terminer en tête du classement...
Partant, ils préconisent de mettre de l'ordre dans les évaluations, en commençant par bien distinguer l'évaluation d'un système agentique de celle de sa mise en œuvre, les contraintes n'étant pas du tout les mêmes. Un exemple qu'ils donnent est à rapporter, car il écorne une licorne nationale, dont l'on espère qu'elle en tirera les leçons :
For example, Mistral released a figure alongside their latest model, Mixtral 8x22B, to explain why developers should choose it over competitors. It used the number of active parameters as a proxy for cost. From the perspective of a downstream developer, this proxy is misleading. For example, as of June 2024, Mixtral 8x7B costs twice as much as Llama 2 13B on compute provider Anyscale. Yet Mistral's figure shows that it costs about the same because it only considers the number of active parameters.
Sans vouloir rentrer ici dans un débat sur les benchmarks"bench-marketing I would like to say", comme en plaisante Sunil Mallya –, rappelons que c'est sujet qui empoisonne l'industrie depuis l'apparition de ChatGPT, alors qu'elle en a un besoin fondamental, comme pressenti dès un premier article de votre serviteur consacré à la génération de code par le truc. Le lecteur qui veut creuser le sujet est utilement renvoyé aux vidéos de la chaîne AI Explained sur YouTube, qui a fait à juste titre un fonds de commerce de la critique des benchmarks de modèles. Pour s'en tenir aux benchmarks des systèmes agentiques, les auteurs d'Agents That Matter multiplient les mises en garde contre ce qu'ils désignent comme des "shortcuts" – notamment l'overfitting, où l'éditeur d'un système agentique nous la ferait à la Volkswagen –, et l'on ne saurait trop conseiller qui veut déployer un système agentique de faire la lecture intégrale du papier pour en savoir plus.

Total automation

Mais à vrai dire, concevoir un agent n'est-il même pas déjà un exercice dépassé ? La lecture du code de Voyager a permis de constater que l'une des fonctionnalités de base de ce système agentique – adoptons désormais une terminologie rigoureuse – est la génération de code. Mais qu'est-ce que Voyager, sinon du code ? Partant, Voyager ne pourrait-il pas être entièrement généré ?
Le développeur qui a un peu de bouteille sait que le concept de l'outil qui permet de se générer lui-même est une vieille rengaine en informatique, et qu'il a parfois trouvé à s'incarner dans des réalisations notables. Par nostalgie, l'auteur de ces lignes se souvient de la première fois où il a découvert un éditeur d'IHM sur Amiga, dont l'IHM avait justement été générée avec. Toutefois, il s'agit toujours d'un processus incrémental : une nouvelle version est créée à partir de la précédente, jamais from scratch, ni sans intervention humaine. Bref, le passé a montré qu'une forme d'autogénération était possible, si bien qu'il est pertinent de s'interroger : l'IA générative ne peut-elle permettre de faire mieux ?
Voilà une question qui tombe bien, car Sam Charrington – toujours lui, mais bon, quand l'on s'intéresse à un sujet, ce n'est pas Le Gai savoir que l'on va écouter – s'est récemment entretenu avec Shengran Hu sur le thème de la conception automatique de systèmes agentiques. Thésard sous la direction de l'éminent Jeff Clune, Shengran Hu a œuvré à la conception d'un système nommé Automated Design of Agentic Systems – ADAS pour les intimes.
L'entretien est intéressant, mais la lecture du papier s'impose pour bien saisir. Le point de départ de la réflexion est ce constat que "the history of machine learning teaches us that hand-designed solutions are eventually replaced by learned solutions". De fait, plus personne n'ignore que le gros apport du deep learning, c'est que le modèle dégage par lui-même les features des données sur lesquelles il est entraîné, si bien qu'il n'est plus utile de les spécifier – pour autant que l'on parle des mêmes features dans l'un et l'autre cas, style la cautionary tale du tank, mais c'est un autre problème.
Forts de cela, les auteurs font un autre constat, à savoir qu'un système agentique est un assemblage de briques, et que le système et ces briques peuvent être réduits à du code. Quelles sont ces briques ? Il s'agit de techniques qui correspondent à tout ce qui a été rencontré en lisant le code de Voyager au fil de cet article : prompting – comme donner un rôle au LLM –, méthodes de planification et de raisonnement – comme recourir à Chain-of-Thought –, réflexion – comme faire itérer sur la base d'une critique de l'accomplissement d'une tâche –, accès à une mémoire externe – comme récupérer des compétences dans une base de données vectorielle –, d'utilisation d'outil – comme valider la syntaxe du code généré avec Babel –, etc.
Partant, l'idée, est d'explorer l'espace de tout ce qu'il est possible de coder en Python pour en extraire non seulement des briques, mais aussi carrément des systèmes – FM pour "Foundation Models", donc les gros LLMs du marché :
we can define the entire agentic system in code and new agents can be automatically discovered by a “meta” agent programming even better ones in code. [...] Given that most programming languages, such as Python, which we use in this paper, are Turing Complete, searching within a code space theoretically enables a ADAS algorithm to discover any possible agentic systems, including all components such as prompts, tool use, control flows, and more. Furthermore, with recent FMs being increasingly proficient in coding, we can use FMs as a meta agent to create new agents in code for ADAS, enabling novel agents to be programmed in an automated manner.
Vertigineux – et comme toujours dès lors qu'il est question d'exploration d'un espace des possibles en deep learning, condamné à rester mystérieux pour ce qui concerne ce qu'il est réellement possible d'y trouver, ce qui explique le "theoretically" –, mais les auteurs se disent certains de leur coup : "we argue that ADAS may prove to be the fastest path to developing powerful agents, and show initial evidence that learned agents can greatly outperform hand-designed agents". Pour appuyer leurs dires, ils mettent à disposition sur un repo de GitHub le code de Meta Agent Search, dont la description du fonctionnement... ne surprendra pas le lecteur du présent article, désormais bien renseigné sur le sujet grâce à sa lecture attentive du code de Voyager :
The core concept of Meta Agent Search is to instruct a meta agent to iteratively create interestingly new agents, evaluate them, add them to an archive that stores discovered agents, and use this archive to help the meta agent in subsequent iterations create yet more interestingly new agents.
Les auteurs ont notamment évalué les performances Meta Agent Search sur ARC. Pour ceux qui ne connaissent pas Abstracting and Reasoning Corpus, il s'agit d'une batterie de tests élaborée par François Chollet, le fameux créateur de Keras, où il s'agit de deviner comment dessiner une petite matrice à partir d'une autre en s'aidant de quelques exemples. Pour constater plus concrètement en quoi cela consiste, il est possible de s'essayer à résoudre ces tests sur le site de d'ARC Prize – plein de dollars à gagner à qui élaborera une IA qui en sera capable –, c'est très amusant :
Résolution d'un test sur le site d'Arc Prize
Résolution d'un test sur le site d'Arc Prize. (source)
Confronté à des tests de niveau "Public Training Set (Easy)", et s'appuyant sur GPT-4 pour générer et GTP-3.5 pour évaluer, Meta Agent Search a progressivement élaboré un système agentique qui fait mieux que les SOTA produits à la main. Il implique de nombreuses étapes, dont pas moins de cinq Chain-of-Thought produisant autant de réponses qui sont évaluées par trois experts et une critique humaine, etc. :
La conception d'un système agentique par ADAS pour résoudre ARC
La conception d'un système agentique par ADAS pour résoudre ARC. (source)
Le curieux qui se reporte aux annexes pour en savoir plus sur ce résultat ne peut manquer d'être amusé par la lecture du prompt, qui instruit notamment Meta Agent Search d'"imagine the grid visually", alors que tout est à base de texte. Sans doute, tester la capacité d'un LLM à travailler sur des graphiques n'est pas nouvelle – l'on se souvient notamment de dessins en SVG dans Sparks of Artificial General Intelligence: Early experiments with GPT-4 –, mais c'est toujours fascinant...

Conclusion

Commentant les difficultés que les grands éditeurs rencontrent pour ne pas faire mentir les scaling laws, Jeremie Harris, l'un des animateurs du podcast Last Week In AI, fait remarquer que, tout de même, "this idea that you get really good at text auto complete and at a certain point that gives you agentic reasoning capabilities would have been insane just like a year before". Bref, peut-être que les capacités des LLMs ne progressent plus aussi vite, mais l'industrie n'en est déjà plus à se contenter de leur demander de générer la réponse à une question : elle en est à "wrapping things up", c'est-à-dire utiliser le LLM comme une brique de base dans la conception de systèmes complexes.
De fait, comme le lecteur méritant l'aura constaté en explorant le code de Voyager, il reste visiblement bien du potentiel à exploiter avant de sonner le tocsin pour marquer l'entrée dans un nouvel hiver de l'IA. La remarque de Parmy Olson déjà citée (accès libre ici), selon qui ce ralentissement est une opportunité pour trouver le temps de réfléchir à quoi faire avec une IA générative dont les développements ont été si galopants qu'il devenait même difficile rien que de les suivre, est particulièrement juste. L'on rajoutera que cela peut donner l'opportunité à des nouveaux acteurs d'émerger, et donc nous émanciper un peu de la domination devenue vraiment pénible du duo OpenAI / Microsoft, qui cherche à inviter l'IA dans notre quotidien sans grande considération – sinon aucune – pour les risques qui peuvent en résulter.
Car pour finir, c'est bien une opportunité à ne pas manquer cette fois-ci. Si du temps est donné pour se poser, ce doit être aussi pour tirer les leçons d'exemples lamentables tels que l'AI Pin, le Rabbit R1 et autre Recall. Les mises en garde ne peuvent plus être ignorées, qui ont émané aussi bien d'utilisateurs que d'acteurs du milieu. Les systèmes agentiques devront être responsables, donc notamment sécurisés, ou il vaudrait mieux qu'ils ne soient pas. Dans cet esprit, laissons le mot de la fin à Arvind Narayanan, co-auteur d'AI Snake Oil, dans l'entretien déjà cité sur TWIML :
And here's the fundamental paradox with agents. The capability of agents, I think, is already in some ways mind-blowing. You know, if agents could do reliably, in the real world, in the hands of consumers everything that they're capable of, it would truly be an economic transformation, but even if they gonna fail 10% of the time, it's a useless product, because no one wants to have an agent that orders Door Dash to the wrong address 10% of the time, right?
Voyager, l’agent IA qui joue à Minecraft (4/4)