domicile
naviguer_suivant
Blog
naviguer_suivant

Comment construire des logiciels avec des LLM (1ère partie)

Comment construire des logiciels avec des LLM (1ère partie)
Comment les LLM ont donné naissance à un nouveau paradigme informatique.
Comment construire des logiciels avec des LLM (1ère partie)

par Iulian Serban

Un nouveau paradigme informatique

Le développement traditionnel de logiciels est mort. Les grands modèles de langage (LLM) et les "copilotes" modifient fondamentalement la manière dont nous construisons les logiciels. Bientôt, les ingénieurs en logiciel n'écriront plus de code. Au lieu de cela, ils créeront des logiciels en utilisant le langage naturel et en combinant des blocs de construction intelligents pour créer rapidement de nouveaux systèmes et de nouvelles expériences.

Il y a quelques semaines, Thomas Dohmke, PDG de Github, a déclaré lors d'une interview :

"Tôt ou tard, 80 % du code sera écrit par Copilot.

Ces propos sont tenus par le PDG de Github, la plus grande plateforme d'hébergement de logiciels au monde. Ce sont les créateurs de Copilot. Ils hébergent également la quasi-totalité des grands projets open source et ont mis au point des milliers d'outils et de processus d'ingénierie logicielle. Ils disposent également de millions de points de données provenant de millions de développeurs et d'entreprises. Ils connaissent parfaitement le développement logiciel et savent quand un changement fondamental va se produire dans l'industrie de l'ingénierie logicielle.

Replit est l'un des IDE basés sur un navigateur qui connaît la croissance la plus rapide, avec plus de 20 millions d'utilisateurs. À l'instar de Github, il a également adopté les LLM et poursuit une approche ultra-rapide du développement de logiciels. Ils ont récemment publié un billet de blog sur ce même changement fondamental :

"Les dernières applications de chat LLM peuvent générer du code pour des programmes complets à l'aide de simples invites en langage naturel, ce qui permet de créer des sites web complets en quelques minutes sans aucune expérience en matière de codage.

Il s'agit d'une affaire très, très importante. Et il ne fait aucun doute que de nombreuses personnes auront du mal à la saisir.

Laissez-moi vous guider.

‍Le"point de vue naïf" : les LLM ne sont qu'un outil de plus dans la boîte à outils

L'un des points de vue actuels est que les LLM ne sont qu'un nouvel outil dans la boîte à outils du développeur de logiciels.

Ce point de vue affirme que les LLM sont un outil puissant, auquel on peut accéder en tant qu'API ou microservice et qu'on peut utiliser pour résoudre de nombreux types de tâches. Cependant, il maintient que les LLM ne sont essentiellement qu'un autre outil, pas différent des autres API et microservices.

Ce point de vue donne lieu à un cadre de résolution des problèmes centré sur la requête API.

Cela pourrait ressembler à ceci :

Étape 1. Recueillir les données nécessaires à l'interrogation

Étape 2. Construire l'invite

Étape 3. Interroger l'API LLM à l'aide d'une invite (par exemple, OpenAI's GPT-4 ou Llama 2).

Étape 4. Analyser les résultats et les injecter dans votre application

Il s'agit d'un flux déterministe et linéaire. Ce cadre traite les LLM comme une API avec un ensemble fixe d'entrées et de sorties. Ce cadre peut être étendu pour exécuter plusieurs requêtes (chaînes) avec des entrées d'une alimentation à l'autre. Il suffit de répéter le flux pour chaque requête supplémentaire.

Bien que simple, il s'agit d'un cadre puissant avec un potentiel énorme. On pourrait même montrer qu'avec un LLM approprié et une longue chaîne arbitraire de requêtes, un tel système est Turing complet (c'est-à-dire qu'il peut être utilisé pour mettre en œuvre n'importe quel algorithme arbitraire et calculable).

Malgré sa simplicité et sa capacité à résoudre des problèmes arbitrairement complexes, j'appelle cela la "vision naïve" parce qu'elle place les LLM dans un format d'API traditionnel et ignore à la fois ce qui est unique dans les LLM et le reste du cycle de vie du développement logiciel.

Cette vision naïve et simpliste est fondamentalement erronée et limitée, car les LLM sont uniques et extrêmement différents des autres types de systèmes et d'outils logiciels.

Les LLM sont des unités de calcul polyvalentes

Les LLM sont des modèles probabilistes d'apprentissage automatique formés sur de très grandes quantités de données. Ils possèdent de multiples propriétés fondamentales et émergentes qui les différencient de tout autre type de logiciel et de service en nuage :

