Copilot c’est bien (à condition de conduire en ligne droite)
Et de lui mettre un peu de T@lc sur les fs
Le 27 novembre à 11h45
9 min
IA et algorithmes
IA
Il n’y a pas si longtemps, il fallait impérativement avoir du cloud pour vendre sa solution. Ensuite ce fut le tour de la blockchain, et maintenant voilà le tour de l’intelligence artificielle, ou IA*. Github propose une aide au développement pour la somme modique de 10 euros par mois, avec le premier mois gratuit, ce dont nous allons profiter et vous en faire profiter.
Installons notre copilote
Nous aurions voulu passer les menus détails d’obligation de saisir une carte bancaire, mais quand même : première carte refusée après avoir validé la transaction d’enregistrement (une simple demande d’autorisation sans débit) sur l'appli bancaire adéquate.
Par chance, nous disposions d’une deuxième carte. Résultat : négatif. Ne nous énervons pas et contactons le support. La réponse reçue était un extrait de la FAQ sur le sujet, donc aucun intérêt. Finalement la première carte finira par marcher sans que nous comprenions pourquoi (et sans avoir rien fait). Ça commence bien.
Le contexte de notre programme
Pour évaluer correctement les possibilités de l’outil, nous sommes partis sur une idée de programme un peu complexe : réaliser un inventaire des ressources détenues sur un compte AWS, c’est-à-dire lister les instances EC2, les buckets S3 et surtout l’ensemble de ce qui est souscrit à un moment donné, dans toutes les régions, ce qui peut être utile pour mieux gérer son budget.
Il reste 87% de l'article à découvrir.
Déjà abonné ? Se connecter
Soutenez un journalisme indépendant,
libre de ton, sans pub et sans reproche.
Accédez en illimité aux articles
Profitez d'un média expert et unique
Intégrez la communauté et prenez part aux débats
Partagez des articles premium à vos contacts
Abonnez-vousCopilot c’est bien (à condition de conduire en ligne droite)
-
Installons notre copilote
-
Le contexte de notre programme
-
Demandons quelque chose de simple
-
On tourne parfois en rond
-
Le bon et le moins bon
-
Traduction en go : bonnet blanc et blanc bonnet
-
Quelques mots
Commentaires (18)
Vous devez être abonné pour pouvoir commenter.
Déjà abonné ? Se connecter
Abonnez-vousLe 27/11/2024 à 11h58
Le 28/11/2024 à 03h54
ça les vaut largement, croyez moi.
Le 27/11/2024 à 12h46
Le 27/11/2024 à 12h53
Quand j'avais expérimenté GitHub Copilot + Chat l'année dernière, j'étais arrivé à la conclusion que l'outil ne sert à rien si l'utilisateur ne sait pas ce qu'il fait. J'avais volontairement utilisé un projet en Javascript (je n'y connais rien dans ce langage), l'outil pissait du code, ça marchait, mais dès qu'il fallait creuser c'était foutu.
Sur le point du contexte, mon test n'avait été fait que via VSCode. Quand je faisais un RAZ de celui-ci, Copilot Chat repartait de zéro. Et c'était très relou car il s'était mis à réécrire toutes les variables.
À l'inverse, sur un langage que je connais mieux comme Python, c'était un bon assistant parce que je savais quoi demander et je pouvais corriger ses petites erreurs.
Le 27/11/2024 à 13h43
Quand je me suis lancé dans le développement de mon extension en js, j'ai adoré travailler avec Copilot : un moteur de recherche rapide et circonstancié, mais sans vision globale.
Du coup je l'utilise surtout pour les grandes lignes de chaque fonction, debuguer et affiner les détails, mais pas pour l'architecture globale.
Jamais je n'aurai pu avancer autant sans ça 😳
Modifié le 27/11/2024 à 14h12
Il y a quelques années c'était impensable.
Copilot est le moins bon des assistants de programmation de mon expérience. Il sort rarement qqchose d'utile, il ne propose fréquemment aucune complétion même quand la suite est évidente (ça fait perdre du temps à attendre la complétion qui n'arrive pas) etc. En passant en mode conversation on repère vite qu'il est surtout optimisé pour réduire les couts.
J'ai de meilleurs résultats avec Gemini, même si ça n'est pas encore au niveau de ce que ça pourrait être à mon avis, même en restant avec une architecture de type LLM.
Sinon, Claude 3.5 (https://claude.ai/) de Anthropic est impressionnant, avec un niveau d'intelligence comparable à o1 (le dernier de OpenIA) mais en plus rapide. On peut facilement le configurer comme assistant dans vscode.
Claude est le seul assistant à m'avoir généré le code d'un petit jeu fonctionnel dès le premier essai à partir d'une simple description.
Les autres sortent un code vaguement crédible mais qui ne fonctionne pas du premier coup.
Le 27/11/2024 à 14h21
Pensant déjà à celui qui va lire mon code (CàD, le moi du futur principalement), j'a tendance à expliquer ce que je fais en commentaire. Cette façon de faire fonctionne bien avec Copilot, qui "sait" ce que je veux faire et va me proposer une première solution. Généralement, je n'ai rien à changer. Souvent il manque des trucs, j'accepte une partie du code (avec ctrl+flèche droite), je corrige, et me repropose une nouvelle suite en tenant compte des modifications. D'autre fois, mon commentaire est ambigu, et la réponse est totalement à côté de la plaque, c'est finalement une bonne idée de modifier le commentaire (le moi du futur est surement quelqu'un de très con, si Copilot n'a pas compris, il ne comprendra surement pas). Autre point, c'est que maintenant, écrire la documentation d'une fonction est vraiment utile, si c'est assez bien écrit, il va écrire un code qui sera une bonne base (et en plus, il t'aide à rédiger la doc).
Mais de manière générale, sans même avoir à écrire des commentaires sur ce que l'on veut faire, Copilot va très vite déduire ce que tu cherches à faire (si tu ne nommes pas toutes tes fonctions et variables avec des "foo", "bar" "toto", "titi", "tata"...) et va essayer de proposer les prochaines lignes de code qui ne tombent généralement pas bien loin de ce que tu allais écrire.
De plus, il est bon pour découvrir des sortes de motifs, et va vite proposer l'autocomplétion pour des codes chiants et rébarbatifs.
Il n'est pas sans défaut, et parfois il se borne à écrire ce qu'il a choisi d'écrire.
Le 27/11/2024 à 14h22
Je l'utilise avec PHPStorm (pour le PHP et pour le Bash)
Franchement je pourrais difficilement me passer de Copilot maintenant que j'y suis habitué. Je produit beaucoup plus vite.
Bien sur ce n'est pas parfait mais l’augmentation de la productivité est bien là.
En bonus il me sort parfois une méthode / fonction etc. à laquelle je n'aurai pas pensé et ça c'est vraiment chouette car du coup j'ai l'impression de m'améliorer.
J'utilise depuis peu le Chat pour lui poser des questions plus généraliste et clairement le gain de temps est également sensible par rapport à d'interminable recherche Gogole.
Modifié le 27/11/2024 à 15h59
Son plus gros défaut c'est de ne pas savoir s'adapter même quand on lui donne des documentations à jour :
- Il remplace systématiquement les @if par *ngIf en expliquant que le problème est là.
- Il ne sait pas que les composants sont maintenant standalone par défaut et du coup les déclare au lieu des les importer.
- Il met des virgules à la fin des lignes même si inutile (syntaxe dégueux des dev javascript !).
- Impossible d'avoir de l'aide sur des fonctionnalités récentes comme ZoneLess, les signaux ou OnPush en Angular. Là je galère à passer à Jest car je dois le basculer en mode ESM et Copilot ne connait que les syntaxes obsolètes.
- En Python, il reste un adepte du dict alors que c'est obsolète depuis longtemps déjà.
Son second plus gros défaut c'est cette tendance à s'enfermer dans une solution fausse sans jamais sans sortir, à pondre du code 100% identique alors même qu'il dit qu'il a modifié des choses.
D'ailleurs de ce côté là, la nouvelle fonction d'écriture directe dans le code existant permet très vite de savoir s'il fait le con. Juste dommage qu'il ne puisse trouver tout seul les fichiers qui lui manque quand il en a besoin alors qu'ils sont importés dans le code, et qu'en plus, il réécrive tout le code de chaque fichier modifié au lieu de seulement là où c'est nécessaire.
Bref, il peut beaucoup aider comme parfois faire perdre un temps fou avec des envies de lui foutre des baffes !
Le 27/11/2024 à 15h55
Le 27/11/2024 à 15h58
Et comme il a été dit, il semblerait que ça ne purge pas tout.
Le 27/11/2024 à 16h08
Après, l'article ne donne pas les conditions du test.
Modifié le 27/11/2024 à 17h24
Le clear démarre bien une nouvelle conversation, mais j'ai remarqué à plusieurs reprises que cela n'effaçait pas tout : Copilot reprenait parfois (rarement, soyons honnête) des consignes issues de prompts précédents qu'il a fallu que j'annule par prompt. Cette notion de contexte est très complexe à gérer ; c'est déjà difficile pour un humain, alors pour une IA... Le contexte est crucial et pourtant il est difficile à établir et à maintenir.
C'est probablement le talon (ou un des talons) d'Achille de ces systèmes, car pour être efficace il ne faut pas aller trop en profondeur, alors qu'on aimerait au contraire que ces systèmes aient suffisamment de repères pour nous être vraiment utiles.
Le 28/11/2024 à 08h23
L'intégration dans Visual Code et Codespace doit donc être assez différente... Après je n'ai pas utilisé GitHub Copilot depuis un bail. C'est assez surprenant, car le contexte est censé repartir du system prompt et des exemples permettant au modèle de s'orienter. Ou alors il "retrouve" le fil en faisant du RAG sur le code, c'est une possibilité je pense.
Le soucis pour aller en profondeur, c'est qu'il lui faut plus de données. Et donc traiter un plus gros contexte. Quand je vois ce que GitHub Copilot pouvait cracher comme réponse avec le code en input, c'était déjà de belles tailles. Je ne sais pas sur quel modèle il tourne aujourd'hui, probablement un GPT-4o aussi qui supporte 128k tokens en entrée et peut sortir quelques 16k en sortie de mémoire. L'autre risque avec un contexte trop riche, c'est que le modèle finisse par partir en vrille. C'était, à l'époque où j'ai suivi de plus près ces sujets, une des raisons que Microsoft avançait pour la limitation du nombre de questions/réponses sur ses outils (l'autre restant forcément financière, ça coûte). Ça reste des modèles statistique, après tout.
Le 28/11/2024 à 09h27
GPT 4o
o1-mini
o1-preview
Claude 3.5 Sonnet
Le 28/11/2024 à 09h35
Le 29/11/2024 à 11h46
Une fois, il est totalement parti en boucle, il a fini par me sortir des recettes de cuisine sans fin (euh, je lui demandais de commenter du code).
Au final, j'ai un LMstudio + Llama 3B à côté, j'ai des bugs moins "dramatique" (surtout au vu du coût).
Le 29/11/2024 à 15h11