IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Comment j'utilise les LLM en tant qu'ingénieur logiciel
Par sean goedecke

Le , par Sean Goedecke

29PARTAGES

8  0 
Comment j'utilise les LLM en tant qu'ingénieur logiciel, par sean goedecke

Les ingénieurs logiciels sont profondément divisés sur le sujet des grands modèles de langage. Beaucoup pensent qu'il s'agit de la technologie la plus transformatrice de l'histoire de l'industrie. D'autres pensent qu'il s'agit de la dernière d'une longue série de produits qui ne font que du battage médiatique : il est passionnant d'y penser, mais en fin de compte, ils ne sont pas utiles aux professionnels qui essaient de faire un travail sérieux.

Personnellement, j'ai l'impression que l'IA m'apporte beaucoup. Je pense que beaucoup de ceux qui ne sont pas de cet avis « tiennent mal », c'est-à-dire qu'ils n'utilisent pas les modèles de langage de la manière la plus utile qui soit. Dans ce billet, je vais énumérer un certain nombre de façons dont j'utilise régulièrement l'IA dans mon travail quotidien d'ingénieur.

Écrire du code de production

J'utilise les complétions Copilot chaque fois que j'écris du code. La quasi-totalité des compléments que j'accepte sont de la pure routine (remplir les arguments ou les types de fonctions, par exemple). Il est rare que je laisse Copilot produire de la logique métier pour moi, mais cela arrive occasionnellement. Dans mes domaines d'expertise (Ruby on Rails, par exemple), je suis certain de pouvoir faire mieux que le LLM. Il s'agit simplement d'une (très bonne) autocomplétion.

Cependant, je ne travaille pas toujours dans mes domaines d'expertise. Je me retrouve souvent à faire de petits changements tactiques dans des domaines moins familiers (par exemple, un service Golang ou une bibliothèque C). Je connais la syntaxe et j'ai écrit des projets personnels dans ces langages, mais je suis moins sûr de ce qui est idiomatique. Dans ces cas-là, je me fie davantage à Copilot. Typiquement, j'utilise Copilot chat avec le modèle o1 activé, je colle mon code et je demande directement « est-ce que c'est du C idiomatique ? »

Il est risqué de s'appuyer davantage sur le LLM, car je ne sais pas ce que je manque. Il me permet en fait d'opérer à un niveau de base « smart-intern » dans tous les domaines. Je dois également me comporter comme un stagiaire sensé et m'assurer qu'un expert en la matière examine le changement pour moi. Mais même avec cette mise en garde, je pense qu'il est très utile d'être capable de faire ce genre de changements tactiques rapidement.

Écrire du code jetable

Je suis beaucoup plus libéral dans mon utilisation des LLM lorsque j'écris du code qui ne sera jamais produit. Par exemple, j'ai récemment effectué un bloc de recherche qui nécessitait d'extraire des morceaux de données publiques d'une API, de les classer et d'approximer cette classification à l'aide d'une série de regex rapides. Tout ce code a été exécuté sur mon ordinateur portable uniquement, et j'ai utilisé des LLM pour l'écrire en grande partie : le code pour extraire les données, le code pour exécuter un LLM séparé pour les classer, le code pour les tokeniser et mesurer les fréquences des tokens et les noter, etc.

Les LLM excellent dans l'écriture d'un code qui fonctionne et qui n'a pas besoin d'être maintenu. Le code non productif qui n'est exécuté qu'une seule fois (par exemple, pour la recherche) convient parfaitement à cet exercice. Je dirais que mon recours aux LLM m'a permis de réaliser ce travail deux à quatre fois plus vite que si je n'avais pas été assisté.

Apprendre de nouveaux domaines

La chose la plus utile que je fais avec LLMs est probablement de l'utiliser comme un tuteur à la demande pour apprendre de nouveaux domaines. Par exemple, le week-end dernier, j'ai appris les bases de Unity, en m'appuyant fortement sur ChatGPT-4o. La magie de l'apprentissage avec les LLM réside dans le fait que vous pouvez poser des questions : pas seulement « comment fonctionne X », mais aussi des questions complémentaires telles que « quel est le rapport entre X et Y ». Plus utile encore, vous pouvez poser des questions du type « est-ce que c'est correct ? Je rédige souvent ce que je pense avoir appris et je le renvoie au LLM, qui m'indique où j'ai raison et où je n'ai toujours pas compris. Je pose beaucoup de questions au LLM.

