Comment programmer avec les LLM
(crawshaw.io)- Article qui résume une année d’expérience de programmation avec des LLM (grands modèles de langage)
- Les LLM ont amélioré la productivité, au point qu’il est difficile de revenir à une façon de programmer sans eux
- L’auteur se concentre surtout sur l’environnement de programmation Go et développe un outil appelé sketch.dev
Contexte
- Tout est parti d’une curiosité pour les nouvelles technologies.
- Fascination pour la capacité des LLM à générer des réponses complexes à des questions ou à écrire du code
- Ils suscitent un intérêt et un sentiment de potentiel comparables à ceux des débuts d’Internet
- Constat du bénéfice net apporté par un outil qui génère du code « globalement correct », et effort pour l’exploiter de manière concrète
Principaux cas d’usage
-
Autocomplétion (Autocomplete)
- La prise en charge en autocomplétion des tâches de codage fréquemment répétées améliore la productivité
- En particulier, les modèles FIM (Fill-In-the-Middle) sont indispensables pour les tâches du quotidien
-
Remplacement de la recherche (Search)
- Pour certaines questions de programmation précises (par ex. régler l’opacité d’un bouton en CSS), ils répondent plus justement qu’un moteur de recherche
- Les réponses des LLM peuvent être erronées, mais l’auteur les utilise en acceptant cette limite
-
Programmation pilotée par le dialogue (Chat-driven Programming)
- Le domaine le plus difficile, mais aussi le plus précieux.
- Les LLM prennent en charge des tâches initiales comme la création de nouveaux fichiers ou la recherche de bibliothèques.
- L’objectif de la programmation conversationnelle est de réduire les frictions actuelles et de rendre les capacités des LLM plus conviviales
Le cœur de la programmation conversationnelle
-
Pourquoi utiliser le dialogue ?
- Utile pour fournir un premier brouillon quand l’énergie baisse au fil de la journée
- Il est plus efficace de corriger un premier brouillon que de tout écrire depuis zéro
-
Méthode de travail avec un LLM
- Définir un objectif de travail clair et concis
- Lire, valider et corriger le code
- S’appuyer sur les erreurs du compilateur pour résoudre rapidement les problèmes
-
Rédiger des tests efficaces
- Les LLM sont très enclins à écrire des tests et peuvent aider à mettre en place un environnement de test plus rigoureux
- Au-delà des tests basés sur des exemples, ils peuvent aussi être étendus à des fuzz tests
Exemple : échantillonneur de quartiles
- Objectif : écrire en Go un algorithme qui échantillonne les quartiles d’un flux de données
- Processus
- Rédiger un premier brouillon avec le LLM
- Améliorer le code en corrigeant les erreurs de compilation
- Réécrire le code de test pour obtenir une structure plus lisible
Possibilités de nouvelles structures de code
-
Des packages plus petits, davantage de tests
- Des packages plus petits fournissent un contexte de code plus clair, utile à la fois pour les LLM et pour les humains
- Ils augmentent les chances d’avoir des tests indépendants et une compilation réussie
-
Exemple : wrapper d’API
- Il est recommandé d’utiliser un wrapper léger qui n’implémente que les parties nécessaires, plutôt qu’une grande bibliothèque officielle
- Cela réduit les coûts de maintenance et d’apprentissage
Orientation future : sketch.dev
- Un IDE Go pour les LLM
- Fournit un environnement de programmation centré sur les LLM
- Prend en charge le retour automatisé sur les tests, la correction des erreurs du compilateur, l’intégration des modules Go, etc.
- Renforce la collaboration entre l’humain et le LLM pour offrir un environnement plus productif
1 commentaires
Avis sur Hacker News
L’auteur est déjà un ingénieur logiciel de niveau mondial, ancien employé de Google et cofondateur/CTO de Tailscale. Il est impressionnant de voir que les LLM le rendent plus productif.
Les LLM réduisent l’énergie nécessaire pour démarrer une tâche.
Quand on utilise des LLM, il faut s’en servir uniquement dans des domaines que l’on connaît bien.
Les LLM ont du potentiel comme outils de développement logiciel.
C’est similaire à l’utilisation d’un moteur de recherche.
On ne ressent pas d’envie particulière d’utiliser des LLM.
Pour les non-programmeurs, les LLM sont d’une grande aide.
Les LLM sont utiles pour écrire des applications simples.
Les LLM aident les personnes qui programment comme loisir.
Les LLM sont principalement utilisés pour l’autocomplétion et la recherche.