- De nombreux développeurs perdent confiance après avoir subi des hallucinations en utilisant des LLM pour écrire du code
- Il est courant qu’un LLM invente des méthodes ou des bibliothèques inexistantes
- Mais, dans le code, les hallucinations sont le type d’hallucination le moins dangereux
- Le cas le plus dangereux est lorsque le LLM introduit des erreurs qui ne sont pas immédiatement détectées par le compilateur ou l’interpréteur
- Une méthode hallucinée provoque une erreur dès l’exécution, ce qui la rend facile à repérer
- On peut aussi corriger automatiquement le problème en renvoyant le message d’erreur au LLM
- Contrairement aux hallucinations dans le texte classique, le code permet une vérification factuelle par l’exécution
- Les LLM avec correction automatique des erreurs
- Des outils comme ChatGPT Code Interpreter et Claude Code exécutent le code généré par le LLM, détectent les erreurs et les corrigent eux-mêmes
- Évaluer du code écrit par un LLM sans même l’exécuter est inefficace
- Certains développeurs rejettent la technologie entière simplement parce que le LLM a généré des méthodes hallucinées
- Mais pour l’utiliser efficacement, l’apprentissage et l’expérimentation sont indispensables
- L’auteur étudie l’écriture de code assistée par l’IA depuis plus de deux ans, et continue encore à apprendre de nouvelles techniques
- Les tests manuels du code sont indispensables
- Ce n’est pas parce que le code s’exécute correctement qu’il se comporte comme prévu
- Ni la revue de code ni les tests automatisés ne suffisent à valider complètement l’exactitude du code
- Il est indispensable de l’exécuter et de le vérifier soi-même
- Le code généré par un LLM peut inspirer une fausse confiance parce qu’il est très lisible
- Il en va de même pour le code écrit par des humains : il ne faut pas lui faire confiance avant de l’avoir exécuté soi-même
- Comment réduire les hallucinations
- Utiliser un autre modèle : choisir un modèle disposant de davantage de données d’entraînement sur une plateforme donnée
- Exemples : Claude 3.7 Sonnet (avec thinking mode activé), OpenAI o3-mini-high, GPT-4o (avec Python Code Interpreter)
- Exploiter le contexte : même si le LLM ne connaît pas une bibliothèque donnée, il peut apprendre les motifs à partir d’exemples de code fournis
- Choisir des technologies stables : plus une bibliothèque est ancienne, plus il est probable que le LLM la maîtrise bien
- L’importance de la revue de code
- L’auteur réfute l’argument selon lequel « si je dois relire tout le code écrit par un LLM, autant l’écrire moi-même, ce sera plus rapide »
- Ce type de remarque peut aussi révéler un manque de compétence en revue de code
- Relire du code généré par un LLM peut être une excellente occasion de progresser
- Bonus : le retour de Claude 3.7 Sonnet
- L’auteur a demandé à Claude 3.7 Sonnet de relire un brouillon de billet de blog en mode « extended thinking mode »
- Il lui a demandé de vérifier « si la logique de cet article est convaincante, quels points pourraient être améliorés et quels éléments manquent »
- Claude a aidé à adoucir le ton du brouillon
- Lien vers la conversation de feedback avec Claude
1 commentaires
Discussion sur Hacker News
L’auteur était d’accord avec le billet précédent, mais pas avec celui-ci
Même si le code généré par un LLM fonctionne bien, si l’on n’en est pas l’auteur, il est difficile d’y déceler des bugs ou des défauts logiques
Le code généré par un LLM est propre, mais fait passer plus de temps en QA et en travail de nettoyage
The Primeagen et Casey Muratori examinent la sortie des derniers générateurs de code par LLM
Une autre catégorie d’erreur négligée par Simon est l’hallucination où le modèle oublie une fonctionnalité
Les méthodes hallucinées sont un petit obstacle, et lorsqu’on s’en plaint, on suppose que les gens ont passé un temps minimal à apprendre à utiliser efficacement le système
L’hallucination en elle-même n’est pas le plus grand risque posé par les LLM
Ce n’est moins risqué que dans le contexte limité des erreurs de compilation
Obtenir de bons résultats avec un LLM demande beaucoup d’efforts
Expérience d’écriture de code pour trouver la clinique « principale » d’un patient dans un centre médical