Je prends beaucoup de notes lorsque j'apprends quelque chose de nouveau. Pouvoir copier-coller toutes mes notes et les faire réviser par le LLM est formidable.

Qu'en est-il des hallucinations ? Honnêtement, depuis GPT-3.5, je n'ai pas remarqué que ChatGPT ou Claude faisait beaucoup d'hallucinations. La plupart des domaines que j'essaie d'étudier sont très bien compris (mais pas par moi) et, d'après mon expérience, cela signifie que le risque d'hallucination est assez faible. Je n'ai jamais rencontré de cas où j'ai appris quelque chose d'un LLM qui s'est avéré fondamentalement erroné ou halluciné.

Corrections de bogues en dernier recours

Je ne le fais pas souvent, mais parfois, lorsque je suis vraiment bloqué sur un bug, j'attache le ou les fichiers entiers au chat de Copilot, je colle le message d'erreur, et je demande simplement « pouvez-vous m'aider ? ».

La raison pour laquelle je ne le fais pas, c'est que je pense que je suis actuellement bien meilleur dans la chasse aux bugs que les modèles d'IA actuels. Presque toujours, Copilot (ou Claude, pour certains projets personnels) s'embrouille. Mais cela vaut toujours la peine d'essayer si je suis vraiment bloqué, juste au cas où, parce que c'est un effort minime. Je me souviens de deux ou trois cas où j'avais manqué un comportement subtil que le LLM a détecté, ce qui m'a fait gagner beaucoup de temps.

Parce que les LLM ne sont pas encore très bons dans ce domaine, je ne passe pas beaucoup de temps à itérer ou à essayer de décoller le LLM. J'essaie juste une fois pour voir s'il y arrive.

Relecture des fautes de frappe et des erreurs de logique

Je rédige un grand nombre de documents en anglais : ADR, résumés techniques, messages internes, etc. Je ne permets jamais au LLM de les rédiger à ma place. Cela s'explique en partie par le fait que je pense pouvoir écrire plus clairement que les LLM actuels. C'est aussi en partie à cause de mon dégoût général pour le style maison de ChatGPT.

Ce que je fais occasionnellement, c'est envoyer un brouillon au LLM et lui demander son avis. Les LLM sont très doués pour repérer les fautes de frappe et soulèvent parfois un point intéressant qui devient une modification de mon projet.

Comme pour la correction des bogues, je n'itère pas lorsque je fais cela - je demande simplement un retour d'information. En général, le LLM propose des commentaires stylistiques, que j'ignore toujours.

Résumé

J'utilise les LLM pour ces tâches :

  • Autocomplétion intelligente avec Copilot
  • Courts changements tactiques dans des domaines que je ne connais pas bien (toujours revus par un PME)
  • Rédaction d'un grand nombre de codes de recherche utilisables une fois et jetables
  • Poser beaucoup de questions pour en savoir plus sur de nouveaux sujets (par exemple, le moteur de jeu Unity)
  • Correction de bogues en dernier recours, juste au cas où il serait possible de résoudre le problème immédiatement.
  • la relecture d'ensemble pour les communications en anglais de longue haleine.

Je n'utilise pas (encore) les LLM pour ces tâches :

  • Rédiger pour moi des relations publiques complètes dans des domaines que je connais bien
  • Rédaction d'ADR ou d'autres communications techniques
  • Recherche dans de grandes bases de code et découverte de la manière dont les choses sont faites


Source : How I use LLMs as a staff engineer

Et vous ?

Pensez-vous que cette utilisation est crédible ou pertinente ?
Quel est votre avis sur le sujet ?

Voir aussi :

Comment je livre des projets informatiques dans de grandes entreprises technologiques, par Sean Goedecke

L'IA aurait radicalement transformé le codage au point de remplacer bientôt tous les développeurs ? Il n'y a pas de "Vibe Engineering", par Sergey Tselovalnikov

Être développeur à l'ère de l'IA qui raisonne, par Mani Doraisamy
Vous avez lu gratuitement 15 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.

Une erreur dans cette actualité ? Signalez-nous-la !

