mercredi, 28 février 2024

L’IA rend-elle notre code stupide ?

Crédit : Brian Yurasits/ Unsplash

Les outils de codage comme GitHub Copilot peuvent aider les développeurs à créer du code 55 % plus rapide, selon GitHub. Hourra! Droite? Eh bien, peut-être pas. GitClear a analysé 153 millions de lignes de code modifié entre janvier 2020 et décembre 2023 et s’attend désormais à ce que le taux de désabonnement (« la part des lignes qui sont annulées ou mises à jour moins de 2 semaines après leur création ») double en 2024. Pour faire simple, « Le code créé en 2023… ressemble à [celui d’un] contributeur itinérant », comme si vous employiez un spécialiste à court terme plus préoccupé par la production d’un code détaillé que par la garantie de sa maintenabilité.

Un code gonflé génère des cauchemars en matière de sécurité, pour ne citer que quelques problèmes, comme le rapporte Bert Hubert. Cela ne veut pas dire que les concepteurs ne devraient pas utiliser d’assistants IA. C’est plutôt un indicateur qu’il faut faire preuve de prudence pour s’assurer qu’une dépendance excessive à l’égard de l’IA ne rend pas nos machines et le code qui les exécute stupides.

Tout le monde le fait

Il n’y aurait pas lieu de s’inquiéter si l’IA générative (genAI) n’avait pas décollé l’année dernière. Cette adoption est à la fois excellente et mauvaise, comme le souligne Simon Willison, développeur de Datasette. « Au cours des 24 à 36 derniers mois », écrit-il, « nos types ont en fait découvert qu’il était possible de prendre un corpus de texte géant, de l’exécuter sur une pile de GPU et de l’utiliser pour développer un nouveau type d’application logicielle intéressante. Ce logiciel peut considérablement améliorer nos vies, poursuit-il, si nous apprenons à le maîtriser. Les grands modèles de langage (LLM) sont « en fait plutôt faciles à construire », ne nécessitant que quelques centaines de lignes de code Python.

La partie difficile des LLM n’est pas le code utilisé pour les composer, mais plutôt les données utilisées pour les former. En 2023, nous avons appris de nouvelles méthodes pour les empêcher de dérailler (« halluciner ») grâce à la génération augmentée par récupération (RAG) et à d’autres moyens. C’est le bon côté.

Du côté négatif du journal, nous réalisons également à quel point ils peuvent être feuilletés. Savoir comment susciter un LLM est encore un art sombre (sans cohérence). Comme le note Wilison, « Les choses que vous devez souvent faire pour que les modèles se comportent bien sont souvent extrêmement stupides. » Cela est moins vrai pour la création de logiciels que pour, par exemple, demander à ChatGPT de rédiger une dissertation. Il est toujours vrai que demander à un LLM d’effectuer un travail particulier est un exercice consistant à manipuler des boutons (déclencheurs) pour obtenir ce que vous désirez.

Le pire aspect des logiciels générés par l’IA – et des applications logicielles de base actuelles – est la surcharge. « Plus vous avez de [code]… plus vous courez de dangers », argumente Hubert. D’une certaine manière, nous avons tenté de contourner ce problème en faisant en sorte que l’exécution de notre application logicielle soit confiée à quelqu’un d’autre. « Les logiciels sont désormais (vraiment) considérés comme si dangereux que nous disons à tout le monde de ne pas les exécuter eux-mêmes », déclare Hubert. Le secret est d’écrire moins de code. Une application logicielle plus légère est une application logicielle beaucoup plus sûre. « Le monde expédie trop de code », déclare Hubert, « la majorité par des tiers, souvent involontairement, la plupart sans inspection. De ce fait, il existe une énorme surface d’attaque remplie de code médiocre. »

L’IA exacerbe le problème.

Installer des portails

L’évaluation du code, à la fois automatisée par des machines et effectuée par des individus, est la réponse. On pourrait affirmer que, bien sûr, les assistants de codage créent un code volumineux et moins maintenable, mais l’IA réduit également la nécessité pour les gens de le maintenir. Cela semble acceptable, idéal ? Faux. La zone d’attaque élargie demeure.

La réponse à ce dilemme de qualité du code est probablement la même qu’elle a toujours été : les révisions de code.

L’origine du code importe moins que la procédure par laquelle les groupes d’avancement poussent vers la production. Comme l’a dit récemment un de mes collègues : « Un bon code est créé tout autant par une bonne procédure que par de grands concepteurs. » Cette procédure dépend du fait que les développeurs ne se dérobent pas à leur devoir d’apprendre les principes fondamentaux de l’avancement des applications logicielles. Il existe un risque que les concepteurs moins expérimentés évitent les sujets les plus difficiles du génie logiciel tels que les structures de données et les algorithmes, les systèmes dispersés, les réseaux, etc. Cela les met dans une position de faiblesse pour effectuer des révisions efficaces du code.

J’espère que les développeurs saisiront les toutes nouvelles opportunités offertes par les outils d’IA tout en approfondissant leurs racines dans les éléments essentiels qui les aideront à utiliser efficacement les outils d’IA et à ne pas être utilisés par eux. Cet espoir deviendra réalité à mesure que les pistes de progrès exigeront des révisions de code robustes, qui à leur tour placeront la barre plus haut pour ceux associés à la procédure de codage, qu’ils soient humains ou appareils.

Toute l’actualité en temps réel, est sur L’Entrepreneur

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici