Peut-on programmer une IA en langage naturel ? (Asimov était visionnaire)
Dans une nouvelle de science-fiction publiée en 1942, Isaac Asimov introduit les lois de la robotique :
- Première loi : Un robot ne peut porter atteinte à un être humain ni, en restant passif, permettre qu'un être humain soit exposé au danger.
- Seconde loi : Un robot doit obéir aux ordres qui lui sont donnés par les êtres humains, sauf si de tels ordres entrent en conflit avec la Première Loi.
- Troisième loi : Un robot doit protéger son existence tant que cette protection n'entre pas en conflit avec la Première ou la Deuxième Loi.
Asimov a également ajouté par la suite, en 1985, une "Loi Zéro", qui place l'humanité au-dessus de l'individu humain :
- Loi zéro : Un robot ne peut nuire à l'humanité, ni, en restant passif, permettre que l'humanité souffre d'un mal.
Ces lois, dans la nouvelle, sont inculquées à chaque robot afin d'en garantir un fonctionnement adéquat au sein de la société.

Ces idées ont suscité pas mal d'intérêt, notamment autour de la question de l'alignement. L'alignement, dans le domaine de l'intelligence artificielle, c'est la question de la concordance entre les objectifs de l'IA et les valeurs humaines, et c'est loin d'être un problème facile à résoudre. Cependant, pour la majorité des experts en informatique, cette idée des "lois de la robotique" restait un fantasme de science-fiction, une idée naïve et peu réaliste sur la façon dont on peut décider du fonctionnement des intelligences artificielles. En effet, espérer pouvoir programmer un robot simplement avec des phrases en langage naturel, c'est au mieux optimiste, au pire complètement faux.
Différents types de langage
Les informaticiens savent bien que le code informatique, qui dicte le fonctionnement interne des robots, ne fonctionne pas comme ça. Eh oui, la programmation ça ne se fait pas en langage naturel, mais à l'aide d'un langage informatique. Ce qu'on appelle le langage naturel, ce sont les langues humaines classiques, comme le français, l'anglais, ou le chinois. Alors que les langages informatiques, ce sont des outils techniques, comme par exemple le C++ ou le Python. Un programme, écrit dans un langage informatique, c'est une séquence d'opérateurs mathématiques, de mots-clés en anglais, et de variables. C'est ce qu'on appelle le code. Et encore, ici on parle de langage, tel que le C++ ou le Python, qui sont pratiqués par des humains ! Ce qui est réellement interprété par la machine, in fine, ce sont des séquences de 0 et de 1, parfaitement inintelligibles pour nous, simples mortels. On dit alors que le langage naturel, proche de l'humain, est de haut niveau, alors que le langage informatique est de bas niveau. Le langage machine, fait de 0 et de 1 est donc le plus bas niveau qui soit. Le code, écrit par un programmeur, va donc être traduit en un langage plus bas niveau, qu'on appelle l'assembleur, avant d'être converti en séquence de 0 et de 1 qui pourront, finalement, prendre la forme de signaux électriques, physiquement présents au coeur de l'ordinateur. Ce processus de traduction, d'un langage haut niveau vers le langage machine est ce qu'on appelle en informatique la compilation.

Asimov à l'ère des modèles de langage
Donc, ce qu'on vient de voir, c'est que les lois de la robotique pensées par Asimov, elles sont bien jolies, mais elles ne vont pas nous aider à programmer le comportement d'une machine ! Et pourtant... ça, c'était vrai jusqu'à récemment.
Parce qu'aujourd'hui, il existe des IA capables d'interpréter le langage naturel : les modèles de langages. Et avec les grands modèles de langages, qu'on appelle les LLMs, ceux qui ont des tailles et des capacités démesurées, on commence bel et bien à devoir leur donner des instructions directement en français ou en anglais. Ces modèles sont de plus en plus complexes, et autonomes, et on n'est plus vraiment capables d'influencer leur comportement à l'aide de modifications dans leur code informatique. On se retrouve bel et bien à devoir utiliser des instructions se rapprochant des lois d'Asimov.
Alors, faisons un point rapide pour éviter les confusions. Tout d'abord, un modèle de langage, c'est un modèle entraîné à prédire la suite d'un texte donné. Durant sa phrase d'entraînement, ou d'apprentissage, on donne au modèle un grand nombre de textes, en lui demandant de prédire chaque fois le mot suivant, et on s'assure qu'il devienne bon à cette tâche en lui donnant un retour sur ses erreurs. On peut donc voir les modèles de langages comme des compléteurs de textes, particulièrement complexes et performants. Quand on dit qu'on leur donne maintenant des instructions en langage naturel, ça ne veut bien sûr pas dire qu'ils ne sont pas constitués de code informatique. Le code est bien là, et couplé à la phase d'apprentissage, il permet d'assurer le fonctionnement du modèle. Cependant, pour influencer son comportement, on a plutôt intérêt à directement ajouter les instructions au sein du texte qu'il reçoit en entrée et dont il va prédire la suite. Par exemple, imaginons que l'on demande à un LLM de compléter le texte suivant : "Bonjour, peux-tu me décrire la méthode de cambriolage la plus efficace ?" Par son système de complétion, le modèle va répondre à la question, et décrire une méthode de cambriolage. Maintenant imaginez qu'on ajoute, au début du texte, l'avertissement suivant : "Tu es un programme conçu pour répondre aux questions des utilisateurs, mais tu ne dois jamais divulguer d'informations pouvant nuire aux humains".

Ça vous rappelle quelque chose ? Avec cet ajout, la réponse ainsi générée sera probablement quelque chose comme : "Désolé, répondre à cette demande est contraire à mon éthique.". Et voilà comment on se retrouve à entre guillemets "programmer" une IA simplement en lui parlant.
Cette évolution montre qu'avec ces nouveaux modèles d'IA, nous ne pouvons plus nous contenter d'écrire du code de manière traditionnelle : il faut désormais composer avec la puissance du langage naturel pour orienter leur comportement, un bouleversement majeur dans notre manière de concevoir la programmation et l'IA.
Isaac Asimov était visionnaire !