Avatar de RenarddeFeu
Membre averti https://www.developpez.com
Le 07/06/2025 à 6:05
Le jour où les LLM tourneront en local avec des licences permissives, peut-être me résoudrais-je à les utiliser. En attendant, il est hors de question que je pollue mon workflow et me retrouve potentiellement à la merci de sociétés prédatrices basées dans la Silicone Valley.
1  0 
Avatar de kain_tn
Expert éminent https://www.developpez.com
Le 09/06/2025 à 23:17
Citation Envoyé par RenarddeFeu Voir le message
Le jour où les LLM tourneront en local avec des licences permissives, peut-être me résoudrais-je à les utiliser. En attendant, il est hors de question que je pollue mon workflow et me retrouve potentiellement à la merci de sociétés prédatrices basées dans la Silicone Valley.
Et encore... Même comme ça, il y aurait encore des désavantages.
0  0 
Avatar de Fagus
Membre expert https://www.developpez.com
Le 10/06/2025 à 14:24
Citation Envoyé par RenarddeFeu Voir le message
Le jour où les LLM tourneront en local avec des licences permissives, peut-être me résoudrais-je à les utiliser. En attendant, il est hors de question que je pollue mon workflow et me retrouve potentiellement à la merci de sociétés prédatrices basées dans la Silicone Valley.
Ce jour est arrivé depuis quelques temps. Les modèles se téléchargent en une ligne avec ollama.
Avec 8Go de RAM on peut faire tourner en local un modèle 7B, ex, un mistral optimisé codage (assistant limité. il peut compléter les constructeurs par ex, ou écrire des fonctions de quelques lignes). Mais il n'y a pas de besoin de matériel particulier.

Avec VStudio + l'extension Continue on peut intégrer dans un IDE un modèle local.

Evidemment, pour avoir la qualité d'un modèle SaaS il va falloir une grosse carte graphique.
0  0 
Avatar de gerard093
Membre actif https://www.developpez.com
Le 11/06/2025 à 12:52
"Qu'en est-il des hallucinations ? Honnêtement, depuis GPT-3.5, je n'ai pas remarqué que ChatGPT ou Claude faisait beaucoup d'hallucinations. La plupart des domaines que j'essaie d'étudier sont très bien compris (mais pas par moi) et, d'après mon expérience, cela signifie que le risque d'hallucination est assez faible. Je n'ai jamais rencontré de cas où j'ai appris quelque chose d'un LLM qui s'est avéré fondamentalement erroné ou halluciné."

Elles sont nombreuses, et on peut les constater :
- en générant des images à partir d'un texte descriptif. Ainsi on voit des sujets sans jambes, des femmes avec oreilles de cheval etc ...
- en enquêtant sur le contenu généré, dont la qualité est très variable

Le problème des IA est qu'elles sont basées sur des données d'apprentissage, qui montrent certes le réel, mais ne peuvent imaginer ce qui ne peut exister. Donc la génération de contenus aboutit souvent à des résultats irréels.

Chaque ia a bénéficié d'un apprentissage, chaque ia a donc une personnalité, distincte des autres si la base d'apprentissage est distincte. On apprend ce qui existe, mais pas ce qui ne peut exister. Donc il y a de très nombreuses hallucinations, c'est à dire des réalités générées qui ne peuvent en fait exister dans le monde réel. Avec ces réserves, une IA vous assiste très bien pour résumer un texte, traduire dans une autre langue... Et toujours, la qualité de la réponse dépend de la qualité des questions et de la progression du dialogue.

Pour Microsoft, l'IA collecte l'historique des questions posées , ce qui permet d'orienter les nouvelles données d'apprentissage. L'IA évolue tous les jours (copilot...)

Bref, l'IA est un outil dont l'imagination peut déborder et effectivement, les IA peuvent avoir un comportement censuré (Deepseek ...) ce qui pose des questions d'éthique, de souveraineté et à terme de domination culturelle.
0  0 
Avatar de gerard093
Membre actif https://www.developpez.com
Le 11/06/2025 à 13:01
Citation Envoyé par Sean Goedecke Voir le message
Comment j'utilise les LLM en tant qu'ingénieur logiciel, par sean goedecke