- Résolution de problèmes à usage général : Les ML sont des outils de résolution de problèmes extrêmement puissants et polyvalents. Lorsqu'ils sont associés aux bons messages-guides et à l'apprentissage à court terme (exemples de paires entrée-sortie), ils peuvent rapidement résoudre des problèmes difficiles que, il y a quelques années, même certains des systèmes de ML/logiciels les plus sophistiqués au monde ne pouvaient pas résoudre.

- Invitations en langage naturel : Les LLM peuvent recevoir des messages (tels que des instructions, des exemples, etc.) en langage naturel, y compris un langage ambigu, voire incomplet et incohérent.

- Processeurs multimodaux : Les LLM peuvent entrer et sortir du texte en langage naturel, des nombres, des objets json, des fichiers csv, des tableaux, des images, des vidéos, des feuilles Excel, du code source, etc.

- Générateurs probabilistes : Étant donné la même entrée, les LLM peuvent générer plusieurs sorties avec différentes probabilités associées à chacune d'entre elles. Cela diffère fondamentalement des algorithmes déterministes, qui produisent toujours la même réponse à partir de la même entrée.

- Structure composable et récursive : La sortie d'un LLM peut servir d'entrée à un autre LLM (ou revenir à lui-même), ce qui permet souvent d'améliorer les performances pour les tâches complexes nécessitant plusieurs étapes de raisonnement. Cela a permis l'émergence d'un nouveau cadre puissant de résolution de problèmes appelé "chaîne de pensée" (CoT), dont nous parlerons plus loin.

- Apprenants ponctuels : Les LLM peuvent apprendre une nouvelle tâche avec seulement quelques exemples, atteignant souvent un haut niveau de précision ou de performance. Par exemple, on peut "apprendre" à un LLM à reproduire n'importe quelle fonction Python à partir de paires d'entrées et de sorties.

En théorie, les LLM peuvent reproduire n'importe quelle fonction donnée avec une précision arbitraire, y compris n'importe quelle fonction Python, microservice ou API blackbox. Par conséquent, nous devrions vraiment considérer les LLM comme un nouveau type d'unité de calcul - une unité de calcul polyvalente.

Il n'y a jamais rien eu de tel dans l'histoire du développement de logiciels. Nous avons eu beaucoup de systèmes logiciels sophistiqués. Nous avons même eu des systèmes logiciels capables de traiter intelligemment de grandes quantités de données structurées en entrée, mais nous n'avons jamais eu de systèmes capables de traiter le langage naturel humain en entrée, et encore moins de résoudre un tel éventail de problèmes dans tous les domaines.

Contrairement à la plupart des systèmes et services logiciels, ces unités de calcul sont probabilistes de par leur conception et peuvent être "formées" à résoudre de nouvelles tâches grâce à un apprentissage ponctuel et à un réglage fin. Pour les mêmes raisons et grâce à leur capacité à analyser des messages en langage naturel, elles sont également plus aptes à être intégrées dans des systèmes "human-in-the-loop" (HITL). Cela signifie que nous devons adopter de nouveaux modèles de conception lorsque nous construisons des logiciels.1
1. J'utilise ici le terme "modèle de conception" au sens large pour désigner une solution générale et réutilisable à un problème courant dans un contexte donné de la conception de logiciels.

‍LLMssont un nouveau paradigme informatique

Si les LLM sont une unité de calcul à usage général, s'ils sont extrêmement puissants pour résoudre des problèmes, s'ils peuvent reproduire n'importe quelle fonction existante, s'ils ont leurs propres propriétés fondamentales et émergentes, s'ils sont probabilistes, si on peut leur apprendre à résoudre de nouvelles tâches avec de nouveaux modèles de conception, alors nous devons les considérer comme un paradigme de calcul fondamentalement nouveau.

Nous devons penser différemment la manière dont nous construisons les logiciels.

Nous avons besoin d'un nouveau modèle pour l'ingénierie logicielle.

Dans le prochain billet, nous généraliserons le concept d'unités de calcul, nous les placerons dans le contexte d'un organigramme et nous discuterons du flux probabiliste des données et des systèmes à boucle humaine.

----------

Korbit construit son AI Mentor avec des LLM depuis plus d'un an. Les LLM sont un nouveau paradigme informatique. Ils l'ont mis en pratique et ont beaucoup appris sur le fonctionnement des LLM, sur la façon de construire des applications réelles avec eux et sur les architectures et les modèles de conception qui les font fonctionner.
Essayez Korbit AI Mentor :
https://www.korbit.ai/get-started
Pour en savoir plus :
Comment construire des logiciels avec des LLM (Partie 2)
Comment construire des logiciels avec des LLM (partie 3)
retour_flèche
Retour au blog