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!.
Continuer la lecture de "Voyager, l’agent IA qui joue à Minecraft (4/4)"
Voyager, l’agent IA qui joue à Minecraft (4/4)

Voyager, l’agent IA qui joue à Minecraft (3/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 troisième 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. Désormais, il est possible d'étudier comment cet agent utilise un LLM pour génèrer le code JavaScript qui permet d'essayer de faire accomplir cette tâche par le bot, puis évaluer l'accomplissement de la tâche, et enfin capitaliser les compétences acquises à cette occasion.
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!.
Continuer la lecture de "Voyager, l’agent IA qui joue à Minecraft (3/4)"
Voyager, l’agent IA qui joue à Minecraft (3/4)

Voyager, l’agent IA qui joue à Minecraft (2/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 deuxième 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. Désormais, il est possible d'étudier la manière dont Voyager utilise un LLM pour générer la prochaine tâche à faire accomplir par le bot.
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!.
Continuer la lecture de "Voyager, l’agent IA qui joue à Minecraft (2/4)"
Voyager, l’agent IA qui joue à Minecraft (2/4)

Voyager, l’agent IA qui joue à Minecraft (1/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 à Minecraft de manière autonome. 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 premier article d'une série. Après avoir présenté Voyager dans son principe, et les technologies sur lesquelles il s'appuie, la lecture du code commence avec une partie assez aride mais nécessaire, à savoir la manière dont Voyager collecte des informations sur l'environnement dans lequel il contrôle le bot – le personnage dans Minecraft.
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 le HS n° 17 de Programmez! consacré à l'IA.
Continuer la lecture de "Voyager, l’agent IA qui joue à Minecraft (1/4)"
Voyager, l’agent IA qui joue à Minecraft (1/4)

Utiliser le display « grid » de CSS

Comme chacun sait, le mode d'affichage d'un élément HTML se contrôle via la propriété CSS display.
Utiliser le display grid en CSS
Depuis fort longtemps déjà, ce mode peut être une des deux variantes définie dans la spécification du module Grid de CSS : grid ou inline-grid. Cela a permis d'éradiquer les <table>, <tr> et autres <td>.
A l'occasion du retour sur le développement d'une application Web laissée en chantier depuis bien trop longtemps, l'auteur de ces lignes a mis en ordre des notes sur l'utilisation de ce mode d'affichage. Dès lors, pourquoi ne pas en faire profiter tout le monde ?
Continuer la lecture de "Utiliser le display « grid » de CSS"
Utiliser le display « grid » de CSS

La sécurité de l’IA générative à base de LLM

Dans un précédent article, il avait été question d'attaques sur un agent à base de LLM, typiquement un chat. En effet, un tel agent interprète le prompt non seulement comme un texte à compléter, mais aussi comme une liste d'instructions à suivre, ce qui fait de ce texte un vecteur d'attaque d'autant plus intéressant à exploiter que personne aujourd'hui ne peut dire comment fonctionne un LLM, si bien qu'il est impossible d'en sécuriser l'usage.
La sécurité des systèmes d'IA générative à base de LLM
Dans ces conditions, la prolifération des agents constitue un enjeu considérable du point de vue de la sécurité informatique, et c'est sans surprise que les agences telles que l'ANSSI ont entrepris de sensibiliser les organisations à ce sujet.
Toutefois, il n'y a pas que les risques techniques dont il est nécessaire de tenir compte. En effet, les risques juridiques ne sont pas moindres, tout particulièrement ceux qui ressortissent au traitement des données à caractère personnel.
NB : Ce billet a été rédigé mi-août par un humain et non une boîte de conserve, et publié dans une version réduite dans le HS n° 16 de Programmez! d'octobre 2024 consacré à la sécurité informatique, et en version intégrale dans le n° 266 de Programmez! de novembre 2024.
Continuer la lecture de "La sécurité de l’IA générative à base de LLM"
La sécurité de l’IA générative à base de LLM

Attaque sur les LLMs

Pour celui qui s'est un peu exercé avec, la fascination qu'exerce un LLM tient moins à sa capacité à produire un texte intelligible, qu'à la révélation des multiples domaines dans lesquels il est susceptible de fournir ainsi une réponse à une question qu'on lui pose.
Non moins fascinante est sa capacité à se laisser abuser selon la manière la question est formulée, essentiellement pour contourner les restrictions qui pèsent sur la réponse qu'il peut retourner.
Attaque sur les LLMs
Qu'en est-il à date de cette exploitation d'un LLM, au sens sécurité du terme ?
NB : Publié sur ce blog avec retard, ce billet a été rédigé début mars par un humain et non une boîte de conserve, et publié dans le numéro spécial IA de Programmez! d'avril 2024.
Continuer la lecture de "Attaque sur les LLMs"
Attaque sur les LLMs

Chronique de l’IA #7

Dans l'un des meilleurs épisodes de l'excellente série The West Wing, qui remonte à 2004, Leo McGarry se lamente : "My generation never got the future it was promised". Mais l'ordinateur personnel, objecte Josh Lyman ? "A more efficient delivery system for gossip and pornography? Where's my jet pack, my colonies on the Moon?", réplique Leo, impitoyable.
Chronique de l'IA #7
Voilà la situation qu'il leur faudrait éviter, mais à force de vouloir précipiter les choses, certains acteurs de l'IA, et non des moindres, donnent parfois l'impression de vouloir la provoquer. L'on avait vu Google se prendre les pieds dans le tapis à plusieurs reprises, mais ce n'est rien en comparaison de ce que Microsoft a réussi à faire...
Cela, dans un climat qui devient fébrile pour les investisseurs, du fait des défauts inhérents à l'IA et de l'absence de "killer application", toutes choses qui ne peuvent qu'alimenter la prudence des entreprises.
Cela étant, ça progresse dans les coulisses, mais c'est plus dans la compréhension d'en quoi l'IA consiste que dans son évolution vers l'AGI.
NB : Ce billet a été rédigé début juin par un humain et non une boîte de conserve, et publié dans le numéro #265 de Programmez! de septembre 2024.
Continuer la lecture de "Chronique de l’IA #7"
Chronique de l’IA #7

Une compilation d’articles sur la programmation en assembleur du hardware de l’Amiga

Rien n'est éternel, et certainement pas ce blog. Mais à quoi bon avoir rédigé tant d'articles pour expliquer la programmation en assembleur du hardware de l'Amiga en prenant pour prétexte la réalisation de cracktros, si cela devait être perdu un jour ?
Yragael's stash of code
Pour prévenir le drame, j'ai converti tous les articles concernés sous forme de pages Web, et réuni ces dernières ainsi que le code et les données des cracktros évoquées au sein d'une seule et même archive. Ainsi tout les articles peuvent être consultés hors ligne. Il y a même quelques bonus, pour ceux qui iront fouiller dans les répertoires.
N'hésitez pas à télécharger cette archive et à la faire circuler auprès de ceux que la programmation en assembleur du hardware de l'Amiga pourrait intéresser.
Pour nos amis germanophiles, je signale qu'un travail similaire d'archivage a été réalisé par le sympathique Göran Strack en septembre 2023. Au prix d'un bel effort, ce dernier a tout traduit en allemand et mis l'ensemble à disposition sur Aminet sous la forme de l'archive dev/asm/asm-kurs_stashofcode.lha. Merci à lui !
Continuer la lecture de "Une compilation d’articles sur la programmation en assembleur du hardware de l’Amiga"
Une compilation d’articles sur la programmation en assembleur du hardware de l’Amiga

Téléchargement progressif avec fetch ()

Fetch est une API propre aux navigateurs qui permet de présenter des requêtes à un serveur HTTP par voie de programmation, autrement dit depuis du code JavaScript.
Fetch remplace XMLHttpRequest, dont elle est une version plus moderne. En particulier :
  • XMLHttpRequest est bien une API asynchrone, mais elle repose sur le recours à des callbacks. Or ECMAScript 2015 a introduit les promesses pour faciliter la programmation asynchrone en échappant au "callback hell", mais XMLHttpRequest n'en tient pas compte.
  • Du fait de Same-Origin Policy (SOP), XMLHttpRequest ne permet pas de récupérer une ressource dont l'origine est différente de celle de la page. Or SOP a été tempérée en introduisant Cross-Origin Resource Sharing (CORS), mais XMLHttpRequest n'en tient pas compte.
Pour se familiariser avec Fetch, l'on se propose d'écrire une API qui permet de récupérer une série de ressources tout en étant tenu informé de la progression du téléchargement de chacune.
Suivi de la progression de téléchargements simultanés avec fetch ()
Le code JavaScript devra être aussi simple que possible, mais on n'échappera pas à la mobilisation de quelques concepts fondamentaux : les promesses, la récursivité, les closures, etc. Pas d'affolement, tout est expliqué en détail !
Continuer la lecture de "Téléchargement progressif avec fetch ()"
Téléchargement progressif avec fetch ()