Qu'en est-il des hallucinations ? Honnêtement, depuis GPT-3.5, je n'ai pas remarqué que ChatGPT ou Claude faisait beaucoup d'hallucinations. La plupart des domaines que j'essaie d'étudier sont très bien compris (mais pas par moi) et, d'après mon expérience, cela signifie que le risque d'hallucination est assez faible. Je n'ai jamais rencontré de cas où j'ai appris quelque chose d'un LLM qui s'est avéré fondamentalement erroné ou halluciné.
Les IA produisent des hallucinations à partir du moment où on leur demande d'imaginer quelque chose (une photo de jeune fille avec un cheval, une lettre de motivation ...) En effet, on peut aisément former une ia en lui montrant le réel, mais il est difficile d'enseigner à l'IA ce qui ne peut exister, compte tenu des possibilités infinies des mondes surréalistes.

La production d'une IA doit donc toujours être contrôlée.
0  0 
Avatar de Michka1111
Nouveau membre du Club https://www.developpez.com
Le 12/06/2025 à 14:47
Ce point de vue me parait tout-à-fait crédible et tout-à-fait pertinent.
Un assistant, fût-il un LLM, reste un assistant.
Voici mes cas d'usage en matière de développement.
  • Assistant méthodologique pour le workflow du développement (VSCode, debug/TU, unittest / pytest, TDD)
  • Assistant de conception pour les choix de structure du code (listes des meilleures pratiques, avantages / inconvénients, aide au choix), y compris les méthodes et pratiques inconnues de moi.
  • (expérimentation en cours) Génération d'un prompt pour analyser une page web (de résultats sportifs) et en extraire des données au format CSV.
  • Génération de code syntaxiquement correct sur la base de mes spécifications détaillées
  • Ajout automatique des Docstrings Python au code généré (fichier / classe / méthodes)
  • Revue de Code (avant et après modifs) sévères mais très constructives
  • Debug (avec message d'erreur ou sur description factuelle de l'incident)

L'assistance méthodologique déborde parfois sur des considérations philosophiques, ce qui ouvre le débat et permet d'approfondir. Une remarque ici, puisque le LLM ne fait QUE du bachotage, il énumère des pours et des contres, donne des recommandations sur la base de son référentiel, mais le LLM n'a pas d'avis "à lui". Je rejoins là un article qui disait que les IA ne sont pas "conscientes". Tout ce qu'elles disent provient de leur apprentissage, exclusivement et uniquement.

Le debug sur description factuelle de l'incident m'a épaté plus d'une fois. J'ai d'abord demandé une expression régulière pour des chemins de fichiers dont les noms commencent exclusivement par une majuscule ou un chiffre, et se terminent une extension .mp4, .webm, .mkv ou .mov.

16. Le fichier suivant '🏈2024-WK02-Tampa Bay Buccaneers vs. Detroit Lions Full Game | NFL 2024 Season Week 2 [Xv4-lEDPbJA].mp4' a été inclus par l'expression régulière de la commande find alors qu'il ne correspond pas. Il ne commence pas par [A-Z0-9]. Je voulais que ce fichier ne soit pas traité par ffmpeg.
Pour que le fichier **ne soit pas inclus** (car il commence par un caractère spécial, ici `🏈`), il faut corriger la regex pour que **le premier caractère du nom de fichier** (après le dernier `/`) soit bien `[A-Z0-9]` et non n'importe où dans le nom.
Actuellement, ta regex :
Code : Sélectionner tout
1
2
bash
.*/[A-Z0-9].*\.(mp4|mkv|mov|webm)
accepte n'importe quel fichier dont **au moins un caractère** du nom est `[A-Z0-9]`, même si ce n'est pas le premier.
### Correction
Utilise :
Code : Sélectionner tout
1
2
bash
.*/[A-Z0-9][^/]*\.(mp4|mkv|mov|webm)
- [A-Z0-9] : le premier caractère du nom de fichier (après le dernier `/`) doit être une majuscule ou un chiffre.
- [^/]* : n'importe quels caractères sauf `/` (le reste du nom).
- \.(mp4|mkv|mov|webm) : extensions autorisées.
### Ligne à modifier
Code : Sélectionner tout
1
2
3
4
5
bash
mapfile -t FILES < <(find "$INPUT_DIR" -maxdepth 1 -type f \ 
                                    -regextype posix-egrep \
                                    -iregex ".*/[A-Z0-9][^/]*\.(mp4|mkv|mov|webm)" \
                              | head -n $NUM_FILES)
Avec cette regex, seuls les fichiers dont le nom commence par une lettre majuscule ou un chiffre seront traités.
Le fichier `
Code : Sélectionner tout
🏈2024-WK02-Tampa Bay Buccaneers vs. Detroit Lions Full Game | NFL 2024 Season Week 2 [Xv4-lEDPbJA].mp4
` sera donc ignoré.
Et avec la ligne à modifier dans la réponse, VSCode propose une icône "Appliquer au fichier en cours d'édition" où j'accèpte ou refuse la modification présentée sous forme de "diff".

Concernant les hallucinations, les LLM parfois s'entêtent sur des réponses non-réelles. J'ai eu l'exemple typique avec un ancien Bing Copilot (ancien car il est perfectionné en continu). L'exemple typique est l'invention des textes de lois que l'avocat avait repris sans les vérifier. Je pense que ceci provient de failles dans l'algorithme de compilation des résultats des requêtes sur les référentiels et de mise en forme des réponses. Ceci est également perfectible, et effectivement perfectionné avec le temps.
L'entêtement provient de la censure de l'apprentissage (par exemple, les réponses de Copilot sont orientés vers l'écosystème M$).
Une autre origine de ces hallucinations est l'interprétation des prompts, prompts qui sont (ô combien) perfectibles et qui demandent une chose à la place d'une autre. Et là, difficile de faire autre chose que de reformuler le prompt, en toute humilité, en changeant des mots, en précisant un contexte et surtout les attentes.
0  0 
Avatar de Michka1111
Nouveau membre du Club https://www.developpez.com
Le 12/06/2025 à 15:39
Citation Envoyé par RenarddeFeu Voir le message
Le jour où les LLM tourneront en local avec des licences permissives, peut-être me résoudrais-je à les utiliser. En attendant, il est hors de question que je pollue mon workflow et me retrouve potentiellement à la merci de sociétés prédatrices basées dans la Silicone Valley.
Perso, j'utilise les LLMs en local sur mon ordi portable W10, sans aucune connexion Internet, hormis celle nécessaire pour initialement télécharger les conteneurs des LLM souhaités.
Le tout est d'avoir suffisamment de mémoire RAM pour charger les LLMs voulus, et d'avoir un minimum de patience lorsqu'il cogite la réponse (fonction des performances du matériel).

La stack pour ce faire est : VSCode + Continue connecté sur Ollama Serveur avec les LLM Llama 3.1 8B, Llama 3.2 3B, DeepSeek-coder-v2 16B.
Ma config est un portable Ryzen 2500U + 20GB RAM + GPU Vega 8. Mais le GPU n'est jamais utilisé par Ollama, juste pour des décodages Vidéo, même pendant les Requêtes Ollama, qui prennent plusieurs minutes, et qui utilisent (de mémoire) 4 cores sur les 8 du Ryzen 2500U.

Ollama offre toute sorte de LLM, Open Source ou payants, et plusieurs taille pour chacun des LLM.
Ollama peur être installé sur un serveur local ou une Workstation, accessible ensuite sur tout réseau local, sans Internet.
Pour les gros LLM, j'ai vu passer une config avec 8 GPU 32GB ou 64GB VRAM, de mes souvenirs.
Mais avec ma config, je suis bien content de faire tourner les LLM 16B, et peut-être davantage, l'usage RAM de Ollama s'améliorant au fil des mises à jour.
Note que c'est Ollama qui décide (sauf config) d'utiliser le CPU ou le GPU (ou quels GPU(s)). Avec mon matos, il trouve le mode CPU le plus performant. Je préfère le laisser choisir, car mon matos est faible et je suis le seul utilisateur, et je peux utiliser le portable à autre chose (VLC par exemple) pendant que les requêtes moulinent.

Étant donné que, faute de budget, je n'ai pas de licence à payer pour cette stack, je m'estime à l'abris des "sociétés prédatrices de la Silicon Valley", et avec le gain de productivité que cela m'apporte, je n'ai aucun scrupule à "polluer mon workflow", qui plus est, dans la joie et la bon humeur, de mise avec les assistants IA.
Évidemment, je me cantonne à des LLM gratuits. Il y en a tellement (des centaines au catalogue, censurés ou non-censurés) que j'ai adopté les premiers trouvés, "pour voir", et n'en essaye pas d'autres pour l'instant étant donné les résultats obtenus (et les gains de productivité), mais cela viendra assurément.
;-*
0  0